2012-08-11 5 views
5

Gibt es eine Bibliothek in Python, die Wörter (hauptsächlich Namen) in Arpabet phonetische Transkription umwandeln kann?Python Arpabet phonetische Transkription

barbels -> B AA1 RB AH0 LZ

BARBEQUE -> B AA1 RB IH0 KY UW2

Barbequed -> B AA1 RB IH0 KY UW2 D

barbequeing -> B AA1 RB IH0 KY UW2 IH0 NG

Barbecues -> B AA1 RB IH0 KY UW2 Z

+0

Es spielt keine Arpabet haben, aber wenn Sie für fundierte Analyse der Regel suchen, Sie vielleicht einen Blick auf http://pypi.python.org/pypi/Fuzzy/ – Amber

Antwort

5

Holen Sie sich das cmu pronouncing dictionary und dann können Sie nltk benutzen Sie die zugehörige
arpabet Lautschrift für jedes Wort aus diesem Wörterbuch selbst wie diese

>>> entries = nltk.corpus.cmudict.entries() 
>>> len(entries) 
127012 
>>> for entry in entries[39943:39951]: 
...  print entry 
... 
('fir', ['F', 'ER1']) 
('fire', ['F', 'AY1', 'ER0']) 
('fire', ['F', 'AY1', 'R']) 
('firearm', ['F', 'AY1', 'ER0', 'AA2', 'R', 'M']) 
('firearm', ['F', 'AY1', 'R', 'AA2', 'R', 'M']) 
('firearms', ['F', 'AY1', 'ER0', 'AA2', 'R', 'M', 'Z']) 
('firearms', ['F', 'AY1', 'R', 'AA2', 'R', 'M', 'Z']) 
('fireball', ['F', 'AY1', 'ER0', 'B', 'AO2', 'L']) 
+1

nehmen, die nützlich ist, aber ich Hauptsächlich brauche ich es, Wörter auszusprechen, die nicht auf der Liste der Einträge stehen, zumindest bekomme ich eine Liste von Silben zusammen mit ihrer Transkription, so dass ich diese Silben in neuen Wörtern verwenden kann ... – hmghaly

8

Mit nltk mit dem cmudict Korpus installiert:

arpabet = nltk.corpus.cmudict.dict() 
for word in ('barbels', 'barbeque', 'barbequed', 'barbequeing', 'barbeques'): 
    print(arpabet[word]) 

Ausbeuten

[['B', 'AA1', 'R', 'B', 'AH0', 'L', 'Z']] 
[['B', 'AA1', 'R', 'B', 'IH0', 'K', 'Y', 'UW2']] 
[['B', 'AA1', 'R', 'B', 'IH0', 'K', 'Y', 'UW2', 'D']] 
[['B', 'AA1', 'R', 'B', 'IH0', 'K', 'Y', 'UW2', 'IH0', 'NG']] 
[['B', 'AA1', 'R', 'B', 'IH0', 'K', 'Y', 'UW2', 'Z']] 

zu insta ll die cmudict corpus in der Python-Interpreter Typ:

>>> import nltk 
>>> nltk.download() 
Use GUI to install 
corpora>cmudict 
+1

Das ist auch nützlich, aber es tut nicht t für Wörter außerhalb dieses Wörterbuchs arbeiten, gibt es eine Weise, das arpabet für irgendeine Schnur zu finden? oder zumindest eine Möglichkeit, die Zeichenfolge zu silben und nach Silben im Wörterbuch zu suchen? – hmghaly

+0

So etwas könnte existieren, aber ich weiß es nicht. – unutbu

9

Was Sie wollen, verschiedentlich genannt wird „Brief klingen“ oder „Graphem-Phonem“ Motor. Es gibt einige wenige, einschließlich eines in jedem Text-zu-Sprache-System.

Ich behandle normalerweise nicht-US Akzente, für die ich espeak verwende. Es gibt nicht direkt arpabet aus (was ohnehin auf US-Sounds beschränkt ist), aber Sie können es sich überreden, einen amerikanischen Akzent zu verwenden und später von IPA zu arpabet zu konvertieren.

>>> from subprocess import check_output 
>>> print check_output(["espeak", "-q", "--ipa", 
         '-v', 'en-us', 
         'hello world']).decode('utf-8') 
həlˈoʊ wˈɜːld 

können Sie -x verwenden, anstatt --ipa für espeak eigene Telefon Darstellung (es ist ascii):

>>> check_output(["espeak", "-q", "-x", '-v', 'en-us', 'hello world']) 
[email protected]'oU w'3:ld 

Konvertierung ist arpabet nicht ganz so einfach wie ein Charakter Nachschau obwohl; zum Beispiel sollte "tʃ" in "CH" umgewandelt werden, nicht das "T SH", das dir eine gierige Konvertierung geben würde (außer in seltsamen Fällen wie "swɛtʃɑːp" für "Sweatshop").

+0

Das sieht nach der relevantesten Frage des Antwort-OP aus, aber können Sie bitte ausführlich erklären, wie man Python benutzt, um espeak zu benutzen. Ich habe 'espeak-1.48.04-source' heruntergeladen, aber es hat eine Reihe von Ordnern, und ich bin mir nicht sicher, wie man den obigen Python-Code anwendet, ich verstehe, dass es eine Frage ist, die vor langer Zeit beantwortet wurde. – KubiK888

+0

@ vrplumbers Antwort hat (zum Zeitpunkt des Schreibens) die wenigsten Stimmen, aber sein 'Listener' Projekt behandelt die Konvertierung von espeak output zu ARPAbet. –

3

Sie können ein kleines Dienstprogramm aus meinem Hörer-Projekt verwenden, um dies zu tun. Es verwendet espeak unter der Decke (zur Erzeugung IPA), dann eine Abbildung aus dem CMU-Wörterbuch extrahiert verwendet den Satz von ARPABet Zuordnungen zu erzeugen, die die IPA erzeugt, zum Beispiel passen könnte:

$ listener-arpa 
we are testing 
we 
     W IY 
are 
     ER 
     AA 
testing 
     T EH S T IH NG 

dass produziert genaue Anzünder auf dem CMU-Wörterbuch etwa 45% der Zeit (ich habe etwa 36% mit der dokumentierten Korrespondenz in CMU/Wikipedia), während ~ 3 Übereinstimmungen pro Wort (durchschnittlich) produziert. Das heißt, wir sehen ungefähr 99% der Zeit eine "enge Übereinstimmung", das heißt, obwohl wir das handmarkierte Wort nicht jedes Mal genau zuordnen können, sind wir im Allgemeinen nur von wenigen Phonemen abwesend.

$ sudo apt-get install espeak 
$ pip install -e git+https://github.com/mcfletch/listener.git#egg=listener 
Verwandte Themen