iOS 語音朗讀

序:

iOS中語音朗讀是AVFoundation框架下面的功能,實現(xiàn)起來非常簡單

1.選一種朗讀的嗓音
2.生成要朗讀的表達
3.生成合成器開始朗讀

可以使用合成器的代理來監(jiān)控朗讀過程

一、嗓音

1.所有的嗓音

用下面這段代碼能夠獲取到iOS設(shè)備支持的所有的嗓音

NSArray *voices = [AVSpeechSynthesisVoice speechVoices];

結(jié)果如下:

Language: ar-SA, Name: Maged, Quality: Default [com.apple.ttsbundle.Maged-compact]
Language: cs-CZ, Name: Zuzana, Quality: Default [com.apple.ttsbundle.Zuzana-compact]
Language: da-DK, Name: Sara, Quality: Default [com.apple.ttsbundle.Sara-compact]
Language: de-DE, Name: Anna, Quality: Default [com.apple.ttsbundle.Anna-compact]
Language: de-DE, Name: Helena, Quality: Default [com.apple.ttsbundle.siri_female_de-DE_compact]
Language: de-DE, Name: Martin, Quality: Default [com.apple.ttsbundle.siri_male_de-DE_compact]
Language: el-GR, Name: Melina, Quality: Default [com.apple.ttsbundle.Melina-compact]
Language: en-AU, Name: Catherine, Quality: Default [com.apple.ttsbundle.siri_female_en-AU_compact]
Language: en-AU, Name: Gordon, Quality: Default [com.apple.ttsbundle.siri_male_en-AU_compact]
Language: en-AU, Name: Karen, Quality: Default [com.apple.ttsbundle.Karen-compact]
Language: en-GB, Name: Arthur, Quality: Default [com.apple.ttsbundle.siri_male_en-GB_compact]
Language: en-GB, Name: Daniel, Quality: Default [com.apple.ttsbundle.Daniel-compact]
Language: en-GB, Name: Martha, Quality: Default [com.apple.ttsbundle.siri_female_en-GB_compact]
Language: en-IE, Name: Moira, Quality: Default [com.apple.ttsbundle.Moira-compact]
Language: en-US, Name: Aaron, Quality: Default [com.apple.ttsbundle.siri_male_en-US_compact]
Language: en-US, Name: Fred, Quality: Default [com.apple.speech.synthesis.voice.Fred]
Language: en-US, Name: Nicky, Quality: Default [com.apple.ttsbundle.siri_female_en-US_compact]
Language: en-US, Name: Samantha, Quality: Default [com.apple.ttsbundle.Samantha-compact]
Language: en-ZA, Name: Tessa, Quality: Default [com.apple.ttsbundle.Tessa-compact]
Language: es-ES, Name: Monica, Quality: Default [com.apple.ttsbundle.Monica-compact]
Language: es-MX, Name: Paulina, Quality: Default [com.apple.ttsbundle.Paulina-compact]
Language: fi-FI, Name: Satu, Quality: Default [com.apple.ttsbundle.Satu-compact]
Language: fr-CA, Name: Amelie, Quality: Default [com.apple.ttsbundle.Amelie-compact]
Language: fr-FR, Name: Daniel, Quality: Default [com.apple.ttsbundle.siri_male_fr-FR_compact]
Language: fr-FR, Name: Marie, Quality: Default [com.apple.ttsbundle.siri_female_fr-FR_compact]
Language: fr-FR, Name: Thomas, Quality: Default [com.apple.ttsbundle.Thomas-compact]
Language: he-IL, Name: Carmit, Quality: Default [com.apple.ttsbundle.Carmit-compact]
Language: hi-IN, Name: Lekha, Quality: Default [com.apple.ttsbundle.Lekha-compact]
Language: hu-HU, Name: Mariska, Quality: Default [com.apple.ttsbundle.Mariska-compact]
Language: id-ID, Name: Damayanti, Quality: Default [com.apple.ttsbundle.Damayanti-compact]
Language: it-IT, Name: Alice, Quality: Default [com.apple.ttsbundle.Alice-compact]
Language: ja-JP, Name: Hattori, Quality: Default [com.apple.ttsbundle.siri_male_ja-JP_compact]
Language: ja-JP, Name: Kyoko, Quality: Default [com.apple.ttsbundle.Kyoko-compact]
Language: ja-JP, Name: O-ren, Quality: Default [com.apple.ttsbundle.siri_female_ja-JP_compact]
Language: ko-KR, Name: Yuna, Quality: Default [com.apple.ttsbundle.Yuna-compact]
Language: nl-BE, Name: Ellen, Quality: Default [com.apple.ttsbundle.Ellen-compact]
Language: nl-NL, Name: Xander, Quality: Default [com.apple.ttsbundle.Xander-compact]
Language: no-NO, Name: Nora, Quality: Default [com.apple.ttsbundle.Nora-compact]
Language: pl-PL, Name: Zosia, Quality: Default [com.apple.ttsbundle.Zosia-compact]
Language: pt-BR, Name: Luciana, Quality: Default [com.apple.ttsbundle.Luciana-compact]
Language: pt-PT, Name: Joana, Quality: Default [com.apple.ttsbundle.Joana-compact]
Language: ro-RO, Name: Ioana, Quality: Default [com.apple.ttsbundle.Ioana-compact]
Language: ru-RU, Name: Milena, Quality: Default [com.apple.ttsbundle.Milena-compact]
Language: sk-SK, Name: Laura, Quality: Default [com.apple.ttsbundle.Laura-compact]
Language: sv-SE, Name: Alva, Quality: Default [com.apple.ttsbundle.Alva-compact]
Language: th-TH, Name: Kanya, Quality: Default [com.apple.ttsbundle.Kanya-compact]
Language: tr-TR, Name: Yelda, Quality: Default [com.apple.ttsbundle.Yelda-compact]
Language: zh-CN, Name: Li-mu (Enhanced), Quality: Enhanced [com.apple.ttsbundle.siri_male_zh-CN_premium]
Language: zh-CN, Name: Ting-Ting (Enhanced), Quality: Enhanced [com.apple.ttsbundle.Ting-Ting-premium]
Language: zh-CN, Name: Ting-Ting (Enhanced), Quality: Enhanced [com.apple.ttsbundle.Ting-Ting-premium]
Language: zh-CN, Name: Yu-shu (Enhanced), Quality: Enhanced [com.apple.ttsbundle.siri_female_zh-CN_premium]
Language: zh-CN, Name: Li-mu, Quality: Default [com.apple.ttsbundle.siri_male_zh-CN_compact]
Language: zh-CN, Name: Ting-Ting, Quality: Default [com.apple.ttsbundle.Ting-Ting-compact]
Language: zh-CN, Name: Yu-shu, Quality: Default [com.apple.ttsbundle.siri_female_zh-CN_compact]
Language: zh-HK, Name: Sin-Ji, Quality: Default [com.apple.ttsbundle.Sin-Ji-compact]
Language: zh-TW, Name: Mei-Jia, Quality: Default [com.apple.ttsbundle.Mei-Jia-compact]

