Swift 4 中的文本到语音转换
Text to speech conversion in Swift 4
我正在尝试在我的 iOS 应用程序中集成文本到语音功能。
为此,我使用 AVFoundation
框架的 AVSpeechUtterance
和 AVSpeechSynthesisVoice
类。
extension String {
func speech(with pronunciation: String) {
let utterance = AVSpeechUtterance(attributedString: NSAttributedString(string: self, attributes: [.accessibilitySpeechIPANotation : pronunciation]))
utterance.voice = AVSpeechSynthesisVoice(language: "en-US")
let synth = AVSpeechSynthesizer()
DispatchQueue.main.async {
synth.speak(utterance)
}
}
}
我面临的问题是 wind 单词作为动词和名词的发音,即
- wind 作为 动词 的发音是:waɪnd
- and wind 作为 名词 的发音是:wɪnd
以上发音字符串遵循国际音标(IPA)。
但是,我没有得到预期的结果。
如果您想要特定拼写的 IPA 翻译,我建议使用位于 iOS 的功能:
Settings > General > Accessibility > Speech > Pronunciations
(iOS 12).
Settings > Accessibility > Spoken Content > Pronunciations
(iOS 13)
一旦您选择了想要的结果,您就可以use it in your code由语音合成器发声。
编辑
this solution also doesn't work for me.
我对您的评论感到非常惊讶,因为当我按照所提供的 link 执行每个步骤时,我得到以下代码片段:
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
let pronunciationKey = NSAttributedString.Key(rawValue: AVSpeechSynthesisIPANotationAttribute)
// let attrStr = NSMutableAttributedString(string: "blablablaNOUN",
// attributes: [pronunciationKey: "ˈwɪnd"])
let attrStr = NSMutableAttributedString(string: "blablablaVERB",
attributes: [pronunciationKey: "ˈwa͡ɪnd"])
let utterance = AVSpeechUtterance(attributedString: attrStr)
let synthesizer = AVSpeechSynthesizer()
synthesizer.speak(utterance)
}
...当我在 Settings - General - Language & Region
菜单中更改 iPhone Language
后启动这个空白应用 时,我得到了动词的正确发音和名词。
Copy-paste上面的代码片段,自己测试一下。
我正在尝试在我的 iOS 应用程序中集成文本到语音功能。
为此,我使用 AVFoundation
框架的 AVSpeechUtterance
和 AVSpeechSynthesisVoice
类。
extension String {
func speech(with pronunciation: String) {
let utterance = AVSpeechUtterance(attributedString: NSAttributedString(string: self, attributes: [.accessibilitySpeechIPANotation : pronunciation]))
utterance.voice = AVSpeechSynthesisVoice(language: "en-US")
let synth = AVSpeechSynthesizer()
DispatchQueue.main.async {
synth.speak(utterance)
}
}
}
我面临的问题是 wind 单词作为动词和名词的发音,即
- wind 作为 动词 的发音是:waɪnd
- and wind 作为 名词 的发音是:wɪnd
以上发音字符串遵循国际音标(IPA)。
但是,我没有得到预期的结果。
如果您想要特定拼写的 IPA 翻译,我建议使用位于 iOS 的功能:
Settings > General > Accessibility > Speech > Pronunciations
(iOS 12).Settings > Accessibility > Spoken Content > Pronunciations
(iOS 13)
一旦您选择了想要的结果,您就可以use it in your code由语音合成器发声。
编辑
this solution also doesn't work for me.
我对您的评论感到非常惊讶,因为当我按照所提供的 link 执行每个步骤时,我得到以下代码片段:
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
let pronunciationKey = NSAttributedString.Key(rawValue: AVSpeechSynthesisIPANotationAttribute)
// let attrStr = NSMutableAttributedString(string: "blablablaNOUN",
// attributes: [pronunciationKey: "ˈwɪnd"])
let attrStr = NSMutableAttributedString(string: "blablablaVERB",
attributes: [pronunciationKey: "ˈwa͡ɪnd"])
let utterance = AVSpeechUtterance(attributedString: attrStr)
let synthesizer = AVSpeechSynthesizer()
synthesizer.speak(utterance)
}
...当我在 Settings - General - Language & Region
菜单中更改 iPhone Language
后启动这个空白应用 时,我得到了动词的正确发音和名词。
Copy-paste上面的代码片段,自己测试一下。