作業9--上帝之語&動物之聲

Photo by Ilyass SEDDOUG on Unsplash

這次使用之前在playground玩過的AVSpeechSynthesizer,但是這次變成是APP版。

主題1--上帝之聲

程式碼簡易說明

//連結物件
@IBOutlet weak var talkTextField: UITextField!
@IBOutlet weak var voiceSlider: UISlider!@IBOutlet weak var speedSlider: UISlider!@IBOutlet weak var pitchSlider: UISlider!@IBOutlet weak var speedLabel: UILabel!@IBOutlet weak var pitchLabel: UILabel!@IBOutlet weak var volumeLabel: UILabel!@IBOutlet weak var languageSegmentedControl: UISegmentedControl!

1 唸出 text field 輸入的文字。

  let Utterance =  AVSpeechUtterance(string: talkTextField.text!)

2 利用 slider 控制講話的速度。

Utterance.rate = speedSlider.value

3 利用 slider 控制講話的音調。

Utterance.pitchMultiplier = pitchSlider.value

4 利用 label 顯示 slider 的數值。

volumeLabel.text = String(format: "%.2f", voiceSlider.value)pitchLabel.text = String(format: "%.2f", pitchSlider.value)speedLabel.text = String(format: "%.2f", speedSlider.value)

5 利用 slider 控制講話的音量。

Utterance.volume = voiceSlider.value

6 加入暫停 & 繼續講話的 button。

//暫停
synthesizer.pauseSpeaking(at: .immediate)
//繼續
synthesizer.continueSpeaking()

7 加入2種語言講話的 Segmented。

if languageSegmentedControl.selectedSegmentIndex == 0{Utterance.voice = AVSpeechSynthesisVoice(language: "zh-TW")} else if languageSegmentedControl.selectedSegmentIndex == 1{Utterance.voice = AVSpeechSynthesisVoice(language: "zh-hk")}

撥放成果 — 唸出-達拉崩吧...部份歌詞(中文版與語粵語版都有錄哦~~)

完整程式碼github

主題2--動物之聲

撥放成果

完整程式碼github

參考文章:

最後來聽聽--達拉崩吧完整版

--

--