使用AVSpeechSynthesizer进行汉语拼音

时间:2019-04-16 15:39:23

标签: swift chinese-locale avspeechsynthesizer

在我的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”。到目前为止,仅通过拼音输入法在此方法中无效。

在此先感谢

乔恩

2 个答案:

答案 0 :(得分:0)

我认为我已经找到了答案,并且正在发布它,以防其他人发现它有用。拼音应以“ gao1”而不是“gāo”的形式输入。似乎必须是小写字母:即“ GAO1”似乎无效,但“ gao1”有效。

答案 1 :(得分:0)

我认为,使用IPA notation (国际语音字母)是达到目标的最佳方法。

在声明其适当的属性后,将attributedString作为AVSpeechUtterance实例的传入参数。

看看这个WWDC 2018 video detailed summary,它应该有助于使用AVSpeechSynthesizer进行汉语拼音发音:有用的实现也可以在此answer中找到。