在我的Swift程序中,我使用AVSpeechSynthesizer来发音汉字。这是我的方法:
static var synth = AVSpeechSynthesizer()
static func speak(string: String)
{
let utterance = AVSpeechUtterance(string: string)
utterance.voice = AVSpeechSynthesisVoice(language: "zh-CN")
utterance.rate = 0.1
synth.speak(utterance)
}
通常,一个字符可以有多个发音。有没有一种方法可以使用AVSpeechSynthesizer发出给定拼音的字符。换句话说,我们不传递字符“高”,而是传递拼音“gāo”。到目前为止,仅通过拼音输入法在此方法中无效。
在此先感谢
乔恩
答案 0 :(得分:0)
我认为我已经找到了答案,并且正在发布它,以防其他人发现它有用。拼音应以“ gao1”而不是“gāo”的形式输入。似乎必须是小写字母:即“ GAO1”似乎无效,但“ gao1”有效。
答案 1 :(得分:0)
我认为,使用IPA notation (国际语音字母)是达到目标的最佳方法。
在声明其适当的属性后,将attributedString
作为AVSpeechUtterance
实例的传入参数。
看看这个WWDC 2018 video detailed summary,它应该有助于使用AVSpeechSynthesizer进行汉语拼音发音:有用的实现也可以在此answer中找到。