Wie können Sie mit dem Befehl von OS X IPA-Zeichen sprechen lassen?

1615
Benjamin Nolan

Ich habe ungefähr 200 Zeilen Beowulf, die ein paar Freunde von mir und ich vor ungefähr anderthalb Jahren in das Internationale Phonetische Alphabet aufgenommen haben. Zu der Zeit war eines der Tools, mit denen wir die Aussprache wieder überprüften, der sayBefehl von OS X.

Hier sind die ersten sechs Zeilen nach der Klaeber-Ausgabe des in IPA konvertierten Gedichts, die ich sicher sayrichtig auslesen kann, weil ich es selbst auf dem MacBook ausgeführt habe, von dem ich genau diese Frage schreibe:

hwæt we ˈɡɑːrˌdenɑ in ˈjæːɑrdɑɣum ˈðeːodˌkyniŋɡɑ θrymː jeˈfruːnon huː ðɑ æðelɪŋɡɑs ˈelːen ˈfremːedon! oft ʃyld ʃefiŋ ˈʃæɑðenɑ θræːɑtum, ˈmɑniɣum mæjθum ˈmeːodusetlə ovˈtæːax, 'ejzudə eːorɑs, syðːɑnærest wæːɑrð 

Versuchen Sie es jetzt so gut wie möglich, ich kann es nicht mehr schaffen, eine der obigen Zeilen richtig auszulesen. Ich habe alle englischsprachigen Stimmen ausprobiert (vor 10.5 Stimmen sind komisch ), aber die Stimmen, mit denen ich vorher sicher gearbeitet habe, wie Fiona und Kate, scheinen die IPA-Zeichen jetzt völlig zu ignorieren.

Dies sind die etwas un-DRY-y-Testbefehle, die ich diesmal verwendet habe:

say --rate=150 --voice=Fiona "/hwæt we ˈɡɑːrˌdenɑ in ˈjæːɑrdɑɣum/" say --voice=Fiona "/hwæt we ˈɡɑːrˌdenɑ in ˈjæːɑrdɑɣum/" say --rate=150 --voice=Fiona "hwæt we ˈɡɑːrˌdenɑ in ˈjæːɑrdɑɣum" say --voice=Fiona "hwæt we ˈɡɑːrˌdenɑ in ˈjæːɑrdɑɣum" say --voice=Fiona hwæt we ˈɡɑːrˌdenɑ in ˈjæːɑrdɑɣum say --voice=Fiona /hwæt we ˈɡɑːrˌdenɑ in ˈjæːɑrdɑɣum/ 

Sie überspringen jedoch alle IPA-Zeichen vollständig, mit Ausnahme von æ, das manchmal ausgesprochen wird. makes sicherlich nie mehr in die Synthese, was es beim letzten Mal definitiv getan hat.

Fehlt mir etwas oder ist es möglich, dass die IPA-Funktion in einem kürzlich durchgeführten Update entfernt wurde? Ich bin mir ziemlich sicher, dass wir Mavericks verwendet haben, aber es könnte auch Schneeleopard gewesen sein.

5
Das Erraten von Verweisen auf Zitate aus dem Zweiten Weltkrieg wird in Fragen missbilligt, @ncdownpat. ;) Benjamin Nolan vor 10 Jahren 0
Ich habe noch ein bisschen darüber nachgedacht, und ich habe meinen Laptop ausgehöhlt und OS X zu Beginn dieses Jahres von Grund auf neu installiert. Ich nehme an, es ist möglich, dass es in Leopard oder Snow Leopard etwas gab, das diese Funktion unterstützt, die in einer späteren Version entfernt wurde, als ob X11 zwischen 10.6 und 10.7 entfernt wurde. Wäre aber eine Schande. Es sieht so aus, als ob es besser wäre, wenn ich meine eigenen Haken in die TTS-Engine schreibe, um altes Englisch zu sprechen. : / Benjamin Nolan vor 10 Jahren 0

2 Antworten auf die Frage

6
OldPeculier

Hier ist ein Ruby - Skript, das eine Reihe von Unicode IPA Text nimmt und wandelt sie in OS X sayBefehl Laut Syntax .

Diesen Ruby-Code in eine Datei schreiben - nennen wir es ipa2say.rb. Machen Sie die Datei ausführbar (dh chmod u+x ipa2say.rb). Führen Sie die ausführbare Datei aus und leiten Sie IPA-Text an. Heraus kommt ein ASCII-Lauttext.

Dann lauf saymit der [[inpt PHON]]Direktive.

