Python 语音识别 - Sphinx

问题描述 投票:0回答:2

我正在制作一个简单的语音识别程序,使我能够通过语音命令控制我的机器人。我只希望程序查找某些单词并且速度相对较快。我的项目基于 Micheal Reeves“我制作了一个机器人,它可以在我的眼睛中发射激光”,并尝试创建类似于他视频中看到的语音命令的东西。

我遇到的问题是 sphinx 很快,但是(编辑:不准确)。除此之外,当我启用关键字时,结果会变得很奇怪。如果我说命令 shutdown,输出将是:

"three  nine  one  four  five  eight  two  one  eight  nine  three  four  two  six  zero  eight  nine  two  one  six  four  eight  seven  one  three  four  nine  five  eight  two  eight 
four  five  nine  three  one  two  eight  six  nine  three  five  seven  two  zero  one  nine  five  eight  two  four  four  nine  one  five  eight  three  two  six  four  two  zero  seven  one  nine  three  four  five  eight  two  five  one  three  four  eight  two  six  eight  zero  one  three  four  five  two  seven  eight  eight  three  nine  five  two  four  eight  one  two  eight  two  eight  two  eight  command shutdown  command  eight  one  four  three  eight  two  two  eight "

我不确定要解决这个问题,我尝试做recognise_google,但它更准确,但速度非常慢,我希望启用关键字,以便它只检查是否是一个单词集合,然后将其打印在屏幕上我做到了。

我遇到的另一个问题是listen_in_background()函数。我似乎无法让它正常工作。

这是我的代码:

import speech_recognition as sr
import pocketsphinx

keywords = [
    ("command", 1), 
    ("one", 0), 
    ("two", 0), 
    ("three", 0), 
    ("four", 0), 
    ("five", 0), 
    ("six", 0), 
    ("seven", 0), 
    ("eight", 0), 
    ("nine", 0), 
    ("zero", 0), 
    ("command x axis add", 0), 
    ("command y axis add", 0), 
    ("command x axis subtract", 0), 
    ("command y axis subtract", 0), 
    ("command clear shift string", 0), 
    ("command shutdown", 0),
    ("command flip tracking", 0), 
    ("command pause", 0), 
    ("command detect face", 0), 
    ("command detect body", 0)
]

def speech2text():
    r = sr.Recognizer()
    with sr.Microphone() as source:
        r.adjust_for_ambient_noise(source)
        audio = r.listen(source) #this is were i want to listen in the background to run it at the same 
        #time as other code
    try:
        data = r.recognize_sphinx(audio, keyword_entries = keywords)
        return data
    except:
        return "Error..."

while True:
    print(speech2text())
python performance speech-recognition pocketsphinx
2个回答
0
投票

我也有同样的问题。我尝试了从 0 到 1 的不同敏感度,发现如果所有关键字的敏感度都超过 0.9,它们会同等且相当准确地识别,并且不会随机发送垃圾邮件输出短语。如果该值低于该值,则它会吐出过多的关键字,而不是合理的。

当任何不是关键字的单词时,我还会收到 UnknownValueError 。如果您正在寻找一种只检测这些关键字的方法,我肯定会尝试将它们的敏感度全部设置为 1,看看效果如何。我认为唯一的缺点可能是,如果关键字列表中的单词相似,您可能会得到与预期不同的点击率。


0
投票

大家好,我已经安装了 pocketsphinx 我正在运行我的简单程序,但我收到了如下消息

我的程序很简单,只写了两行代码

从 pocketsphinx 导入 LiveSpeech 对于 LiveSpeech() 中的短语: print(phrase);

第五 它 但 那是什么但是

好如 然后在 媒体的第十五个举动的想法是,如果没有一台机器可以明确地发送电子邮件,那么如果它做到了,那么有五分之一的电子邮件就会成功通过。 我想一个月后它它和 但值得庆幸的是,他们对一些事情有一些乐趣

第五个月尘和和和 我搬家是为了 呵呵

这很有趣 没有任何 月亮 移动的 进而 在第五局 我已经搞定了 嘿 不需要 给我的消息 你 哦 你会 哦,还有你 尽管他们有 我在第五 和 即使在 我见过他 这很好 这次 我是 死亡的乐趣 令人惊叹的 他们不是吗 十 那个人 一二三 哦 很高兴看到它 一 一 我是我在 一 哦 这 哦 我 和 八 九 和 柠檬 一 是的,我的 哦 d. 哦 我是说 吃 是的,我的 和 任何人 我的名字 我知道 我知道 然后你 好的 谢谢 一 哦 C 哦 哦 毫米 这 凉爽的 为什么 吃 未知 A 没有任何 和

与语音识别谷歌库相比,它的输出很慢

任何人都可以帮我解决这个问题

© www.soinside.com 2019 - 2024. All rights reserved.