#13 開不了口的告白 & 我們一起學貓叫
Published in
4 min readJul 21, 2022
學會使用 AVSpeechSynthesizer 講話
簡單製作一個注音符號發音器,讓大家重回小時候學國語的時光
執行步驟
- 在畫面上準備每個注音符號,並於每個注音上設置一個按鍵,以IBAction到 speak 上
2. 新增可調整速度/音量的滑桿,並拉出 IBOutlet
@IBOutlet weak var rateSlider: UISlider!
@IBOutlet weak var volumeSlider: UISlider!
3. 將每個注音的按鍵其IBAction都指定到 speak 函式,在此利用按鍵上面的tag屬性分辨其所對應的注音符號
@IBAction func speak1(_ sender: UIButton) {
let data = ary[sender.tag]
print(data, rateSlider.value, volumeSlider.value)
let speech = AVSpeechUtterance(string: data)
speech.voice = AVSpeechSynthesisVoice(language: "zh-TW")
speech.rate = rateSlider.value
speech.volume = volumeSlider.value
let synthesizer = AVSpeechSynthesizer()
synthesizer.speak(speech)
}
GitHub
程式
import UIKit
import AVFoundationclass ViewController: UIViewController {
let ary = ["ㄅ","ㄆ","ㄇ","ㄈ","ㄉ","ㄊ","ㄋ","ㄌ","ㄍ","ㄎ","ㄏ","ㄐ","ㄑ","ㄒ","ㄓ","ㄔ","ㄕ","ㄖ","ㄗ","ㄘ","ㄙ","ㄚ","ㄛ","ㄜ","ㄝ","ㄞ","ㄟ","ㄠ","ㄡ","ㄢ","ㄣ","ㄤ","ㄥ","ㄦ","ㄧ","ㄨ","ㄩ"]
@IBOutlet weak var rateSlider: UISlider!
@IBOutlet weak var volumeSlider: UISlider!
override func viewDidLoad() {
super.viewDidLoad()
}@IBAction func speak1(_ sender: UIButton) {
let data = ary[sender.tag]
print(data, rateSlider.value, volumeSlider.value)
let speech = AVSpeechUtterance(string: data)
speech.voice = AVSpeechSynthesisVoice(language: "zh-TW")
speech.rate = rateSlider.value
speech.volume = volumeSlider.value
let synthesizer = AVSpeechSynthesizer()
synthesizer.speak(speech)
}
}