【发布时间】:2019-08-01 01:55:47
【问题描述】:
我正在尝试创建一个程序,它会不断地听语音,如果我说某个字符串,它将调用某个函数,例如 if (string) then (function)。我最初尝试使用 Google Speech to Text API,但无法让它持续收听(我什至发现有人说 Google Speech to Text API 不支持持续收听的线程),所以我恢复到 PocketSphinx。 我几乎没有任何代码。我只有你第一次安装和运行 PocketSphinx 时尝试的初始初学者代码(因为我是初学者)。不过,我不想做太多。我创建了自己的 1 个单词的词典,因为我只希望它做一件事,而且它读起来很好。
我遇到的问题实际上是使用它不断侦听的字符串值来运行未来的代码。我不知道我是否必须添加代码以使其在听到一个单词后停止听一会儿,以便它对刚刚听到的单词做某事,或者......另外,我听说过当你比较字符串时,你会使用.equals()而不是==,如果我错了,请纠正我/详细说明。我两种方式都试过了。当我使用== 时,什么也没有发生,它只是不断地听并打印我说的一个词。当我使用.equals() 时,我得到一个AttributeError。
第一种方法:
import os
from pocketsphinx import LiveSpeech, get_model_path
speech = LiveSpeech(
sampling_rate = 16000,
hmm=os.path.join(get_model_path(), 'en-us'),
lm='A:...(some random directory to a .lm file)',
dic='A:...(some random directory to a .dic file)')
for code in speech:
print(code)
if code == "string":
print("It works!")
第二种方法:
import os
from pocketsphinx import LiveSpeech, get_model_path
speech = LiveSpeech(
sampling_rate = 16000,
hmm=os.path.join(get_model_path(), 'en-us'),
lm='A:...(some random directory to a .lm file)',
dic='A:...(some random directory to a .dic file)')
for code in speech:
print(code)
if code.equals(myString): #myString is set to the word I say to it.
print("It works!")
第二种方法错误: 'LiveSpeech' 对象没有属性 'equals'
【问题讨论】:
-
python 字符串没有 equals 方法。如果不确定,可以使用 print(dir("python object"))。在您的情况下 print(dir(code)) 打印出该对象可用的所有方法。
-
是的,我试过了,我认为我没有从中得到任何有用的东西。我很难理解代码中到底发生了什么。例如,说 hmm=os.path.join(get_model_path(), 'en-us) 的部分是什么。
-
我想详细说明我的整体问题,我如何操纵“代码”,如“语音中的代码”。如何在比较中使用它并根据“代码”是什么来调用函数和其他程序?或者,换句话说,为什么我不能用我现在拥有的当前脚本来做到这一点?我的意思是,它识别它,每次我说什么,它都会打印出来,但我不能用它做任何其他事情。
-
hmm="训练模型所在文件夹的路径"。
-
好的,所以我发现了我的问题。我只是错误地将其转换为字符串。如果你把它转换成一个字符串,它就可以工作。
标签: python voice-recognition pocketsphinx