2. 生成嗓音實例

  • 通過地區(qū)語言代碼獲取嗓音對象
// 獲取當前地區(qū)語言代碼
NSString *languageCode = [AVSpeechSynthesisVoice currentLanguageCode];
// 通過地區(qū)語言代碼生成語言對象
AVSpeechSynthesisVoice *voice = [AVSpeechSynthesisVoice voiceWithLanguage:@"zh-TW"];
  • 通過嗓音標識符獲取嗓音對象
AVSpeechSynthesisVoice *voice = [AVSpeechSynthesisVoice voiceWithIdentifier:@"com.apple.ttsbundle.siri_male_zh-CN_compact"];

二染苛、朗讀方式(AVSpeechUtterance)

1.生成朗讀方式對象

AVSpeechUtterance提供了兩種類方法和兩種實例方法來生成朗讀方式對象

+ (instancetype)speechUtteranceWithString:(NSString *)string;
+ (instancetype)speechUtteranceWithAttributedString:(NSAttributedString *)string NS_AVAILABLE_IOS(10_0);

- (instancetype)initWithString:(NSString *)string;
- (instancetype)initWithAttributedString:(NSAttributedString *)string NS_AVAILABLE_IOS(10_0);
  • 生成一個實例
NSString *speechString = @"小伙子违柏,你真帥"
AVSpeechUtterance *utterance = [AVSpeechUtterance speechUtteranceWithString:speechString];

2.設(shè)置嗓音

utterance.voice = voice;

3.設(shè)置速度

utterance.rate = 0.5;

Values are pinned between AVSpeechUtteranceMinimumSpeechRate and AVSpeechUtteranceMaximumSpeechRate.

4.設(shè)置音高

utterance.pitchMultiplier = 1;

