首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将声音转换为python中的音素列表

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

Stack Overflow用户
提问于 2015-06-08 09:02:57
回答 3查看 17.9K关注 0票数 16

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

也就是说,从数字信号到录音所用的音素列表的实际方法和/或代码。

例:

代码语言:javascript
复制
lPhonemes = audio_to_phonemes(aSignal)

例如

代码语言:javascript
复制
from scipy.io.wavfile import read
iSampleRate, aSignal = read(sRecordingDir)

aSignal = #numpy array for the recorded word 'hear'
lPhonemes = ['HH', 'IY1', 'R']

我需要函数audio_to_phonemes

并不是所有的声音都是语言单词,所以我不能仅仅使用使用google的东西。

编辑

我不想让声音变成文字,我要声音指向音素。大多数库似乎都没有输出这一点。您推荐的任何库都需要能够输出声音组成的音素的有序列表。它需要在蟒蛇身上。

我也想知道音素的声音过程是如何工作的。如果不是为了实现目的,那么是出于利益考虑。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-06-08 17:15:52

准确的音素识别并不容易实现,因为音素本身的定义相当松散。即使在良好的音频,今天最好的系统有大约18%的音素错误率(你可以检查LSTM的结果在TIMIT上由Alex出版)。

在CMUSphinx中,Python中的音素识别如下所示:

代码语言:javascript
复制
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()])

为了运行这个示例,您需要从github签出最新的袖珍狮身人面像。结果应该如下所示:

代码语言:javascript
复制
  ('Best phonemes: ', ['SIL', 'G', 'OW', 'F', 'AO', 'R', 'W', 'ER', 'D', 'T', 'AE', 'N', 'NG', 'IY', 'IH', 'ZH', 'ER', 'Z', 'S', 'V', 'SIL'])

也请参阅wiki页面

票数 20
EN

Stack Overflow用户

发布于 2015-06-08 09:06:50

我需要创建函数audio_to_phonemes

你基本上是说:

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

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

票数 8
EN

Stack Overflow用户

发布于 2020-10-09 01:54:53

看看异特龙,一个通用的(~2000 lang)电话识别器,可以给你IPA音素。在一个样例wave文件中,我下载了最新的型号,并在Python3中尝试了这一点。

代码语言:javascript
复制
$ python -m allosaurus.bin.download_model -m latest
$ python -m allosaurus.run -i sample.wav
æ l u s ɔ ɹ s
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30705028

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档