単語 (主に名前) を Arpabet 音声表記に変換できる Python のライブラリはありますか?
バーベル -> B AA1 RB AH0 LZ
バーベキュー -> B AA1 RB IH0 KY UW2
バーベキュー -> B AA1 RB IH0 KY UW2 D
バーベキュー -> B AA1 RB IH0 KY UW2 IH0 NG
バーベキュー -> B AA1 RB IH0 KY UW2 Z
単語 (主に名前) を Arpabet 音声表記に変換できる Python のライブラリはありますか?
バーベル -> B AA1 RB AH0 LZ
バーベキュー -> B AA1 RB IH0 KY UW2
バーベキュー -> B AA1 RB IH0 KY UW2 D
バーベキュー -> B AA1 RB IH0 KY UW2 IH0 NG
バーベキュー -> B AA1 RB IH0 KY UW2 Z
あなたが欲しいのは、「文字から音へ」または「書記素から音素へ」エンジンとさまざまに呼ばれています。すべてのテキスト読み上げシステムに1つを含む、いくつかの周りがあります。
私は通常、米国以外のアクセントを扱います。そのためにespeakを使用します。アルパベットを直接出力することはありませんが(とにかく米国の音に制限されています)、アメリカのアクセントを試すために同軸ケーブルを使用して、後でIPAからアルパベットに変換することができます。
>>> from subprocess import check_output
>>> print check_output(["espeak", "-q", "--ipa",
'-v', 'en-us',
'hello world']).decode('utf-8')
həlˈoʊ wˈɜːld
espeak自身の電話表現(ASCII)-x
ではなく、次のように使用できます。--ipa
>>> check_output(["espeak", "-q", "-x", '-v', 'en-us', 'hello world'])
h@l'oU w'3:ld
ただし、arpabetへの変換は、キャラクターのルックアップほど簡単ではありません。たとえば、「tʃ」は、貪欲な変換で得られる「T SH」ではなく、「CH」に変換する必要があります(ただし、「swˈɛtʃɑːp」のような奇妙な場合は「sweatshop」を除きます)。
コーパスがインストールされた状態でnltkを使用するcmudict
:
arpabet = nltk.corpus.cmudict.dict()
for word in ('barbels', 'barbeque', 'barbequed', 'barbequeing', 'barbeques'):
print(arpabet[word])
収量
[['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']]
cmudict
コーパスをPythonインタープリターにインストールするには、次のように入力します。
>>> import nltk
>>> nltk.download()
Use GUI to install
corpora>cmudict
これを行うには、私のリスナー プロジェクトの小さなユーティリティを使用できます。内部で espeak を使用して (IPA を生成する)、CMU 辞書から抽出されたマッピングを使用して、生成された IPA に一致する一連の ARPABet マッピングを生成します。たとえば、次のようになります。
$ listener-arpa
we are testing
we
W IY
are
ER
AA
testing
T EH S T IH NG
これにより、約 45% の確率で CMU 辞書で完全一致が生成されます (CMU/Wikipedia の文書化された対応を使用して約 36% を得ました) 一方で、単語ごとに約 3 つの一致が生成されます (平均)。とは言っても、約 99% の確率で「ほぼ一致」しています。つまり、毎回手書きでマークアップした単語と正確に一致するとは限りませんが、通常は数音素だけずれています。
$ sudo apt-get install espeak
$ pip install -e git+https://github.com/mcfletch/listener.git#egg=listener
cmu発音辞書を取得すると、 nltkを使用し
て、このような辞書自体から任意の単語に関連付けられたアルパベットの発音表記を取得できます。
>>> 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'])