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.

Надеюсь, что это может помочь

Другие вопросы по тегам