speech recognization

目标,在播放声音的时候,禁用掉麦克风

新建立一个文件夹,然后拖入vscode中

然后创建虚拟环境,vscode会自动帮我们创建虚拟环境,手动激活虚拟环境

source venv/bin/activate

speech recognization_第1张图片

import speech_recognition as sr
import pyaudio

recognizer = sr.Recognizer()

while True:
    # 使用麦克风获取声音输入
    try:
        with sr.Microphone() as source:
            print("请说话...")
            audio = recognizer.listen(source, timeout=10)
    except sr.WaitTimeoutError:
        print("未检测到语音输入,跳过...")
        continue

    try:
        text = recognizer.recognize_google(audio)
        print("你说的是: " + text)
    except sr.UnknownValueError:
        print("无法识别语音")
    except sr.RequestError as e:
        print("请求出错; {0}".format(e))

    # 使用 PyAudio 播放录制的音频
    p = pyaudio.PyAudio()
    stream = p.open(format=p.get_format_from_width(audio.sample_width),
                    channels=1,  # 单声道
                    rate=audio.sample_rate,
                    output=True)
    stream.start_stream()
    stream.write(audio.frame_data)
    stream.stop_stream()
    stream.close()
    p.terminate()

 上面的代码,扬声器在播放的时候,麦克风压根就没有工作,所以不存在扬声器说的时候,麦克风会采集到声音。

那为什么项目中的会遇到这个问题,是因为项目中的麦克风是一直采集数据

当我们说hello,hello , good morning , ||||| what is your name ?

这个会被识别成两段,因为中间停顿超过了0.2秒,第一段在做这种处理的时候,第二段仍然会被麦克风采集到,然后加入延时队列,所以说,麦克风是一直都在工作。

那是什么让麦克风可以一直录入音频呢?

原来是库自带的功能

speech recognization_第2张图片

 这是后台开启,如何关闭呢?在此调用这个listen_in_background方法即可

speech recognization_第3张图片

你可能感兴趣的:(vscode,python)