La say
commande d' OS X est utile pour certaines tâches (comme celle de Skype m'informer lorsqu'un contact arrive en ligne), mais elle ne prononce pas correctement certains noms. Existe-t-il un moyen d'apprendre say
à prononcer un mot différemment?
Par exemple, essayez:
say "Hi, Joel Spolsky"
Le «ol» sonne comme «balle» plutôt que «vieux». Je voudrais ajouter une exception qui dit "Prononcez Spolsky comme ça", plutôt que d'essayer d'enseigner de nouvelles règles linguistiques. Je parie qu'il existe un moyen car il peut prononcer "iphone" comme Apple le veut.
Mise à jour - Après quelques recherches, voici ce que j'ai appris:
- La synthèse vocale est partagée entre la conversion du texte en phonèmes, puis les phonèmes sont transformés en audio à l'aide d'une voix. Changer la voix n'affecte pas les phonèmes.
- Le gestionnaire de synthèse vocale a certaines fonctions pour convertir du texte en phonèmes , et une méthode pour enregistrer un dictionnaire vocal qui ajoutera de nouvelles cartes de phonèmes textuels. Cependant, le dictionnaire vocal d'Apple doit être sous forme binaire - je n'ai trouvé aucun XML plist.
- En utilisant
dtrace
en cours d'exécutionsay
, j'ai trouvé des fichiers intéressants ouverts dans /System/Library/PrivateFrameworks/SpeechDictionary.framework/Resources. C'est probablement le dictionnaire de la parole, mais ils sont tous binaires, à l'exception des homophones, qui sont XML. L'ajout d'entrées aux homophones ne fait rien - il est probablement utilisé dans la synthèse vocale. Ils sont également signés par Apple - les modifier peut empêcher certains programmes de fonctionner.- PrefixDictionary
- CartNames
- CartLite
- SymboleDictionnaire
- Homophones
- Il existe des moyens d'ajouter des versions textuelles des éléments de l'interface d'application pour que VoiceOver fonctionne, dont beaucoup sont gratuits pour un développeur, mais il y a des éléments délicats . La norme semble ici être d'utiliser une orthographe phonétique au besoin.
Mes suppositions sont:
say
est une couche légère de code au-dessus du gestionnaire de synthèse vocale. Il serait facile pour les développeurs Apple d'ajouter une option de ligne de commande pour prendre le chemin vers une liste de dictionnaires vocaux pour un mappage de phonèmes alternatif, mais ils ne l'ont pas fait. Cela peut être un projet open source utile pour écrire mieuxsay
.- Skype utilise probablement Speech Synthesis Manager directement, ne laissant aucun crochet pour changer la façon dont les noms de mes amis sont prononcés, à part les épeler phonétiquement, ce qui est stupide.
- La façon la plus simple de créer une version en ligne de commande
say
est la suggestion de JRobert.
Voici ma mise en œuvre rapide, en utilisant la suggestion d'orthographe de Doug Harris:
#!/bin/sh
echo $@ | tr '[A-Z]' '[a-z]' |
sed "s/spolsky/spowlsky/g" |
/usr/bin/say
Enfin, quelques trucs amusants en ligne de commande:
# Apple is weird
sqlite3 /System/Library/PrivateFrameworks/SpeechDictionary.framework/Resources/Tuples .dump
# Get too much information about what files are being opened
sudo dtrace -n 'syscall::open*:entry { printf("%s %s",execname,copyinstr(arg0)); }'
# Just fun
say -v bad "Joel Spolsky Spolsky Spolsky Spolsky Spolsky, Joel Spolsky Spolsky Spolsky Spolsky Spolsky"
echo "scale=1000; 4*a(1)" | bc -l | say
say
utilisée avec-v
?say -v alex 'Spolsky' ; say -v vicki 'Spolsky'; say -v bad 'Spolsky Spolsky Spolsky Spolsky Spolsky Spols'
. La liste des voix se trouve dans les Préférences Système -> Voix -> Synthèse vocale. Le problème concerne la traduction des phonèmes, pas la synthèse vocale. Si vous appelez directement la bibliothèque, vous pouvez définir des phonèmes personnalisés: developer.apple.com/mac/library/documentation/Carbon/Reference/… Recherche sur mon disque pour voir si les développeurs Apple ont utilisé un .plist ...Réponses:
Eh bien, vous pouvez également saisir exactement les phonèmes que vous souhaitez dire. La syntaxe n'est pas si compliquée.
Ex:
[[inpt PHON]] hAAIH.
Cliquez sur ce lien pour en savoir plus: http://developer.apple.com/library/mac/#documentation/UserExperience/Conceptual/SpeechSynthesisProgrammingGuide/Phonemes/Phonemes.html#//apple_ref/doc/uid/TP40004365-CH9-SW1
la source
Votre nouveau mot fonctionnera comme l'ancien, mais avec votre prononciation préférée.
la source
La réponse de @ bruno-carvalho a répondu à cette question pour moi. Mais, j'ai également eu besoin de traquer la balise
[[inpt TEXT]]
pour obtenir la commande say pour revenir à la lecture (synthèse vocale) du texte normalement. Par exemple:say [[inpt PHON]] hAAIH, [[inpt TEXT]] how are you?
Espérons que l'ajout de cela à la réponse aidera les lecteurs suivants de cette question.
la source
Je ne pense pas que vous puissiez. Vous pouvez essayer de définir la voix par défaut sur une voix différente dans les préférences système, ou vous pouvez taper la façon dont vous voulez que les choses soient prononcées. Par exemple, "Salut, Jole Spole sky."
la source
C'est une limitation malheureuse, étant donné qu'Apple semble être la plus grande partie du chemin. Les utilisateurs de VoiceOver peuvent facilement insérer leurs propres prononciations à l'aide de l'utilitaire VoiceOver (Parole-> Prononciation). Mais, les paramètres VoiceOver ne semblent pas s'appliquer à la commande «dire» ou au menu Édition-> Parole -> «Démarrer la parole» dans Safari et d'autres applications fournies par Apple.
la source
Il n'y a aucun moyen d'enseigner au
say
programme à prononcer les mots différemment. Comme suggéré ci-dessus, la façon la plus simple d'obtenir la prononciation que vous voulez est d'ajuster l'orthographe de vos mots jusqu'à ce qu'ils les disent comme vous le souhaitez.la source