我正在尝试看看是否可以让 PyAudio 从 Kubuntu 计算机上的 USB 麦克风录音。当我运行此脚本时,它确实会创建一个文件,但该文件不包含音频。甚至没有背景音乐......
我正在尝试看看是否可以让 PyAudio 从 Kubuntu 计算机上的 USB 麦克风录音。当我运行此脚本时,它确实会创建一个文件,但该文件不包含音频。甚至没有背景白噪声。我可以确认我的麦克风在音频设备设置和 OBS 中工作正常。第一个打印语句确实显示了正确的设备名称。我使用以下代码:
import pyaudio
import wave
FRAMES_PER_BUFFER = 1024
FORMAT = pyaudio.paInt16
CHANNELS = 1
RATE = 48000
RECORD_SECONDS = 2
WAVE_OUTPUT_FILENAME = "voice.wav"
audio = pyaudio.PyAudio()
stream = audio.open(format=FORMAT,
channels=CHANNELS,
rate=RATE,
input=True,
frames_per_buffer=FRAMES_PER_BUFFER,
input_device_index=2)
print("recording from device " + str(audio.get_device_info_by_host_api_device_index(0, 2).get('name')))
frames = []
for i in range(0, int(RATE / FRAMES_PER_BUFFER * RECORD_SECONDS)):
data = stream.read(FRAMES_PER_BUFFER)
frames.append(data)
print("done recording")
stream.stop_stream()
stream.close()
audio.terminate()
wf = wave.open(WAVE_OUTPUT_FILENAME, 'wb')
wf.setnchannels(CHANNELS)
wf.setsampwidth(audio.get_sample_size(FORMAT))
wf.setframerate(RATE)
wf.writeframes(b''.join(frames))
wf.close()
它创建以下输出:
ALSA lib pcm.c:2664:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.rear
ALSA lib pcm.c:2664:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.center_lfe
ALSA lib pcm.c:2664:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.side
ALSA lib pcm_route.c:877:(find_matching_chmap) Found no matching channel map
Cannot connect to server socket err = No such file or directory
Cannot connect to server request channel
jack server is not running or cannot be started
JackShmReadWritePtr::~JackShmReadWritePtr - Init not done for -1, skipping unlock
JackShmReadWritePtr::~JackShmReadWritePtr - Init not done for -1, skipping unlock
Cannot connect to server socket err = No such file or directory
Cannot connect to server request channel
jack server is not running or cannot be started
JackShmReadWritePtr::~JackShmReadWritePtr - Init not done for -1, skipping unlock
JackShmReadWritePtr::~JackShmReadWritePtr - Init not done for -1, skipping unlock
ALSA lib pcm_oss.c:397:(_snd_pcm_oss_open) Cannot open device /dev/dsp
ALSA lib pcm_oss.c:397:(_snd_pcm_oss_open) Cannot open device /dev/dsp
ALSA lib confmisc.c:160:(snd_config_get_card) Invalid field card
ALSA lib pcm_usb_stream.c:482:(_snd_pcm_usb_stream_open) Invalid card 'card'
ALSA lib confmisc.c:160:(snd_config_get_card) Invalid field card
ALSA lib pcm_usb_stream.c:482:(_snd_pcm_usb_stream_open) Invalid card 'card'
Cannot connect to server socket err = No such file or directory
Cannot connect to server request channel
jack server is not running or cannot be started
JackShmReadWritePtr::~JackShmReadWritePtr - Init not done for -1, skipping unlock
JackShmReadWritePtr::~JackShmReadWritePtr - Init not done for -1, skipping unlock
recording from device USB Audio Device: - (hw:1,0)
done recording
我尝试使用 sudo 运行该脚本,但似乎没有任何变化。我更改了一些 PulseAudio 设置,使其忽略我的 USB 麦克风,因为起初该脚本根本没有检测到麦克风。它现在可以识别麦克风,但仍在创建空音频文件。
回溯(最近一次调用):文件 \'/usr/bin/idle\',第 5 行,位于 \
Traceback (most recent call last):
File "/usr/bin/idle", line 5, in \<module\>
main()
File "/usr/lib/python3.10/idlelib/pyshell.py", line 1617, in main
root = Tk(className="Idle")
File "/usr/lib/python3.10/tkinter/__init__.py", line 2299, in __init__
self.tk = _tkinter.create(screenName, baseName, className, interactive, wantobjects, useTk, sync, use)
_tkinter.TclError: no display name and no $DISPLAY environment variable
当我使用 idle 命令在 idle 中编写 python 时,我收到了此系统消息。我不知道那是什么意思。我对 ubuntu 还很陌生。我希望有人知道这个答案。