AVSpeechSynthesizer 似乎支持多代表英语(英国、美国......)
支持其他语言吗?法语、葡萄牙语……有这些语言的列表吗?
是的,确实如此。使用
AVSpeechSynthesisVoice的
speechVoices
获取支持语言的可用语音列表。
let voices = AVSpeechSynthesisVoice.speechVoices() //list of supported voices
print(voices[0].language) //print first voice locale
目前(截至 2018 年 9 月 10 日,在 iOS 10.3.1 和 11.4.1 上)您将找到以下内容:
这两个小功能会有帮助:
import AVFoundation
import Foundation
func getSpeechSupportedRegionalLanguages() -> [String] {
let voices = AVSpeechSynthesisVoice.speechVoices()
var languages: Set<String> = []
let english = Locale(identifier: "en")
voices.forEach{languages.insert(english.localizedString(forIdentifier: $0.language)!)}
return Array(languages).sorted()
}
func getSpeechSupportedLanguages() -> [String] {
let voices = AVSpeechSynthesisVoice.speechVoices()
var languages: Set<String> = []
let english = Locale(identifier: "en")
voices.forEach{languages.insert(english.localizedString(forLanguageCode: $0.language)!)}
return Array(languages).sorted()
}