Also ein Beispiel. sayAngenommen, Sie möchten den IPA-Text "ˌɪntərˈnæʃənəl fəˈnɛtɪk ˈælflbɛt fəˈrɛvər". Von der Kommandozeile aus:

echo "ˌɪntərˈnæʃənəl fəˈnɛtɪk ˈælfəˌbɛt fəˈrɛvər" | ./ipa2say.rb 

Es wird ausspucken:

IXntrnAESnl fAXnEHtIXk AElfbEHt frEHvr 

Sie laufen dann: say "[[inpt PHON]]IXntrnAESnl fAXnEHtIXk AElfbEHt frEHvr"

Hier ist das Skript.

#!/usr/bin/ruby -w  map = { 'æ' => 'AE', 'eɪ' => 'EY', 'ɑ' => 'AO', 'əˈ' => 'AX', 'i' => 'IY', 'ɛ' => 'EH', 'ɪ' => 'IH', 'aɪ' => 'AY', 'ɪ' => 'IX', 'ɑ' => 'AA', 'u' => 'UW', 'ʊ' => 'UH', 'ʌ' => 'UX', 'oʊ' => 'OW', 'aʊ' => 'AW', 'ɔɪ' => 'OY', 'b' => 'b', 'ʧ' => 'C', 'd' => 'd', 'ð' => 'D', 'f' => 'f', 'g' => 'g', 'h' => 'h', 'ʤ' => 'J', 'k' => 'k', 'l' => 'l', 'm' => 'm', 'n' => 'n', 'ŋ' => 'N', 'p' => 'p', 'r' => 'r', 's' => 's', 'ʃ' => 'S', 't' => 't', 'θ' => 'T', 'v' => 'v', 'w' => 'w', 'j' => 'y', 'z' => 'z', 'ʒ' => 'Z', 'ɜ' => '', ' ' => ' ', 'ˈ' => '' }  text = ARGF.read  substring = ''  text.split("").each do |c|  substring << c  if substring.length == 2 if map.has_key? substring print map[ substring ] else front = substring[0] if map.has_key? front print map[ front ] end back = substring[1] if map.has_key? back print map[ back ] end end  substring = '' end end 
Das ist großartig, obwohl es erwähnenswert ist, dass [[inpt PHON]] nur von Stimmen unterstützt wird, die in OS X vor 10.6 waren. Es ist etwas ärgerlich, da sie eine viel geringere Qualität als die modernen Stimmen haben, und es wäre schön, wenn Sie zum Beispiel die Daten in Fiona eingeben könnten. Naja! Benjamin Nolan vor 9 Jahren 3
Ja, es funktioniert nicht mit den neueren Stimmen. adib vor 9 Jahren 0
Ich habe diese Liste der Stimmen vor Version 10.6 gefunden: http://alvinalexander.com/blog/post/mac-os-x/mac-os-x-text-speech-voices-speaking-using-applescript Der Nicht-Gimmicky Eines sind: Agnes, Kathy, Princess, Vicki, Victoria, Bruce, Fred, Junior, Ralph. Ich habe noch nicht geprüft, welche davon eigentlich mit IPA funktioniert. tobych vor 8 Jahren 0
1
Woody

Versuchen Sie es mit Klammern / Schrägstrichen um jedes Wort herum, wenn es nicht mit einer Phrase funktioniert. Das funktioniert nicht:

say "/hwæt we ˈɡɑːrˌdenɑ in ˈjæːɑrdɑɣum/" 

Aber das scheint zu sein:

say "/hwæt/ /we/ /ˈɡɑːrˌdenɑ/ /in/ /ˈjæːɑrdɑɣum/" 

Eckige Klammern funktionieren auch:

say "[huː] [ðɑ] [æðelɪŋɡɑs] [ˈelːen] [ˈfremːedon]" 

Viel Glück!

(Bearbeitet, weil ich es noch einmal gelesen habe und gesehen habe, dass Sie die Schrägstriche um den gesamten Satz versucht haben.)

Hmm… Ich bin nicht sicher, ob es tatsächlich als IPA gelesen wird. Es klingt, als ob alle nicht-englischen Zeichen beim Ausführen dieser Befehle übersprungen werden. Wenn ich "-v Alex" / hwæt / / we / / ˈɡɑːrˌdenɑ / / in / / ˈjæːɑrdɑɣum / "" sage, heißt es "Weh wiardena yeardaou">. <Danke, dass Sie es versuchen. :) Benjamin Nolan vor 9 Jahren 1