gpt4 book ai didi

ios - AVAudioPlayer无法播放声音

转载 作者:行者123 更新时间:2023-12-01 22:46:53 24 4
gpt4 key购买 nike

我正在使用Google Text To Speech API讲NSString,并且正在执行以下操作:

-(void) playSound {

[[AVAudioSession sharedInstance] setActive:YES error:nil];

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *path = [documentsDirectory stringByAppendingPathComponent:@"file.mp3"];
if ([[NSFileManager defaultManager] fileExistsAtPath:path]) {
NSLog(@"YES");
}

NSString *stringer = [NSString stringWithFormat:@"%@", URLArray[playerInt]];
NSLog(@"%i",playerInt);

NSURL *url = [NSURL URLWithString:[stringer stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
NSMutableURLRequest* request = [[NSMutableURLRequest alloc] initWithURL:url] ;
[request setValue:@"Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:2.0.1) Gecko/20100101 Firefox/4.0.1" forHTTPHeaderField:@"User-Agent"];
NSURLResponse* response = nil;
NSError* error = nil;
NSData* data = [NSURLConnection sendSynchronousRequest:request
returningResponse:&response
error:&error];
[data writeToFile:path atomically:YES];

player = [[AVAudioPlayer alloc] initWithContentsOfURL: [NSURL fileURLWithPath:path] error:nil];
player.delegate = self;
[player prepareToPlay];
[player play];

NSLog(@"%@", stringer);
}

- (void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)audioPlayer successfully:(BOOL)flag
{
[self playSound];
}

让我解释一下代码。我正在将其用作Google文本语音API: http://translate.google.com/translate_tts?&tl=en-US&ie=UTF-8&q=Hello

我需要讲大段段落,以便将它们分成 URLArray数组中的多个链接。然后,因为 URLArray是一个包含一堆链接的数组,所以我最初将 int playerInt = -1设置为(因为我们随后将playerInt + = 1设置为0)。因此,当第一个声音播放完毕后,它将重新启动它,并将 playerInt设置为一个更大的整数(即1),并说 URLArray[playerInt]成为第二个链接。

这有几个问题。首先,当我运行此命令时,音频甚至没有播放。其次,未调用audioPlayerDidFinishPlaying方法。

任何帮助表示赞赏。

最佳答案

您似乎在这里正确设置了所有内容,因此对于第一部分,我将检查是否这样做:

[[NSFileManager defaultManager] fileExistsAtPath:path]

返回 YES。在开始播放文件之前,它可能尚未完成文件的保存。或者,在最坏的情况下, sendSynchronousRequest可能需要更长的时间才能失败。

对于第二部分:
audioPlayerDidFinishPlaying没有被调用,因为您需要进行以下设置:
player.delegate = self;

希望这可以帮助。

关于ios - AVAudioPlayer无法播放声音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23319139/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com