pyaudio:没有录制声音

p.d*_*man 5 pyaudio python-3.x

我在使用 pyaudio 时遇到一些问题。

我正在使用 python 3.6.7、pyaudio 版本 0.2.11 开发 ubuntu 18.04,并具有以下依赖项:

  • libportaudioocpp0
  • portaudio19-dev
  • libportaudio2-dev

基本上我正在运行这个:

python
import pyaudio
import wave

CHUNK = 2048*50
FORMAT = pyaudio.paInt16
CHANNELS = 2
RATE = 44100
RECORD_SECONDS = 3
WAVE_OUTPUT_FILENAME = "test.wav"

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=FORMAT,
                 channels=CHANNELS,
                 rate=RATE,
                 input=True,
                 frames_per_buffer=CHUNK, input_device_index=0)

print("* recording")
frames = []

for i in range(0, int(RATE / CHUNK * RECORD_SECONDS)):
   data = stream.read(CHUNK)
   frames.append(data)

print("* done recording")
stream.stop_stream()
stream.close()
p.terminate()

wf = wave.open(WAVE_OUTPUT_FILENAME, 'wb')
wf.setnchannels(CHANNELS)
wf.setsampwidth(p.get_sample_size(FORMAT))
wf.setframerate(RATE)
wf.writeframes(b''.join(frames))
wf.close()
Run Code Online (Sandbox Code Playgroud)

生成了 .wav 文件,但它不包含任何声音。

我知道我的麦克风(笔记本电脑中包含的麦克风正在工作),例如我可以使用 Skype。

这是脚本的输出:

ALSA lib pcm_dmix.c:1052:(snd_pcm_dmix_open) unable to open slave
ALSA lib pcm_route.c:867:(find_matching_chmap) Found no matching channel >map
ALSA lib pcm_dmix.c:1052:(snd_pcm_dmix_open) unable to open slave
Input Device id  0  -  HDA Intel PCH: ALC3228 Analog (hw:0,0)
Input Device id  4  -  sysdefault
Input Device id  5  -  pulse
Input Device id  6  -  default
* recording
* done recording
Run Code Online (Sandbox Code Playgroud)

以下是 alsamixer 如何看待麦克风: 阿尔萨混合器 阿尔萨米克斯2