python3 使用pyaudio OSError: [Errno -9996] Invalid input device (no default output device)-ubuntu16.04

程序的代码是:

#encoding:utf8
import pyaudio,wave

CHUNK = 1024
FORMAT = pyaudio.paInt16
CHANNELS = 2
RATE = 44100
RECORD_SECONDS = 5
WAVE_OUTPUT_FILENAME = "output.wav"


p = pyaudio.PyAudio()

stream = p.open(format=FORMAT,
                channels=CHANNELS,
                rate=RATE,
                input=True,
                frames_per_buffer=CHUNK)

print("* recording")

frames = []

for i in range(0, int(RATE / CHUNK * RECORD_SECONDS)):
    data &
  • 8
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 17
    评论
这个错误通常是由于你的电脑上没有默认的输出设备引起的。你可以尝试在程序中指定输出设备,以解决这个问题。以下是使用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` 参数指定输出设备。如果你的电脑上有多个输出设备,你需要根据自己的情况选择正确的设备。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值