Использование AVSpeechSynthesizer для китайского пиньинь

В моей программе Swift я использую AVSpeechSynthesizer для произношения китайских иероглифов. Это мой метод:

static var synth = AVSpeechSynthesizer()

static func speak(string: String) 
{        
    let utterance = AVSpeechUtterance(string: string)
    utterance.voice = AVSpeechSynthesisVoice(language: "zh-CN")
    utterance.rate = 0.1

    synth.speak(utterance)
}  

Часто один и тот же символ может иметь несколько вариантов произношения. Есть ли способ использовать AVSpeechSynthesizer для произнесения символа с учетом пиньинь. Другими словами, вместо того, чтобы передавать символ «高», мы будем передавать пиньинь «гао». До сих пор просто передача пиньинь не работала в этом методе.

Спасибо заранее,

Джон


person Jonathan Rachlin    schedule 16.04.2019    source источник


Ответы (2)


Я думаю, что нашел ответ и публикую его на случай, если кто-то еще сочтет его полезным. Пиньинь следует вводить в форме «gao1», а не «gāo». Похоже, что это должно быть в нижнем регистре: т. е. «GAO1», кажется, не работает, но «gao1» работает.

person Jonathan Rachlin    schedule 16.04.2019

На мой взгляд, использование обозначения IPA (Международный фонетический алфавит) — лучший способ достичь цели.

Поместите attributedString в качестве входящего параметра экземпляра AVSpeechUtterance после объявления его соответствующего атрибута.

Взгляните на этот подробный обзор видео WWDC 2018, который должен помочь использовать AVSpeechSynthesizer для китайского произношения пиньинь: полезную реализацию можно найти в этом ответе.

person XLE_22    schedule 07.05.2019