iOS上是否支持WAV文件?

时间:2016-06-30 15:59:14

标签: ios wav

我有一个可以在浏览器中播放的wav文件:

https://d5e5ca34-f670-4a7f-98c7-1643d83ecc1d:N8UAQQPXw10Z@stream.watsonplatform.net/text-to-speech/api/v1/synthesize?accept=audio/wav&voice=en-US_MichaelVoice&text=Hello%20world

但是,它不能在我的模拟器上播放。 在iOS中支持wav文件是否有一些限制?

  NSString *urlString = @"https://d5e5ca34-f670-4a7f-98c7-1643d83ecc1d:N8UAQQPXw10Z@stream.watsonplatform.net/text-to-speech/api/v1/synthesize?accept=audio/wav&voice=en-US_MichaelVoice&text=Hello%20world";
  NSURL *url = [NSURL URLWithString:urlString];
  NSData *audioData=[NSData dataWithContentsOfURL:url];

  NSError *error;
  self.player = [[AVAudioPlayer alloc] initWithData:audioData error:&error];
  [self.player setVolume:1.0];
  [self.player setDelegate:self];
  [self.player setNumberOfLoops:0];
  [self.player prepareToPlay];
  [self.player play];

2 个答案:

答案 0 :(得分:1)

您的wav音频文件有问题。它与Apple编解码器不兼容。我尝试了一个不同的在线wav文件,它工作正常。这是我的工作代码。 确保在info.plist文件中添加“应用传输安全设置”

在* .h

#import <UIKit/UIKit.h>
#include <AudioToolbox/AudioToolbox.h>
#import <AVFoundation/AVAudioPlayer.h>

@interface v1MyCustomAudioPlay : UIViewController <AVAudioPlayerDelegate>

@property (nonatomic, retain) AVAudioPlayer *myAudioPlayer1;

在* .m

@implementation v1MyCustomAudioPlay

@synthesize myAudioPlayer1;

-(IBAction)playAudio
{
    NSLog(@"playAudio ...");

    NSString *urlString = @"http://www-mmsp.ece.mcgill.ca/documents/audioformats/wave/Samples/AFsp/M1F1-Alaw-AFsp.wav";
    NSURL *fileURL = [NSURL URLWithString:urlString];

    NSData *soundData = [NSData dataWithContentsOfURL:fileURL];
    myAudioPlayer1 = [[AVAudioPlayer alloc] initWithData:soundData  error:NULL];
    myAudioPlayer1.delegate = self;
    [myAudioPlayer1 play];

}

-(void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag{
    [myAudioPlayer1 stop];
    NSLog(@"Finished Playing");
}

- (void)audioPlayerDecodeErrorDidOccur:(AVAudioPlayer *)player error:(NSError *)error
{
    NSLog(@"Error occurred");
}

答案 1 :(得分:0)

支持WAV。请在类似的问题中阅读答案: Supported Audio file formats in iPhone

关于你的代码,我不会使用NSData方法加载文件,而是使用更清晰的内容,如下面的答案所示:https://stackoverflow.com/a/14424418/883738

重点是

  

不建议使用dataWithContentsOfURL:因为它是同步的   并将阻止您的应用程序工作;如果服务器没有响应   它可以阻止你的应用很长一段时间。

希望这有帮助。

更新:在示例iOS项目中执行代码没有声音,所以问题仍未解决。

顺便说一句,如果你想使用语音合成器,你可以使用iOS内置的

NSString *string = @"Hello, World!";
AVSpeechUtterance *utterance = [[AVSpeechUtterance alloc] initWithString:string];
utterance.voice = [AVSpeechSynthesisVoice voiceWithLanguage:@"en-US"];

AVSpeechSynthesizer *synthesizer = [[AVSpeechSynthesizer alloc] init];
[synthesizer speakUtterance:utterance];