使用AVSpeechSynthesizer朗读文字

来源:互联网 发布:mac docker 镜像位置 编辑:程序博客网 时间:2024/06/02 22:44

使用苹果提供的语音合成器,可以通过简单的代码做到朗读文本。

#import <AVFoundation/AVFoundation.h>    // 创建嗓音,指定嗓音不存在则返回nilAVSpeechSynthesisVoice *voice = [AVSpeechSynthesisVoice voiceWithLanguage:@"zh-CN"];    // 创建语音合成器AVSpeechSynthesizer *synthesizer = [[AVSpeechSynthesizer alloc] init];    // 实例化发声的对象AVSpeechUtterance *utterance = [AVSpeechUtterance speechUtteranceWithString:@"跑步完成"];utterance.voice = voice;utterance.rate = 0.5;<span style="white-space:pre"></span>// 语速    // 朗读的内容[synthesizer speakUtterance:utterance];


所有的嗓音如下:

"[AVSpeechSynthesisVoice 0x978a0b0] Language: th-TH", "[AVSpeechSynthesisVoice 0x977a450] Language: pt-BR", "[AVSpeechSynthesisVoice 0x977a480] Language: sk-SK","[AVSpeechSynthesisVoice 0x978ad50] Language: fr-CA", "[AVSpeechSynthesisVoice 0x978ada0] Language: ro-RO", "[AVSpeechSynthesisVoice 0x97823f0] Language: no-NO","[AVSpeechSynthesisVoice 0x978e7b0] Language: fi-FI", "[AVSpeechSynthesisVoice 0x978af50] Language: pl-PL", "[AVSpeechSynthesisVoice 0x978afa0] Language: de-DE", "[AVSpeechSynthesisVoice 0x978e390] Language: nl-NL", "[AVSpeechSynthesisVoice 0x978b030] Language: id-ID", "[AVSpeechSynthesisVoice 0x978b080] Language: tr-TR", "[AVSpeechSynthesisVoice 0x978b0d0] Language: it-IT", "[AVSpeechSynthesisVoice 0x978b120] Language: pt-PT","[AVSpeechSynthesisVoice 0x978b170] Language: fr-FR","[AVSpeechSynthesisVoice 0x978b1c0] Language: ru-RU", "[AVSpeechSynthesisVoice 0x978b210] Language: es-MX", "[AVSpeechSynthesisVoice 0x978b2d0] Language: zh-HK",  中文(香港) 粤语"[AVSpeechSynthesisVoice 0x978b320] Language: sv-SE", "[AVSpeechSynthesisVoice 0x978b010] Language: hu-HU","[AVSpeechSynthesisVoice 0x978b440] Language: zh-TW",  中文(台湾)"[AVSpeechSynthesisVoice 0x978b490] Language: es-ES","[AVSpeechSynthesisVoice 0x978b4e0] Language: zh-CN",  中文(普通话)"[AVSpeechSynthesisVoice 0x978b530] Language: nl-BE", "[AVSpeechSynthesisVoice 0x978b580] Language: en-GB",  英语(英国)"[AVSpeechSynthesisVoice 0x978b5d0] Language: ar-SA", "[AVSpeechSynthesisVoice 0x978b620] Language: ko-KR","[AVSpeechSynthesisVoice 0x978b670] Language: cs-CZ","[AVSpeechSynthesisVoice 0x978b6c0] Language: en-ZA", "[AVSpeechSynthesisVoice 0x978aed0] Language: en-AU","[AVSpeechSynthesisVoice 0x978af20] Language: da-DK","[AVSpeechSynthesisVoice 0x978b810] Language: en-US",  英语(美国)"[AVSpeechSynthesisVoice 0x978b860] Language: en-IE","[AVSpeechSynthesisVoice 0x978b8b0] Language: hi-IN", "[AVSpeechSynthesisVoice 0x978b900] Language: el-GR","[AVSpeechSynthesisVoice 0x978b950] Language: ja-JP" )


在xCode7,iOS9,iPhone5的环境下,以台湾音为例
<pre name="code" class="objc">AVSpeechSynthesisVoice *voice = [AVSpeechSynthesisVoice voiceWithLanguage:@"<span style="font-family: Arial, Helvetica, sans-serif;">zh-TW</span><span style="font-family: Arial, Helvetica, sans-serif;">"];</span>

这条语句会产生如下警告:

|AXSpeechAssetDownloader|error| ASAssetQuery error fetching results (for com.apple.MobileAsset.MacinTalkVoiceAssets) Error Domain=ASError Code=21 "Unable to copy asset information" UserInfo={NSDescription=Unable to copy asset information}

在stackoverflow中查找相关问题,只能得到部分解决方法:

进入iPhone的 设置 > 通用 > 辅助功能 > 语音,开启“朗读所选项”,并在“嗓音”中选择“中文(台湾)”

但是,对于将要申请上架的app,这并不是一个好的解决方法,除非你的app能够自动下载该嗓音资源。

结论:暂时无法处理此警告,如果哪位前辈知道解决方法,请告诉我,谢谢。

1 0
原创粉丝点击