如何解决使用 Python 读取连接到 4x1 USB 集线器的麦克风
我正在开展一个需要一系列麦克风的声源本地化项目。我有 4 个麦克风,带有连接到 USB 音频适配器的音频插孔。最后,我使用 4x1 USB 集线器将所有麦克风适配器组件连接到我的 PC,以使用 Python PyAudio 模块读取传入信号。
这是我的配置:
这是我的 Python 代码:
import pyaudio
import wave
CHUNK = 2
FORMAT = pyaudio.paInt16
CHANNELS = 1
RATE = 8900
RECORD_SECONDS = 2
WAVE_OUTPUT_FILENAME = "output.wav"
NUM_OF_MICS = 4
p = pyaudio.PyAudio()
# Create a stream for each microphone with the IDs 1,2,3,4
streams = [p.open(format=FORMAT,channels=CHANNELS,rate=RATE,input=True,frames_per_buffer=CHUNK,input_device_index=idx) for idx in range(1,NUM_OF_MICS + 1)]
print("* recording")
# Record 2 seconds of Audio for each
frames = []
for j in range(NUM_OF_MICS):
row = []
for i in range(0,int(RATE / CHUNK * RECORD_SECONDS)):
row.append(streams[j].read(CHUNK,exception_on_overflow=False))
frames.append(row)
for stream in streams:
stream.stop_stream()
stream.close()
p.terminate()
print("* done recording")
# Save audio with the names {1,4}_output.wav
for j in range(NUM_OF_MICS):
wf = wave.open(str(j) + "_" + WAVE_OUTPUT_FILENAME,'wb')
wf.setnchannels(CHANNELS)
wf.setsampwidth(p.get_sample_size(FORMAT))
wf.setframerate(RATE)
wf.writeframes(b''.join(frames[j]))
wf.close()
看看这个问题,当我只选择其中之一并开始仅使用它进行录音时,我能够清楚地读取麦克风输出。但是,当我处理上面的代码时,名称为 {0,2}_output.wav 的录音听起来不错,但其他 - {1,3}_output.wav 只包含杂乱的声音(至少这是我听到的) .
我已经分别测试了所有插头和设备,它们都可以正常工作。我愿意接受建议。
编辑:
当我只将 2 个麦克风连接到 HUB 并设置变量 NUM_OF_MICS = 2
时,我会正常收到两种声音 {0,1}_output.wav。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。