SpeechSynthesizer 在 Swift 中没有为句号提供自然停顿
SpeechSynthesizer doesn't give the natural pause for full-stop in Swift
我正在处理文字转语音任务。我遇到的问题是,如果我得到文本,例如:Hello everyone. 2 minutes to go.
然后使用下面的代码作为语音合成器,它将整个文本视为一个句子,并且在 Hello everyone.
之后不会自然停顿。就像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.
事实上,这些是你的错误文字书写 AVSpeechSynthesizer
没有任何问题。从语法上讲,如果你想写这篇文章,那么它应该采用以下方式之一。
Hello everyone. Two minutes to go.
或
Hello everyone, 2 minutes to go.
以上两种说法都能准确回答您的问题。另一行可以为您工作,但这不是一个合适的句子。 Hello everyone,. 2 minutes to go.
希望对您有所帮助
我正在处理文字转语音任务。我遇到的问题是,如果我得到文本,例如:Hello everyone. 2 minutes to go.
然后使用下面的代码作为语音合成器,它将整个文本视为一个句子,并且在 Hello everyone.
之后不会自然停顿。就像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.
事实上,这些是你的错误文字书写 AVSpeechSynthesizer
没有任何问题。从语法上讲,如果你想写这篇文章,那么它应该采用以下方式之一。
Hello everyone. Two minutes to go.
或
Hello everyone, 2 minutes to go.
以上两种说法都能准确回答您的问题。另一行可以为您工作,但这不是一个合适的句子。 Hello everyone,. 2 minutes to go.
希望对您有所帮助