Der say
Befehl von OS X ist für einige Aufgaben nützlich (z. B. die Benachrichtigung von Skype, wenn ein Kontakt online geschaltet wird), spricht jedoch einige Namen falsch aus. Gibt es eine Möglichkeit zu lehren say
, ein Wort anders auszusprechen?
Versuchen Sie zum Beispiel:
say "Hi, Joel Spolsky"
Das "alte" klingt eher nach "Ball" als nach "alt". Ich möchte eine Ausnahme hinzufügen, die "Spolsky so aussprechen" sagt, anstatt zu versuchen, neue Sprachregeln zu lehren. Ich wette, es gibt einen Weg, wie Apple "iphone" aussprechen kann.
Update - Nach einigen Recherchen habe ich Folgendes gelernt:
- Text-to-Speech wird aufgeteilt, indem der Text in Phoneme umgewandelt wird. Anschließend werden die Phoneme mithilfe einer Stimme in Audio umgewandelt. Das Ändern der Stimme wirkt sich nicht auf die Phoneme aus.
- Der Sprachsynthese-Manager verfügt über einige Funktionen zum Umwandeln von Text in Phoneme und eine Methode zum Registrieren eines Sprachwörterbuchs , mit dem neue Text-Phonem-Zuordnungen hinzugefügt werden. Apples Sprachwörterbuch muss jedoch in binärer Form vorliegen - ich habe kein plist-XML gefunden.
- Unter Verwendung
dtrace
beim Laufensay
, fand ich einige interessante in /System/Library/PrivateFrameworks/SpeechDictionary.framework/Resources geöffneten Dateien. Dies ist wahrscheinlich das Sprachwörterbuch, aber sie sind alle binär, mit Ausnahme von Homophones (XML). Das Hinzufügen von Einträgen zu Homophones hat keine Auswirkung - es wird wahrscheinlich in der Sprachausgabe verwendet. Sie sind auch von Apple mit Code signiert. Wenn Sie sie ändern, funktionieren möglicherweise einige Programme nicht mehr.- PrefixDictionary
- CartNames
- CartLite
- SymbolDictionary
- Homophone
- Es gibt Möglichkeiten , Textversionen von Elementen der Anwendungsoberfläche hinzuzufügen, damit VoiceOver funktioniert. Ein Großteil davon erhält ein Entwickler kostenlos, aber es gibt knifflige Dinge . Hier scheint der Standard darin zu bestehen, nach Bedarf eine phonetische Schreibweise zu verwenden.
Meine Vermutungen sind:
say
ist eine leichte Codeschicht über dem Sprachsynthese-Manager. Es wäre für die Apple-Entwickler einfach, eine Befehlszeilenoption hinzuzufügen, um den Pfad zu einer Sprachwörterbuch-Liste für die alternative Phonemzuordnung zu nehmen, aber sie taten es nicht. Es kann ein nützliches Open-Source-Projekt sein, um ein besseres zu schreibensay
.- Skype verwendet wahrscheinlich den Sprachsynthese-Manager direkt und lässt keine Haken, um die Aussprache der Namen meiner Freunde zu ändern, außer sie phonetisch zu buchstabieren, was albern ist.
- Der einfachste Weg, eine Kommandozeilenversion zu
say
erstellen, ist der Vorschlag von JRobert.
Hier ist meine schnelle Implementierung unter Verwendung des Schreibvorschlags von Doug Harris:
#!/bin/sh
echo $@ | tr '[A-Z]' '[a-z]' |
sed "s/spolsky/spowlsky/g" |
/usr/bin/say
Zum Schluss noch ein paar lustige Kommandozeilen-Sachen:
# 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
mit verwendet-v
?say -v alex 'Spolsky' ; say -v vicki 'Spolsky'; say -v bad 'Spolsky Spolsky Spolsky Spolsky Spolsky Spols'
. Die Liste der Stimmen finden Sie in den Systemeinstellungen -> Sprache -> Text to Speech. Das Problem liegt bei der Phonemübersetzung, nicht bei der Sprachsynthese. Wenn Sie die Bibliothek direkt anrufen, können Sie benutzerdefinierte Phoneme festlegen: developer.apple.com/mac/library/documentation/Carbon/Reference/… Durchsuchen meiner Festplatte, um festzustellen, ob die Apple-Entwickler eine .plist verwendet haben ...Antworten:
Sie können auch genau die Phoneme eingeben, die Sie sagen möchten. Die Syntax ist nicht so kompliziert.
Ex:
PHON hAAIH.
Weitere Informationen finden Sie unter folgendem Link: http://developer.apple.com/library/mac/#documentation/UserExperience/Conceptual/SpeechSynthesisProgrammingGuide/Phonemes/Phonemes.html#//apple_ref/doc/uid/TP40004365-CH9-SW1
quelle
Ihr neues Wort funktioniert wie das alte Wort, aber mit Ihrer bevorzugten Aussprache.
quelle
Die Antwort von @ bruno-carvalho beantwortete diese Frage für mich. Aber ich musste auch nach dem Tag suchen
[[inpt TEXT]]
, damit der Befehl say wieder normal zum Lesen (Sprachsynthetisieren) von Text zurückkehrte. Beispielsweise:say [[inpt PHON]] hAAIH, [[inpt TEXT]] how are you?
Wenn Sie dies zur Antwort hinzufügen, werden hoffentlich nachfolgende Leser dieser Frage davon profitieren.
quelle
Ich glaube nicht, dass du kannst. Sie können versuchen, die Standardstimme in den Systemeinstellungen auf eine andere zu setzen, oder Sie können eingeben, wie die Aussprache erfolgen soll. Zum Beispiel "Hallo, Jole Spole Himmel."
quelle
Dies ist eine unglückliche Einschränkung, da Apple anscheinend den größten Teil des Weges dorthin zurücklegt. Benutzer von VoiceOver können mithilfe des VoiceOver-Dienstprogramms (Sprache-> Aussprache) problemlos ihre eigenen Aussprachen einfügen. Die VoiceOver-Einstellungen scheinen jedoch nicht für den Befehl "say" oder das Menü "Bearbeiten-> Sprache -> Sprache starten" in Safari und anderen von Apple bereitgestellten Anwendungen zu gelten.
quelle
Es gibt keine Möglichkeit, dem
say
Programm beizubringen, Wörter anders auszusprechen. Wie oben vorgeschlagen, ist die einfachste Möglichkeit, die gewünschte Aussprache zu erhalten, die Rechtschreibung Ihrer Wörter anzupassen, bis sie die gewünschte Bedeutung haben.quelle