繁体   English   中英

录音脚本不适用于 WSL2 Ubuntu

[英]Audio Recording Script not working on WSL2 Ubuntu

我在 WSL2 上有以下代码和 Ubuntu:

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 脚本中录制音频?

WSL2 无法直接访问大多数硬件设备,因此麦克风访问失败也就不足为奇了。

也就是说,有一些方法可以通过 WSL2 访问某些硬件设备。 其中之一是通过 USB/IP,通过 WSL2/Linux 共享一个 Windows USB 设备。

我使用过 USB/IP,但从未用于此特定目的,所以我不能肯定地说它会起作用,但我希望它能起作用。 理论上,您需要在Windows中安装一个 USB 麦克风,然后通过USB/IP共享该 USB 设备。

您应该能够通过 PyAudio 访问该设备。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM