2015-07-11 17 views
5

Czy można używać głosu o podwyższonej/wysokiej jakości (Alex w USA) za pomocą syntezatora mowy? Pobrałem głosy, ale nie znalazłem sposobu, aby powiedzieć syntezatorowi, aby używał go zamiast domyślnego głosu.AVSpeechSynthesizer Wysokiej jakości głosy

Ponieważ głosy są generalnie wybierane za pomocą kodów BCP-47 i jest tylko dla angielskiego w USA, wydaje się, że nie ma możliwości dalszego rozróżniania głosów. Czy czegoś brakuje? (Można by pomyśleć, że Apple uznałoby potrzebę różnych dialektów, ale ja tego nie widzę).

TIA.

+0

uwzględniając ten sam problem i wydaje mi się, że obecnie jest po prostu zepsuty, ponieważ powinno to zadziałać. Powinien automatycznie korzystać z ulepszonego głosu, jeśli jest dostępny, zgodnie z dokumentacją. –

Odpowiedz

0

To był błąd w poprzednich wersjach iOS, że aplikacje używające syntezatora nie używały ulepszonych głosów. Ten błąd został naprawiony w iOS10. iOS10 używa teraz ulepszonych głosów.

1

Tak, można wybrać z 2, które wydają się być dostępne w systemie, tak:

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) 
    } 
} 

Potem, gdzieś w swojej aplikacji, zrób coś takiego:

let voice = Speak() 
voice.sayThis("I'm speaking better Seppo, now!")