AVSpeechSynthesizer 和 AVSpeechUtterance

1. AVSpeechSynthesizer

功能

  • 將文字添加到語音, 就是用語音播放一段文字

屬性

  • delegate : 代理, 主要是對語音播放狀態(tài)的監(jiān)聽
@protocol AVSpeechSynthesizerDelegate <NSObject>
// 代理方法
@optional
// 開始播放 語音單元
- (void)speechSynthesizer:(AVSpeechSynthesizer *)synthesizer didStartSpeechUtterance:(AVSpeechUtterance *)utterance;
// 完成播放 語音單元
- (void)speechSynthesizer:(AVSpeechSynthesizer *)synthesizer didFinishSpeechUtterance:(AVSpeechUtterance *)utterance;
// 暫停播放 語音單元
- (void)speechSynthesizer:(AVSpeechSynthesizer *)synthesizer didPauseSpeechUtterance:(AVSpeechUtterance *)utterance;
// 繼續(xù)播放 語音單元
- (void)speechSynthesizer:(AVSpeechSynthesizer *)synthesizer didContinueSpeechUtterance:(AVSpeechUtterance *)utterance;
// 取消播放 語音單元
- (void)speechSynthesizer:(AVSpeechSynthesizer *)synthesizer didCancelSpeechUtterance:(AVSpeechUtterance *)utterance;
// 這里 指的是 又來監(jiān)聽 播放 字符范圍
- (void)speechSynthesizer:(AVSpeechSynthesizer *)synthesizer willSpeakRangeOfSpeechString:(NSRange)characterRange utterance:(AVSpeechUtterance *)utterance;
@end
  • speaking: 只讀屬性, 用來判斷當(dāng)前是否處于播放狀態(tài)
  • paused: 只讀屬性, 用來判斷當(dāng)前是否處于暫停狀態(tài)

方法

// 添加 播放話語 到 播放語音 隊(duì)列, 可以設(shè)置utterance的屬性來控制播放
- (void)speakUtterance:(AVSpeechUtterance *)utterance;

// 對于 stopSpeakingAtBoundary: 語音單元的操作, 如果中斷, 會(huì)清空隊(duì)列
// 中斷
- (BOOL)stopSpeakingAtBoundary:(AVSpeechBoundary)boundary;
// 暫停
- (BOOL)pauseSpeakingAtBoundary:(AVSpeechBoundary)boundary;
// 繼續(xù)
- (BOOL)continueSpeaking;

2. AVSpeechUtterance

功能

  • 被播放的語音文字, 可以理解為一段需要播放的文字

屬性

// 設(shè)置使用哪一個(gè)國家的語言播放
@property(nonatomic, retain, nullable) AVSpeechSynthesisVoice *voice;
// 獲取當(dāng)前需要播放的文字, 只讀屬性
@property(nonatomic, readonly) NSString *speechString;
// 獲取當(dāng)前需要播放的文字 - 富文本, 只讀屬性, iOS10以后可用
@property(nonatomic, readonly) NSAttributedString *attributedSpeechString;
// 本段文字播放時(shí)的 語速, 應(yīng)介于AVSpeechUtteranceMinimumSpeechRate 和 AVSpeechUtteranceMaximumSpeechRate 之間
@property(nonatomic) float rate;           
// 在播放特定語句時(shí)改變聲音的聲調(diào), 一般取值介于0.5(底音調(diào))~2.0(高音調(diào))之間
@property(nonatomic) float pitchMultiplier; 
// 聲音大小, 0.0 ~ 1.0 之間
@property(nonatomic) float volume;
// 播放后的延遲, 就是本次文字播放完之后的停頓時(shí)間, 默認(rèn)是0
@property(nonatomic) NSTimeInterval preUtteranceDelay; 
// 播放前的延遲, 就是本次文字播放前停頓的時(shí)間, 然后播放本段文字, 默認(rèn)是0
@property(nonatomic) NSTimeInterval postUtteranceDelay; 

方法

// 一下全部都是初始化方法, 分為 類方法 和 對象方法, 富文本的初始化方法要在iOS10以后才可以用

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

最后是國家語言列表

  • 可以使用 [AVSpeechSynthesisVoice speechVoices] 打印出支持的所有國家語言
ar-SA  沙特阿拉伯(阿拉伯文)

en-ZA, 南非(英文)

nl-BE, 比利時(shí)(荷蘭文)

en-AU, 澳大利亞(英文)

th-TH, 泰國(泰文)

de-DE, 德國(德文)

en-US, 美國(英文)

pt-BR, 巴西(葡萄牙文)

pl-PL, 波蘭(波蘭文)

en-IE, 愛爾蘭(英文)

el-GR, 希臘(希臘文)

id-ID, 印度尼西亞(印度尼西亞文)

sv-SE, 瑞典(瑞典文)

tr-TR, 土耳其(土耳其文)

pt-PT, 葡萄牙(葡萄牙文)

ja-JP, 日本(日文)

ko-KR, 南朝鮮(朝鮮文)

hu-HU, 匈牙利(匈牙利文)

cs-CZ, 捷克共和國(捷克文)

da-DK, 丹麥(丹麥文)

es-MX, 墨西哥(西班牙文)

fr-CA, 加拿大(法文)

nl-NL, 荷蘭(荷蘭文)

fi-FI, 芬蘭(芬蘭文)

es-ES, 西班牙(西班牙文)

it-IT, 意大利(意大利文)

he-IL, 以色列(希伯萊文,阿拉伯文)

no-NO, 挪威(挪威文)

ro-RO, 羅馬尼亞(羅馬尼亞文)

zh-HK, 香港(中文)

zh-TW, 臺(tái)灣(中文)

sk-SK, 斯洛伐克(斯洛伐克文)

zh-CN, 中國(中文)

ru-RU, 俄羅斯(俄文)

en-GB, 英國(英文)

fr-FR, 法國(法文)

hi-IN  印度(印度文)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 最近項(xiàng)目剛剛交付,偶然間用到了語音播報(bào)和語音搜索的功能。語音搜索我用的是訊飛的demo,感覺效果還不錯(cuò),感興趣的話...
    奔跑的小螞蟻_8b28閱讀 8,639評論 13 6
  • 選擇qi:是表達(dá)式 標(biāo)簽選擇器 類選擇器 屬性選擇器 繼承屬性: color,font,text-align,li...
    wzhiq896閱讀 2,112評論 0 2
  • 選擇qi:是表達(dá)式 標(biāo)簽選擇器 類選擇器 屬性選擇器 繼承屬性: color,font,text-align,li...
    love2013閱讀 2,429評論 0 11
  • 我決定把我們的故事寫出來,也許等到我寫完的那一天,就終于可以釋然。
    好似過客還閱讀 258評論 0 0
  • 講一個(gè)自己的經(jīng)歷吧。 我剛到帝都的那一年準(zhǔn)備學(xué)口語,然后去了環(huán)球美聯(lián)。公司環(huán)境整潔雅致,走幾步就看見小玻璃屋里外教...
    繞花千轉(zhuǎn)閱讀 435評論 0 1

友情鏈接更多精彩內(nèi)容