在我的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”。到目前为止,只是传递拼音在这种方法中没有奏效。
提前谢谢了,
乔恩
我想我找到了答案,并且发布它以防其他任何人发现它有用。拼音应以“gao1”的形式输入,而不是“gāo”。似乎它必须是小写的:即“GAO1”似乎不起作用,但“gao1”确实起作用。
在我看来,使用IPA notation(国际音标)是达到目标的最佳方式。
在声明其适当的属性后,将attributedString
作为AVSpeechUtterance
实例的传入参数。
看看这个WWDC 2018 video detailed summary应该有助于将AVSpeechSynthesizer用于中文拼音发音:有用的实现也可以在这个answer中找到。