iOS文字转语音(语音朗读)
1.第一步导入framework
2.导入头文件
#import <AVFoundation/AVSpeechSynthesis.h>
3. 设置代理 并写下面方法 (注:代理方法用不到可以不用 遵循代理 和代理方法)
//遵循代理 AVSpeechSynthesizerDelegate // 文本读语音方法 stra是要读的文本 - (void)boFangTextWithString:(NSString *)stra { //初始化语音合成器 _avSpeaker = [[AVSpeechSynthesizer alloc] init]; _avSpeaker.delegate = self; //初始化要说出的内容 AVSpeechUtterance *utterance = [[AVSpeechUtterance alloc] initWithString:stra]; //设置语速,语速介于AVSpeechUtteranceMaximumSpeechRate和AVSpeechUtteranceMinimumSpeechRate之间 //AVSpeechUtteranceMaximumSpeechRate //AVSpeechUtteranceMinimumSpeechRate //AVSpeechUtteranceDefaultSpeechRate utterance.rate = 0.5; //设置音高,[0.5 - 2] 默认 = 1 //AVSpeechUtteranceMaximumSpeechRate //AVSpeechUtteranceMinimumSpeechRate //AVSpeechUtteranceDefaultSpeechRate utterance.pitchMultiplier = 1; //设置音量,[0-1] 默认 = 1 utterance.volume = 1; //读一段前的停顿时间 utterance.preUtteranceDelay = 1; //读完一段后的停顿时间 utterance.postUtteranceDelay = 1; //设置声音,是AVSpeechSynthesisVoice对象 //AVSpeechSynthesisVoice定义了一系列的声音, 主要是不同的语言和地区. //voiceWithLanguage: 根据制定的语言, 获得一个声音. //speechVoices: 获得当前设备支持的声音 //currentLanguageCode: 获得当前声音的语言字符串, 比如”ZH-cn” //language: 获得当前的语言 //通过特定的语言获得声音 AVSpeechSynthesisVoice *voice = [AVSpeechSynthesisVoice voiceWithLanguage:@"zh-CN"]; //通过voicce标示获得声音 //AVSpeechSynthesisVoice *voice = [AVSpeechSynthesisVoice voiceWithIdentifier:AVSpeechSynthesisVoiceIdentifierAlex]; utterance.voice = voice; //开始朗读 [_avSpeaker speakUtterance:utterance]; } #pragma mark - AVSpeechSynthesizerDelegate //已经开始 - (void)speechSynthesizer:(AVSpeechSynthesizer *)synthesizer didStartSpeechUtterance:(AVSpeechUtterance *)utterance{ } //已经说完 - (void)speechSynthesizer:(AVSpeechSynthesizer *)synthesizer didFinishSpeechUtterance:(AVSpeechUtterance *)utterance{ //如果朗读要循环朗读,可以在这里再次调用朗读方法 //[_avSpeaker speakUtterance:utterance]; } //已经暂停 - (void)speechSynthesizer:(AVSpeechSynthesizer *)synthesizer didPauseSpeechUtterance:(AVSpeechUtterance *)utterance{ } //已经继续说话 - (void)speechSynthesizer:(AVSpeechSynthesizer *)synthesizer didContinueSpeechUtterance:(AVSpeechUtterance *)utterance{ } //已经取消说话 - (void)speechSynthesizer:(AVSpeechSynthesizer *)synthesizer didCancelSpeechUtterance:(AVSpeechUtterance *)utterance{ } //将要说某段话 - (void)speechSynthesizer:(AVSpeechSynthesizer *)synthesizer willSpeakRangeOfSpeechString:(NSRange)characterRange utterance:(AVSpeechUtterance *)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"