我在Ubuntu的WSL2上有以下代码:
import pyaudio,wave
chunk = 1024 # Record in chunks of 1024 samples
sample_format = pyaudio.paInt16 # 16 bits per sample
channels = 2
fs = 44100 # Record at 44100 samples per second
seconds = 3
filename = "output.wav"
p = pyaudio.PyAudio() # Create an interface to PortAudio
print('Recording')
stream = p.open(format=sample_format,
channels=channels,
rate=fs,
frames_per_buffer=chunk,
input=True)
frames = [] # Initialize array to store frames
for i in range(0, int(fs / chunk * seconds)):
data = stream.read(chunk)
frames.append(data)
stream.stop_stream()
stream.close()
p.terminate()
print('Finished recording')
wf = wave.open(filename, 'wb')
wf.setnchannels(channels)
wf.setsampwidth(p.get_sample_size(sample_format))
wf.setframerate(fs)
wf.writeframes(b''.join(frames))
wf.close()
然而,当我运行代码时,我会得到大量的ALSA错误,而且WSL2似乎没有识别我的麦克风:
我不确定WSL2是否内置了音频支持,因为没有很多从脚本录制音频的例子。我如何修复这些错误,并使WSL2记录音频从我的python脚本?
发布于 2022-04-20 23:34:16
WSL2无法直接访问大多数硬件设备,因此麦克风访问失败也就不足为奇了。
也就是说,有一些方法可以通过WSL2访问某些硬件设备。其中之一是通过USB/IP,通过WSL2 2/Linux共享一个Windows设备。
我曾经使用过USB/IP,但从来没有达到这个特定的目的,所以我不能肯定它会起作用,但我希望它能起作用。理论上,您需要安装在Windows中的USB麦克风,然后通过USB/IP共享该USB设备。
您应该能够通过PyAudio访问设备的位置。
https://stackoverflow.com/questions/71945812
复制相似问题