import AVFoundation 播放语音 //播放器 let player = AVSpeechSynthesizer(); player.delegate = self; let u = AVSpeechUtterance //开始播放 func speechSynthesizer(synthesizer: AVSpeechSynthesizer, didStartSpeechUtterance utterance: AVSpeechUtterance (synthesizer: AVSpeechSynthesizer, willSpeakRangeOfSpeechString characterRange: NSRange, utterance: AVSpeechUtterance //播放完毕 func speechSynthesizer(synthesizer: AVSpeechSynthesizer, didFinishSpeechUtterance utterance: AVSpeechUtterance
ateq (仅供学习使用) AVFoundation 相关知识 涉及类: AVSpeechSynthesizer: 这是语音播放的关键API类,相当于一个发声器,他可以播放一条一条AVSpeechUtterance AVSpeechUtterance: 这个类主要是一条一条话语,这些话语对象可以填充文本,语言,语速,音高等等, AVSpeechSynthesisVoice: 语言设置,如中文,英文等等 pageStrings = _UtteranceTextArray[page-1]; for (NSUInteger i = 0; i < pageStrings.count; i++) { AVSpeechUtterance *utterance = [[AVSpeechUtterance alloc] initWithString:pageStrings[i]]; utterance.voice self.page]; } -(void)speechSynthesizer:(AVSpeechSynthesizer *)synthesizer didStartSpeechUtterance:(AVSpeechUtterance
当你制作自己的有声书时, 你将学习到: 怎样使用 AVSpeechSynthesizer 和 AVSpeechUtterance 让 iOS 设备朗读文本 How to make this synthesized speech sound more natural by modifying AVSpeechUtterance properties like pitch and rate. 怎样改动 AVSpeechUtterance 属性比如 pitch 和 rate,使合成的语音更自然 AVSpeechSynthesizer当然比不上真人语音。 而 AVSpeechUtterance 则能够想象成一张小纸条。把纸条递给这个人,则他就会念出纸条上的字。 注意:一个 AVSpeechUtterance 可能是一个单词,比方“Whisky”,或者是一个完整的语句,比方“Whisky,frisky,hippidityhop”。
AVSpeechSynthesizer 开发者可以使用AVFoundation中的AVSpeechSynthesizer类向iOS应用程序中添加类似功能,这个类用来播放一个或多个语音内容,这些语音内容都是名为AVSpeechUtterance 具体的实现代码如下所示: let synthesizer = AVSpeechSynthesizer() synthesizer.speak(AVSpeechUtterance(string: "Hello AVSpeechUtterance 如果我们想定义声音的语速和语种那么我们就需要用AVSpeechUtterance类来设置一下自定义的属性 let synthesizer = AVSpeechSynthesizer () //如果播放语音内容 需要用到 AVSpeechUtterance 类 let utterance = AVSpeechUtterance(string: "Hello AV Foundation 1.0 //让语音合成器在播放下一语句之前有短暂时间暂停 utterance.postUtteranceDelay = 0.5 //播放 synthesizer.speak(utterance) 强调一下AVSpeechUtterance
用到的技术点: 1.如果对语音要求不是特别高的情况下,用苹果系统自带的AVSpeechUtterance可以实现,也可以用讯飞的sdk。 withCompletionHandler:(void (^)(UNNotificationPresentationOptions))completionHandler(前台收到通知的代理方法)中写语音播报的方法 AVSpeechUtterance *utterance = [AVSpeechUtterance speechUtteranceWithString:alterText]; // utterance.voice
voiceWithLanguage:@"zh-cn"]]; for (int i = 0; i < speechStrings.count; i ++) { AVSpeechUtterance *utterance = [[AVSpeechUtterance alloc] initWithString:speechStrings[i]]; utterance.voice
newResult = [newResult stringByAppendingString:@" "]; } } // Todo: 英文转语音 AVSpeechUtterance *utterance = [AVSpeechUtterance speechUtteranceWithString:newResult]; utterance.rate = AVSpeechUtteranceDefaultSpeechRate speechSynthesisVoice; } - (void)speechSynthesizer:(AVSpeechSynthesizer *)synthesizer didStartSpeechUtterance:(AVSpeechUtterance didStartSpeechUtterance"); } - (void)speechSynthesizer:(AVSpeechSynthesizer *)synthesizer didCancelSpeechUtterance:(AVSpeechUtterance didCancelSpeechUtterance"); } - (void)speechSynthesizer:(AVSpeechSynthesizer *)synthesizer didPauseSpeechUtterance:(AVSpeechUtterance
; // 创建语音合成器 AVSpeechSynthesizer *synthesizer = [[AVSpeechSynthesizer alloc] init]; // 实例化发声的对象 AVSpeechUtterance *utterance = [AVSpeechUtterance speechUtteranceWithString:@"朗读完毕"]; utterance.voice = voice; utterance.rate
它可以很方便的在iOS应用中实现”将文本转换成语音”的功能,设计到AVSpeechSynthesisVoice、AVSpeechUtterance以及AVSpeechSynthesizer等重要概念,这块暂时涉及的比较少 AVSpeechSynthesizer() let voice = AVSpeechSynthesisVoice(language: "zh-CN") let utterance = AVSpeechUtterance
height + 1; return textHeight + minHeight - 10; } TTS let player = AVSpeechSynthesizer(); let u = AVSpeechUtterance
speechSynthesizer = AVSpeechSynthesizer() func speechAndText(text: String) { let speechUtterance = AVSpeechUtterance 在函数内部,我们创建一个AVSpeechUtterance的实例,最简单的说,它是一个将被宣读的文本块。
AVSpeechSynthesisVoice * voice = [AVSpeechSynthesisVoice voiceWithLanguage:@"zh-CN"]; AVSpeechUtterance * utterance = [[AVSpeechUtterance alloc]initWithString:@"准备了猪,开始录制视频了"]; utterance.rate =