Python 3 和 Pocket Sphinx

3
我正在尝试使用Python 3和Pocket Sphinx为我有按钮困难的祖父创建一个简单的音乐播放器,实现使用语音控制。我使用树莓派3作为硬件平台,因为Pocket Sphinx不需要互联网,而我的祖父又没有互联网接入。
我的问题是如何将“Play Button”这样的语音指令转换成播放“Button”声音文件的操作?
以下是我用于构建基本程序的代码:
import speech_recognition as sr
import pygame
from pygame import mixer
mixer.init()

r = sr.Recognizer()
m = sr.Microphone()

Button = pygame.mixer.Sound('/home/pi/Downloads/button8.wav')

try:
    print("A moment of silence, please...")
    with m as source: r.adjust_for_ambient_noise(source)
    print("Set minimum energy threshold to {}".format(r.energy_threshold))
    while True:
        print("Say something!")
        with m as source: audio = r.listen(source)
        print("Got it! Now to recognize it...")
        try:
            # recognize speech using Sphinx
            value = r.recognize_sphinx(audio)
            print("You said {}".format(value)) #uses unicode for strings and this is where I am stuck
            pygame.mixer.Sound.play(Button)
            pygame.mixer.music.stop()
        except sr.UnknownValueError:
            print("Oops! Didn't catch that")
        except sr.RequestError as e:
            print("Uh oh! Couldn't request results; {0}".format(e))
except KeyboardInterrupt:
    pass

非常感谢您能提供帮助。因为我是初学者,所以请友善一些。感谢您!

你得到了什么错误? - Elis Byberi
它将打印所说的内容,但我不知道如何将所说的内容取出以播放声音。例如,我希望能够说“播放按钮”,并让它在Pi上播放Wave文件(Button.wav)。谢谢你的帮助。 - Laura Jacob
1个回答

1
尝试将其与“播放按钮”进行比较:
# recognize speech using Sphinx
value = r.recognize_sphinx(audio)
print("You said {}".format(value))

if value.lower() == 'play button':
    pygame.mixer.Sound.play(Button)
    pygame.mixer.music.stop()

1
你做到了,Elis Byberi!非常感谢!!!谢谢-谢谢!那么,“if value.lower()”表示什么?它是在查看Python脚本上的打印值吗?非常感谢您的帮助! - Laura Jacob
value.lower()会将value中的字符串转换为小写。比较if 'Play Button' == 'play button'是错误的。if会检查value中的字符串是否与'play button'相同。@LauraJacob - Elis Byberi
1
非常感谢您的帮助!我真诚地感激! - Laura Jacob

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接