应用程序之间的音频路由

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

我有一个支持 Python 语音的聊天机器人,可以播放和录制音频。然而,聊天机器人也将自己的音频输出识别为输入。有办法防止这种情况吗?是否有特定的应用程序可用于将音频从一个应用程序路由到另一个应用程序?

def play_audio(file_name):
    audio_path = os.path.join(path, file_name)
    data, fs = sf.read(audio_path)
    sd.play(data, fs)
    sd.wait()


def rec_audio():
    recog = sr.Recognizer()

    with sr.Microphone() as source:
        print("Listening... From Site Rec..")
        audio = recog.listen(source)

    data = ""

    try:
        data = recog.recognize_google(audio)
        print("User: " + data)

    except sr.UnknownValueError:
        print("Machine coudn't process..")
        play_audio("voice break.mp3")
    except sr.RequestError as ex:
        print("Google side" + str(ex))
        play_audio("RequestError.mp3")

    return data

这两个代码使用线程同时运行。有什么办法可以路由音频吗?

我希望机器不识别自己的播放音频,而是仅从麦克风观察音频..

python audio chatbot microphone python-sounddevice
1个回答
0
投票

用它来查看您设备上的所有麦克风输入:

import speech_recognition as sr

for index, name in enumerate(sr.Microphone.list_microphone_names()):
    print(f'{index}, {name}')

例如,我得到:

0, Microsoft Sound Mapper - Input
1, Microphone (Realtek High Defini
2, Microsoft Sound Mapper - Output
3, Speakers (Realtek High Definiti
4, Primary Sound Capture Driver
5, Microphone (Realtek High Definition Audio)
6, Primary Sound Driver
7, Speakers (Realtek High Definition Audio)
8, Speakers (Realtek High Definition Audio)
9, Microphone (Realtek High Definition Audio)
10, Speakers (Realtek HD Audio output)
11, Microphone (Realtek HD Audio Mic input)
12, Stereo Mix (Realtek HD Audio Stereo input)

现在,使用此代码仅监听您想要的输入:

import speech_recognition as sr

r = sr.Recognizer()
#choose the number next to the input that you want to use
mic = Microphone(device_index=1)
with mic as source:
    print("Speak Anything!")
    audio = r.listen(source)

由于您没有发布您正在使用的模块或用于测试的完整代码,我无法验证这是否能解决您的问题,但我相信它应该可以。

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