使用AVSpeechSynthesizer中文拼音

问题描述 投票:1回答:2

在我的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”。到目前为止,只是传递拼音在这种方法中没有奏效。

提前谢谢了,

乔恩

swift chinese-locale avspeechsynthesizer
2个回答
0
投票

我想我找到了答案,并且发布它以防其他任何人发现它有用。拼音应以“gao1”的形式输入,而不是“gāo”。似乎它必须是小写的:即“GAO1”似乎不起作用,但“gao1”确实起作用。


0
投票

在我看来,使用IPA notation(国际音标)是达到目标的最佳方式。

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

看看这个WWDC 2018 video detailed summary应该有助于将AVSpeechSynthesizer用于中文拼音发音:有用的实现也可以在这个answer中找到。

© www.soinside.com 2019 - 2024. All rights reserved.