SpeechSynthesizer не дает естественную паузу для полной остановки в Swift
Я работаю над текстом, чтобы говорить задачу. В котором я сталкиваюсь с проблемой, что если я получил текст, например: Hello everyone. 2 minutes to go.
Затем, используя приведенный ниже код для синтезатора речи, он рассматривает весь текст как одно предложение и не дает естественной паузы после Hello everyone.
, Он говорит весь текст как одно предложение, как будто нет . (full stop)
после Hello everyone
, Это происходит только в том случае, если после знака препинания стоит цифра . (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)
}
1 ответ
@Umair Это происходит не только тогда, когда вы пишете что-то, начинающееся с числового значения, но и когда ваше следующее предложение начинается не с заглавной буквы, напримерHello everyone. two minutes to go.
На самом деле это ошибки в написании текста, а не проблемы с AVSpeechSynthesizer
, Грамматически, если вы хотите написать этот текст, то это должно быть одним из следующих способов.
Здравствуйте все. Две минуты осталось.
или же
Привет всем, осталось 2 минуты.
оба приведенных выше утверждения дадут точный ответ на ваш вопрос. другая строка может работать для вас, но это не подходящее предложение. Hello everyone,. 2 minutes to go.
Надеюсь, что это может помочь