2015-07-11 3 views
5

Можно ли использовать голос с улучшенным/высоким качеством (Alex в США) с помощью речевого синтезатора? Я загрузил голоса, но не нашел способ сказать синтезатору использовать его, а не голос по умолчанию.Звуки высокого качества AVSpeechSynthesizer

Поскольку голоса, как правило, выбираются по кодам BCP-47, и есть только для английского языка США, похоже, что нет возможности дифференцировать голоса. Я что-то упускаю? (Можно было бы подумать, что Apple, возможно, считала нуждой для разных диалектов, но я этого не вижу).

TIA.

+0

Имея та же проблема, и мне кажется, что она в настоящее время просто сломана, так как это должно работать. В соответствии с документацией он должен автоматически использовать расширенный голос, если он доступен. –

ответ

0

Это была ошибка в предыдущих версиях iOS, что приложения, использующие синтезатор, не использовали расширенные голоса. Эта ошибка исправлена ​​в iOS10. iOS10 теперь использует расширенные голоса.

1

Да, можно выбрать из 2, что, кажется, в моей системе, как это:

class Speak { 

    let voices = AVSpeechSynthesisVoice.speechVoices() 
    let voiceSynth = AVSpeechSynthesizer() 
    var voiceToUse: AVSpeechSynthesisVoice? 

    init(){ 
    for voice in voices { 
     if voice.name == "Samantha (Enhanced)" && voice.quality == .enhanced { 
     voiceToUse = voice 
     } 
    }  
    } 

    func sayThis(_ phrase: String){ 
     let utterance = AVSpeechUtterance(string: phrase) 
      utterance.voice = voiceToUse 
      utterance.rate = 0.5 

     voiceSynth.speak(utterance) 
    } 
} 

Затем, где-то в вашем приложении, сделать что-то вроде этого:

let voice = Speak() 
voice.sayThis("I'm speaking better Seppo, now!") 
Смежные вопросы