#5 開不了口的告白 & 我們一起學貓叫
柯南隱身幕後的大功臣:蝴蝶結變聲器,一起來揪出兇手吧!
目的: 學習使用 AVSpeechSynthesizer 講話。
功能需求:
1 唸出 text field 輸入的文字。
2 利用 slider 控制講話的速度。
3 利用 slider 控制講話的音調。
4 利用 label 顯示 slider 的數值。
5 利用 slider 控制講話的音量。
6 加入暫停 & 繼續講話的 button。語音播放完畢把status改回play
7 加入多個講話的 button,點擊不同的 button 會講不同的語言。
比方有講中文,講英文的按鈕。(測試中文時,有時沒聲音,先略過)
8 學貓叫 App,點選 🐈 會唸出 我們一起學貓叫,一起 meow meow meow meow meow
Debug流水帳:
App沒有辦法講話, error: failed to find the AHS sub-server port, Error: 0x10000004
Occured on Xcode 12 Beta 3 & 4, beta 6 fixed
UITextField設定IBAction-Did End on Exit, keyboard key打勾,讓鍵盤能自動出現/消失
speechUtterance.rate 0–1
speechUtterance.volume 0–1
speechUtterance.pitchMultiplier 0.5–2
AVSpeechSynthesisVoice每個國家有預設語音,不一定是男聲/女聲,pitchMultiplier只能讓聲音變低沉,不能讓女->男
synthesizer.pauseSpeaking
synthesizer.continueSpeaking
synthesizer.stopSpeaking
用enum來取代數字表示目前的狀態,一目瞭然且不會打錯字
當語音播放完畢時,把status從pause改回play:
用extension新增delegate AVSpeechSynthesizerDelegate
speechSynthesizer/didFinish/didStart
在viewDidLoad後面設定synthesizer.delegate = self(不然不會動)
GitHub: