我正在寻找一种算法来确定实时音频输入是否与144个给定(和舒适的不同)音素对中的一个匹配.
最好是完成工作的最低级别.
我正在为iPhone/iPad开发激进/实验性音乐培训软件.
我的音乐系统包括12个辅音音素和12个元音音素,在此演示.这使得144个可能的音素对.为响应视觉刺激,学生必须唱出正确的音素对'laa duu bee'等.
我已经对此做了大量研究,看起来我最好的选择是使用iOS Sphinx包装器之一(iPhone App>添加语音识别? 是我找到的最好的信息来源).但是,我无法看到我如何调整这样的软件包,任何有这些技术经验的人都能给出所需步骤的基本概要吗?
用户是否需要进行培训?我想不会,因为它是如此基本的任务,与数千个单词和更大更微妙的音素基础的完整语言模型相比.然而,让用户训练12个音素对是可接受的(不理想的):{consonant1 + vowel1,consonant2 + vowel2,...,consonant12 + vowel12}.完整的144将是太累赘.
有更简单的方法吗?我觉得使用功能齐全的连续语音识别器正在使用大锤来破解坚果.使用可以解决问题的最小技术会更加优雅.
所以我真的在寻找任何识别音素的开源软件.
PS我需要一个可以实时运行的解决方案.因此,即使他们正在唱这个音符,首先它会眨眼,以说明它拾取了所唱的音素对,然后发出光线来说明他们是否正在唱出正确的音符音高.
你知道那些技术爱好者记录某人声音的电影,他们的软件会把它分成音素吗?然后,他们可以使用哪个键入任何短语,并使其看起来好像目标正在说出来?
该软件是否存在于API版本中?我甚至都不知道谷歌会怎么做.
我正在使用UUID,但它们不是特别好读,写和通信.所以我想对它们进行编码.我可以使用base64或base32,但无论如何它们都不容易:base64有大写字母和符号.Base32有点好,但你仍然可以获得笨拙的东西.
我想知道是否有一种漂亮而干净的方法将数字编码成可口的音素,因此要获得更好的可读性并希望有点压缩.
如何将任何声音信号转换为列表音素?
即实际的方法和/或代码,从数字信号到录音的音素列表.
例如:
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中.
我也想知道声音到音素的过程是如何工作的.如果不是为了实现目的,那么为了利益起见.
我正在使用卡内基梅隆大学的发音词典检测Python中的押韵,并且想知道:我如何估计两个单词之间的音素相似度?换句话说,是否有一种算法可以识别"手"和"计划"比"手"和"薯条"更接近押韵的事实?
一些上下文:首先,我愿意说两个单词押韵,如果它们的主要重读音节和所有后续音节相同(如果你想在Python中复制,则为c06d):
def create_cmu_sound_dict():
final_sound_dict = {}
with open('resources/c06d/c06d') as cmu_dict:
cmu_dict = cmu_dict.read().split("\n")
for i in cmu_dict:
i_s = i.split()
if len(i_s) > 1:
word = i_s[0]
syllables = i_s[1:]
final_sound = ""
final_sound_switch = 0
for j in syllables:
if "1" in j:
final_sound_switch = 1
final_sound += j
elif final_sound_switch == 1:
final_sound += j
final_sound_dict[word.lower()] = final_sound
return final_sound_dict
Run Code Online (Sandbox Code Playgroud)
如果我然后跑
print cmu_final_sound_dict["hands"]
print cmu_final_sound_dict["plans"]
Run Code Online (Sandbox Code Playgroud)
我可以看到手和计划听起来非常相似.我可以自己估计这种相似性,但我想我应该问:是否有复杂的算法可以将数学值与这种声音(或听觉)相似度联系起来?也就是说,可以使用哪些算法或包来对两个单词之间的音素相似度进行数学计算?我意识到这是一个很大的问题,但我非常感谢其他人可以就这个问题提出的建议.
我正在寻找一个免费或开源的押韵数据库.
我找到了CMU发音"数据库"及其系列应用程序,但我无法理解它们或弄清楚数据的来源.
我需要一个带有单词及其音素的简单文本文件.
这里有人知道我在哪里找到一个或我从哪里开始从CMU文件中获取这样的列表?
问题是我想用C#语言获取音频语音的音素.假设你有一个像"x.wav"这样的音频文件,上面写着"你好亲爱的Shamim".我想提取演讲的所有音素和他们的相对时间.如下图所示:

我使用了System.Speech库(两者recognition和synthesis命名空间),但我找不到我想要的东西.现在别搞错了!我不想要句子的语句"亲爱的Shamim",我想从未知的音频输入中提取音素和英语句子.我试过System.Speech.Recognition但它试图从音频文件中提取出来的话,而不是手机!正如你可能猜到的那样,30%的错误!;)
我知道SOUNDEX和(双)Metaphone,但这些不让我测试整个单词的相似性 - 例如"Hi"听起来非常类似于"Bye",但这两种方法都会标记它们完全不同.
Ruby中是否有任何库或您知道的任何方法能够确定两个单词之间的相似性?(布尔值是/不相似,或数字40%相似)
编辑:如果有一种简单的方法可以"插入"不同的方言或语言,可以获得额外奖励积分!