#13 開不了口的告白 & 我們一起學貓叫

rjjq
彼得潘的 Swift iOS / Flutter App 開發教室
4 min readJul 21, 2022

學會使用 AVSpeechSynthesizer 講話

簡單製作一個注音符號發音器,讓大家重回小時候學國語的時光

執行步驟

  1. 在畫面上準備每個注音符號,並於每個注音上設置一個按鍵,以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 AVFoundation
class 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)
}

}

--

--