繁体   English   中英

在Swift中,SpeechSynthesizer不会自然停止

[英]SpeechSynthesizer doesn't give the natural pause for full-stop in Swift

我正在从事文字说话任务。 我所面临的问题是,例如,如果我收到文字: Hello everyone. 2 minutes to go. Hello everyone. 2 minutes to go. 然后,使用下面的语音合成器代码,它将整个文本视为一个句子,并且在Hello everyone.之后不会自然停顿Hello everyone. 就像没有一句话一样,它把全文讲成一个句子. (full stop) . (full stop) Hello everyone之后。 仅当标点符号后有数字时,才会发生这种情况 . (full stop) . (full stop)

let utterance = AVSpeechUtterance(string: "Hello everyone. 2 minutes to go.")
utterance.voice = AVSpeechSynthesisVoice(language: "en-US")
utterance.rate = AVSpeechUtteranceDefaultSpeechRate
synthesizer.speak(utterance)

如果您担心我如何初始化会话和合成器,那么下面是以下代码:

let synthesizer = AVSpeechSynthesizer()
let session = AVAudioSession.sharedInstance()
do {
    try session.setCategory(AVAudioSessionCategoryPlayback, with: .duckOthers)
    try session.setActive(true)
} catch {
    print(error.localizedDescription)
}

@Umair这不仅会在您写以数字开头的内容时发生,而且在下一个句子不是以大写字母开头时也会发生,例如, Hello everyone. two minutes to go. Hello everyone. two minutes to go. 实际上,这些是您文本编写中的错误,而不是AVSpeechSynthesizer任何问题。 在语法上,如果您想编写此文本,则应采用以下方式之一。

大家好。 两分钟路程。

要么

大家好,还有2分钟的路程。

以上两个陈述都将为您的问题提供确切的答案。 另一行可以为您工作,但这不是适当的句子。 Hello everyone,. 2 minutes to go.

希望这可以帮助

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM