将声音转换为python中的音素列表

Rom*_*man 11 python signal-processing voice-recognition phoneme

如何将任何声音信号转换为列表音素?

即实际的方法和/或代码,从数字信号到录音的音素列表.
例如:

lPhonemes = audio_to_phonemes(aSignal)
Run Code Online (Sandbox Code Playgroud)

例如

from scipy.io.wavfile import read
iSampleRate, aSignal = read(sRecordingDir)

aSignal = #numpy array for the recorded word 'hear'
lPhonemes = ['HH', 'IY1', 'R']
Run Code Online (Sandbox Code Playgroud)

我需要这个功能 audio_to_phonemes

并非所有声音都是语言单词,因此我不能仅使用使用Google API的内容.

编辑
我不想要音频文字,我想要音频到音素.大多数图书馆似乎没有输出.您推荐的任何库都需要能够输出声音组成的有序音素列表.它需要在python中.

我也想知道声音到音素的过程是如何工作的.如果不是为了实现目的,那么为了利益起见.

Nik*_*rev 14

准确的音素识别并不容易归档,因为音素本身的定义非常松散.即使在良好的音频中,今天最好的系统也有大约18%的音素错误率(你可以检查由Alex Graves发布的TIMIT上的LSTM-RNN结果).

在CMUSphinx中,Python中的音素识别是这样完成的:

from os import environ, path

from pocketsphinx.pocketsphinx import *
from sphinxbase.sphinxbase import *

MODELDIR = "../../../model"
DATADIR = "../../../test/data"

# Create a decoder with certain model
config = Decoder.default_config()
config.set_string('-hmm', path.join(MODELDIR, 'en-us/en-us'))
config.set_string('-allphone', path.join(MODELDIR, 'en-us/en-us-phone.lm.dmp'))
config.set_float('-lw', 2.0)
config.set_float('-beam', 1e-10)
config.set_float('-pbeam', 1e-10)

# Decode streaming data.
decoder = Decoder(config)

decoder.start_utt()
stream = open(path.join(DATADIR, 'goforward.raw'), 'rb')
while True:
  buf = stream.read(1024)
  if buf:
    decoder.process_raw(buf, False, False)
  else:
    break
decoder.end_utt()

hypothesis = decoder.hyp()
print ('Phonemes: ', [seg.word for seg in decoder.seg()])
Run Code Online (Sandbox Code Playgroud)

你需要从github检查最新的pocketsphinx才能运行这个例子.结果应如下所示:

  ('Best phonemes: ', ['SIL', 'G', 'OW', 'F', 'AO', 'R', 'W', 'ER', 'D', 'T', 'AE', 'N', 'NG', 'IY', 'IH', 'ZH', 'ER', 'Z', 'S', 'V', 'SIL'])
Run Code Online (Sandbox Code Playgroud)

另请参阅维基页面


ruo*_*tsi 9

看看Allosaurus,这是一个通用(~2000 lang)电话识别器,可以为您提供 IPA 音素。在示例波形文件中,我确实下载了最新模型并在 Python3 中进行了尝试。

\n
$ python -m allosaurus.bin.download_model -m latest\n$ python -m allosaurus.run -i sample.wav\n\xc3\xa6 l u s \xc9\x94 \xc9\xb9 s\n
Run Code Online (Sandbox Code Playgroud)\n


Mar*_*ler 5

我需要创建函数audio_to_phonemes

您基本上是在说:

我需要重新实施40年的语音识别研究

您不应该自己实现这一目标(除非您将要成为语音识别领域的教授并采用一种革命性的新方法),而应该使用许多现有框架之一。看看狮身人面像/口袋狮身人面像!

  • 既然这是工作的一部分,那么:看一下现有的语音识别软件框架。它们不是整体的,而是具有语音模型,这些模型通常会向它们提供音素列表(当然,这取决于各个框架)。 (3认同)
  • 我真的不想重新发明轮子,我想实现现有的软件。`audio_to_phonemes` 应该可以做到这一点。尽管我找不到任何可以接收声音并传递给我音素并停在那里的东西。我不想要*语音识别*。我想要音频到音素。 (2认同)