2015-07-11 1 views
5

Est-il possible d'utiliser les voix améliorées/de haute qualité (Alex aux États-Unis) avec le synthétiseur vocal? J'ai téléchargé les voix mais je ne trouve aucun moyen de dire au synthétiseur de l'utiliser plutôt que la voix par défaut.AVSpeechSynthesizer Voix haute qualité

Étant donné que les voix sont généralement sélectionnées par les codes BCP-47 et que l'anglais américain est uniquement activé, il semble qu'il n'y ait aucun moyen de différencier davantage les voix. Est-ce que je manque quelque chose? (On pourrait penser qu'Apple aurait considéré un besoin de dialectes différents, mais je ne le vois pas).

TIA.

+0

Ayant le même problème et il me semble qu'il est actuellement tout simplement cassé, car cela devrait fonctionner. Il devrait automatiquement utiliser la voix améliorée si disponible, selon la documentation. –

Répondre

0

C'était un bogue dans les versions précédentes d'iOS que les applications utilisant le synthétiseur n'utilisaient pas les voix améliorées. Ce bug a été corrigé dans iOS10. iOS10 utilise maintenant les voix améliorées.

1

Oui, possible de choisir parmi les deux qui semblent être disponibles sur mon système, comme celui-ci:

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

Ensuite, quelque part dans votre application, faites quelque chose comme ceci:

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