如何使用PocketSphinx语音识别代码的结果?

2024-04-25 18:07:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试创建一个程序,它会不断地监听语音,如果我说某个字符串,它会调用某个函数,例如if(string)then(function)。我最初尝试使用googlespeech-to-Text-API,但无法让它持续监听(我甚至发现一个线程,其中有人说googlespeech-to-Text-API不支持持续监听),所以我恢复使用PocketSphinx。 我几乎没有任何代码。我只是有你第一次安装和运行PocketSphinx时试用的初级代码(因为我是初学者)。不过,我不想做太多。我创建了自己的字典,里面有一大堆单词,因为我只想让它做一件事,而且它读起来很好。你知道吗

我遇到的问题实际上是使用它不断侦听的字符串值来运行未来的代码。我不知道我是否需要添加代码,让它在听到一个单词后停止听一会儿,以便它对刚刚听到的单词做些什么,或者。。。。另外,我听说在比较字符串时,应该使用.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”


Tags: topath方法代码importgetmodelos