使用python流式传输麦克风和背景音频文件

时间:2019-02-20 09:52:24

标签: python speech-recognition audio-streaming

我正在尝试从连接到计算机的麦克风流式传输音频。我还必须照顾

  1. 如果我在用麦克风讲话时播放音频文件,则我的代码应该能够识别麦克风音频和来自在后台播放的文件中的声音。

(我尝试通过增加代码中的通道数来做到这一点,甚至测试了输入设备的数量,但没有捕获到背景文件中的声音,只有麦克风被捕获了。)

  1. 将其保存在wav文件中,然后

  2. 然后将wav文件转换为文本。

我成功地使用Google API捕获了麦克风和语音到文本的音频转换。但是我在背景音乐部分面临麻烦。

我用Detect & Record Audio in Python做话筒的一部分。为了捕获背景文件中的声音,我碰巧使用以下代码检查了机器上输入设备的数量

import pyaudio
import wave
p = pyaudio.PyAudio()
info = p.get_host_api_info_by_index(0)
numdevices = info.get('deviceCount')
for i in range(0, numdevices):
        if (p.get_device_info_by_host_api_device_index(0, i).get('maxInputChannels')) > 0:
            print("Input Device id ", i, " - ", p.get_device_info_by_host_api_device_index(0, i).get('name'))


stream=p.open(format=pyaudio.paInt16,
              channels=2,
              rate=44100,
              input=True,
              frames_per_buffer=1024,
              output_device_index=0)
frames= []
for i in range(0,1000):
    data=stream.read(1024)
    frames.append(data)
stream.stop_stream()
stream.close()
p.terminate()

wf=wave.open('out.wav','wb')
wf.setnchannels(2)
wf.setsampwidth(p.get_sample_size(pyaudio.paInt16))
wf.setframerate(44100)
wf.writeframes(b''.join(frames))
wf.close()

import pyaudio import wave p = pyaudio.PyAudio() info = p.get_host_api_info_by_index(0) numdevices = info.get('deviceCount') for i in range(0, numdevices): if (p.get_device_info_by_host_api_device_index(0, i).get('maxInputChannels')) > 0: print("Input Device id ", i, " - ", p.get_device_info_by_host_api_device_index(0, i).get('name')) stream=p.open(format=pyaudio.paInt16, channels=2, rate=44100, input=True, frames_per_buffer=1024, output_device_index=0) frames= [] for i in range(0,1000): data=stream.read(1024) frames.append(data) stream.stop_stream() stream.close() p.terminate() wf=wave.open('out.wav','wb') wf.setnchannels(2) wf.setsampwidth(p.get_sample_size(pyaudio.paInt16)) wf.setframerate(44100) wf.writeframes(b''.join(frames)) wf.close()

输出为:
输入设备ID 0-Microsoft声音映射器-输入
输入设备ID 1-耳机麦克风(Jabra UC VO

我无法捕获流对象中的文件音频,而只能捕获自己在麦克风中的声音。有人可以建议我要去哪里错吗?还是建议解决这个问题的更好方法?

0 个答案:

没有答案