音高的取值范圍是[0.5 - 2]荒吏,默認值為1闭树。

5.設(shè)置音量

utterance.volume = 1;

音量的取值范圍[0-1],默認為1朴爬,一般不用設(shè)置

三、朗讀合成器(AVSpeechSynthesizer)

1.生成合成器

AVSpeechSynthesizer *speechSynthesizer = [[AVSpeechSynthesizer alloc] init];

2.開始朗讀

[speechSynthesizer speakUtterance:utterance];

代理方法

- (void)speechSynthesizer:(AVSpeechSynthesizer *)synthesizer didStartSpeechUtterance:(AVSpeechUtterance *)utterance;
- (void)speechSynthesizer:(AVSpeechSynthesizer *)synthesizer didFinishSpeechUtterance:(AVSpeechUtterance *)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;
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末惰帽,一起剝皮案震驚了整個濱河市憨降,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌善茎,老刑警劉巖券册,帶你破解...
    沈念sama閱讀 221,273評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異垂涯,居然都是意外死亡烁焙,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,349評論 3 398
  • 文/潘曉璐 我一進店門耕赘,熙熙樓的掌柜王于貴愁眉苦臉地迎上來骄蝇,“玉大人,你說我怎么就攤上這事操骡【呕穑” “怎么了?”我有些...
    開封第一講書人閱讀 167,709評論 0 360
  • 文/不壞的土叔 我叫張陵册招,是天一觀的道長岔激。 經(jīng)常有香客問我,道長是掰,這世上最難降的妖魔是什么虑鼎? 我笑而不...
    開封第一講書人閱讀 59,520評論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮键痛,結(jié)果婚禮上炫彩,老公的妹妹穿的比我還像新娘。我一直安慰自己絮短,他們只是感情好江兢,可當我...
    茶點故事閱讀 68,515評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著丁频,像睡著了一般杉允。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上席里,一...
    開封第一講書人閱讀 52,158評論 1 308
  • 那天夺颤,我揣著相機與錄音,去河邊找鬼胁勺。 笑死世澜,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的署穗。 我是一名探鬼主播寥裂,決...
    沈念sama閱讀 40,755評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼案疲!你這毒婦竟也來了封恰?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,660評論 0 276
  • 序言:老撾萬榮一對情侶失蹤褐啡,失蹤者是張志新(化名)和其女友劉穎诺舔,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,203評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡低飒,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,287評論 3 340
  • 正文 我和宋清朗相戀三年许昨,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片褥赊。...
    茶點故事閱讀 40,427評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡糕档,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出拌喉,到底是詐尸還是另有隱情速那,我是刑警寧澤,帶...
    沈念sama閱讀 36,122評論 5 349
  • 正文 年R本政府宣布尿背,位于F島的核電站端仰,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏田藐。R本人自食惡果不足惜荔烧,卻給世界環(huán)境...
    茶點故事閱讀 41,801評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望坞淮。 院中可真熱鬧茴晋,春花似錦、人聲如沸回窘。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,272評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽啡直。三九已至烁涌,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間酒觅,已是汗流浹背撮执。 一陣腳步聲響...
    開封第一講書人閱讀 33,393評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留舷丹,地道東北人抒钱。 一個月前我還...
    沈念sama閱讀 48,808評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像颜凯,于是被迫代替她去往敵國和親谋币。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,440評論 2 359

推薦閱讀更多精彩內(nèi)容

  • 需要導入 AVFoundation框架症概。 AVSpeechSynthesizer*synthesizer = [[...
    FengxinLi閱讀 979評論 0 1
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理蕾额,服務(wù)發(fā)現(xiàn),斷路器彼城,智...
    卡卡羅2017閱讀 134,693評論 18 139
  • 《ilua》速成開發(fā)手冊3.0 官方用戶交流:iApp開發(fā)交流(1) 239547050iApp開發(fā)交流(2) 1...
    葉染柒丶閱讀 10,781評論 0 11
  • 1 場景問題# 1.1 繼續(xù)導出數(shù)據(jù)的應(yīng)用框架## 在討論工廠方法模式的時候诅蝶,提到了一個導出數(shù)據(jù)的應(yīng)用框架退个。 對于...
    七寸知架構(gòu)閱讀 5,751評論 1 64
  • 喜歡拍照的我每次都會用VSCO修一下圖 分享一些原圖與調(diào)色后的對比圖(都是用手機拍的) 喜歡的小哥哥小姐...
    鹿炸炸閱讀 533評論 0 1