世界總是因為懶人才開始變得越來越智能批钠,看書、讀報等諸如此類的事情怠苔,本身就是一個很放松的事情了同廉,某一天懶人想用耳朵來完成看書、讀報的事情柑司,也就是將書和報紙的內(nèi)容通過語音播放出來迫肖,文本轉語音(Text to Speech以下簡稱TTS)的需求大概就是從此處開始的。后來去新公司上班時攒驰,也遇到了此類的需求延伸蟆湖,大概需求內(nèi)容是:當有新的訂單時,需要使用語音播報新訂單的內(nèi)容玻粪。由此下面來記錄下TTS的功能使用隅津。
iOS平臺在iOS7.0之前不支持TTS功能,如果開發(fā)者想使自己的App具有TTS功能劲室,可配置工程最低支持版本為iOS7.0或更高的系統(tǒng)版本伦仍。如果需要兼容iOS7.0以下的版本,則可使用好用的第三方TTS庫很洋。
目前支持iOS平臺的TTS有以下幾個
1.Google的在線語音合成服務
2.iOS7及其以上的系統(tǒng)自帶的TTS功能(條件)
一充蓝、Google的在線語音合成服務
請求接口地址:http://translate.google.com/translate_tts
請求接口參數(shù):
Item | Value |
---|---|
tl | 語言碼(例如:en、zh) |
q | 需要播報的內(nèi)容 |
例子:按要求拼接請求地址
http://translate.google.com/translate_tts?tl=en&q=English
訪問該地址就能獲取到一個mp3格式的文件喉磁,得到mp3文件后并在本地進行播放就達到了TTS的功能要求了谓苟。
總結:如果App中需要的是固定的語音播報,使用google的這個在線服務是個不錯的選擇协怒,只需要一次請求涝焙,將返回的mp3保存在本地,以后直接讀取本地mp3即可斤讥。但是大部分場景都是需要轉換為語音的文本不固定纱皆,我們就只能選擇別的辦法了湾趾。
二芭商、iOS7及其以上的系統(tǒng)自帶的TTS功能
iOS7及其以上的系統(tǒng)自帶TTS很簡單派草,不用設置任何權限,也沒有一大堆代碼铛楣。
具體步驟:
第一步:在工程中導入AVFoundation.Framework框架
第二步:添加調用TTS功能的代碼
源代碼塊:
/**
系統(tǒng)支持的語言及其語言碼(language)
"th-TH":[], "pt-BR":[], "sk-SK":[], "fr-CA":[],
"ro-RO":[], "no-NO":[], "fi-FI":[], "pl-PL":[],
"de-DE":[], "nl-NL":[], "id-ID":[印尼語], "tr-TR":[],
"it-IT":[], "pt-PT":[], "fr-FR":[], "ru-RU":[],
"es-MX":[], "zh-HK":[中文香港], "sv-SE":[], "hu-HU":[],
"zh-TW":[中文臺灣], "es-ES":[], "zh-CN":[中文大陸], "nl-BE":[],
"en-GB":[英語國標], "ar-SA":[], "ko-KR":[], "cs-CZ":[],
"en-ZA":[], "en-AU":[], "da-DK":[], "en-US":[英語美國],
"en-IE":[], "hi-IN":[], "el-GR":[], "ja-JP":[]
**/
AVSpeechUtterance *utterance = nil;
AVSpeechSynthesizer *speech = [[AVSpeechSynthesizer alloc] init];
utterance = [[AVSpeechUtterance alloc] initWithString:@"這只是簡單使用文本轉語音功能"];
utterance.voice = [AVSpeechSynthesisVoice voiceWithLanguage:@"en-US"];
utterance.rate = AVSpeechUtteranceDefaultSpeechRate; //設置語速
utterance.volume = 1.0f; //設置音量
utterance.pitchMultiplier = 1.0f; //設置語調
[speech speakUtterance:utterance];
雖然在語速近迁、停頓上效果都很生硬,但對于使用簡單的語音播報需求來說簸州,真是一大幸事鉴竭,無需第三方庫就完成了,也不需要聯(lián)網(wǎng)岸浑,語音合成功能在手機上完成搏存,這樣在沒有wifi與流量的情況下也可以使用了。
三矢洲、后續(xù)追加的其他TTS庫使用
第一個:OpenEars和FliteTTS服務
OpenEars和FliteTTS璧眠。OpenEars是開源的iOS庫,支持離線的語音識別和TTS读虏,但它主要是針對英語责静。而FliteTTS比較小巧,也不支持中文盖桥。
第二個:科大訊飛語音以及百度語音
暫時還沒使用過灾螃,如果哪位同學使用過,也可以分享下揩徊。