我正在尝试从连接到计算机的麦克风流式传输音频。我还必须照顾
(我尝试通过增加代码中的通道数来做到这一点,甚至测试了输入设备的数量,但没有捕获到背景文件中的声音,只有麦克风被捕获了。)
将其保存在wav文件中,然后
然后将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
我无法捕获流对象中的文件音频,而只能捕获自己在麦克风中的声音。有人可以建议我要去哪里错吗?还是建议解决这个问题的更好方法?