刚才的代码报错了OSError: [Errno -9996] Invalid input device (no default output device)
时间: 2024-03-06 13:47:48 浏览: 315
这个错误通常是由于你的电脑上没有默认的输出设备引起的。你可以尝试在程序中指定输出设备,以解决这个问题。以下是使用PyAudio库和NumPy库同时录制扬声器和麦克风的声音并输出波形,并指定输出设备的示例代码:
```python
import pyaudio
import numpy as np
import matplotlib.pyplot as plt
# 配置参数
CHUNK = 1024 * 2 # 每个缓冲区的帧数
FORMAT = pyaudio.paInt16 # 采样位数
CHANNELS = 2 # 通道数
RATE = 44100 # 采样率
RECORD_SECONDS = 5 # 录制时长
# 初始化PyAudio
p = pyaudio.PyAudio()
# 获取默认的输出设备
default_output_device = p.get_default_output_device_info()
# 打开扬声器的音频流,并指定输出设备
output_stream = p.open(format=FORMAT,
channels=CHANNELS,
rate=RATE,
output=True,
output_device_index=default_output_device["index"])
# 打开麦克风的音频流
input_stream = p.open(format=FORMAT,
channels=CHANNELS,
rate=RATE,
input=True,
frames_per_buffer=CHUNK)
# 创建一个NumPy数组来存储录制的音频数据
frames = []
# 录制音频
for i in range(0, int(RATE / CHUNK * RECORD_SECONDS)):
# 从麦克风读取数据
data = input_stream.read(CHUNK)
# 将数据发送到扬声器
output_stream.write(data)
# 将数据添加到NumPy数组中
frames.append(np.frombuffer(data, dtype=np.int16))
# 关闭音频流
input_stream.stop_stream()
input_stream.close()
output_stream.stop_stream()
output_stream.close()
# 关闭PyAudio
p.terminate()
# 将NumPy数组转换为二维数组
samples = np.vstack(frames)
# 绘制波形图
plt.plot(samples)
plt.show()
```
在这个示例中,我们使用 `p.get_default_output_device_info()` 函数获取默认的输出设备,并使用 `output_device_index` 参数指定输出设备。如果你的电脑上有多个输出设备,你需要根据自己的情况选择正确的设备。
阅读全文