#55 開不了口的告白 App

這個作業其實已經做過了合成器(講話:AVSpeechSynthesizer)、變音器( AVSpeechUtterance.rate; speechUtterance.pitchMultiplier ) 與將音樂或聲音檔加入(AV Player):

所以跟據以下的屬性

這篇要新增補上:

  1. Label shows Slider Value
  2. TextField 可以輸入中文的文字發音
  3. Add Volume Slider 可以調大小聲
  4. Add postUtteranceDelay and preUtteranceDelay

上菜開始吧!

  1. Label shows Slider Value

The default pitch is 1.0. Allowed values are in the range from 0.5 (for lower pitch) to 2.0 (for higher pitch).

以下的Max&Min我試過,超過這個範圍就會超出正常聲音可理解的範圍。

2. TextField key in traditional Chinese

因為一直都是做英文的,完全不知道怎麼打開繁體中文的鍵盤。剛好這篇可以來做。

第一次要先選在 Simulator 的Hardware->Keyboard->Toggle Software Keyboard ,換左下角的地球把鍵盤叫出來。

為了怕鍵盤一直放著影響畫面,Toggle Software Keyboard第一次打開過之後,再選一次就可以關起來了,之後會一直顯示繁中。

或是拉TextField 連action, 連outlet時的觸發事件(Event)選Did End On Exit,擊點TextField時鍵盤就會自動跑出來,key完enter也會自動收起來。

@IBAction func dismissKeyboard(_ sender: Any) {}

3. add Volume Slider tuning volume

值可依據slider value調整

speechUtterance.pitchMultiplier = voiceType.valuespeechUtterance.rate = speedRate.valuespeechUtterance.volume = volume.value

4. Add postUtteranceDelay and preUtteranceDelay

這裡我設了二個speechUtterance1&speechUtterance2,

speechUtterance1依照我key in的中文:「你是我的菜」發音

speechUtterance2則是內建的人名稱(所以畫面上不會顯示,而是寫在swift裡)

(平常不要惹太太,很容易被拿來公開告白)

let speechUtterance1 = AVSpeechUtterance(string:quoteTextField.text!)let speechUtterance2 = AVSpeechUtterance(string:"豬隊友")speechUtterance2.preUtteranceDelay = 3speechUtterance1.voice = AVSpeechSynthesisVoice(language:"zh-TW")speechUtterance2.voice = AVSpeechSynthesisVoice(language:"zh-TW")speechUtterance1.pitchMultiplier = voiceType.valuespeechUtterance1.rate = speedRate.valuespeechUtterance1.volume = volume.valuespeechUtterance2.pitchMultiplier = voiceType.valuespeechUtterance2.rate = speedRate.valuespeechUtterance2.volume = volume.valuesynthesizer.speak(speechUtterance1)synthesizer.speak(speechUtterance2)

5. 改了segment的Icon&Tint, Image &Title原來只能二選一。

哈哈,第二個是阿基里斯腱中箭,並不是吃光的蘋果核哦!

最後,試試我的菜

Stay Yummy Github!

--

--