Pyaudio 报警消息去除

客户要求实现录音功能,所以采用Pyaudio进行声音流采集

安装和示例请访问:

   http://people.csail.mit.edu/hubert/pyaudio/

遇到显示警告问题:

ALSA lib ../../../alsa-lib-1.1.2/src/pcm/pcm.c:2450:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.front
ALSA lib ../../../alsa-lib-1.1.2/src/pcm/pcm.c:2450:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.rear
ALSA lib ../../../alsa-lib-1.1.2/src/pcm/pcm.c:2450:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.center_lfe
ALSA lib ../../../alsa-lib-1.1.2/src/pcm/pcm.c:2450:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.side
ALSA lib ../../../alsa-lib-1.1.2/src/pcm/pcm.c:2450:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.surround21
ALSA lib ../../../alsa-lib-1.1.2/src/pcm/pcm.c:2450:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.surround21
ALSA lib ../../../alsa-lib-1.1.2/src/pcm/pcm.c:2450:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.surround40
ALSA lib ../../../alsa-lib-1.1.2/src/pcm/pcm.c:2450:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.surround41
ALSA lib ../../../alsa-lib-1.1.2/src/pcm/pcm.c:2450:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.surround50
ALSA lib ../../../alsa-lib-1.1.2/src/pcm/pcm.c:2450:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.surround51
ALSA lib ../../../alsa-lib-1.1.2/src/pcm/pcm.c:2450:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.surround71
ALSA lib ../../../alsa-lib-1.1.2/src/pcm/pcm.c:2450:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.iec958
ALSA lib ../../../alsa-lib-1.1.2/src/pcm/pcm.c:2450:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.iec958
ALSA lib ../../../alsa-lib-1.1.2/src/pcm/pcm.c:2450:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.iec958
ALSA lib ../../../alsa-lib-1.1.2/src/pcm/pcm.c:2450:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.hdmi
ALSA lib ../../../alsa-lib-1.1.2/src/pcm/pcm.c:2450:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.hdmi
ALSA lib ../../../alsa-lib-1.1.2/src/pcm/pcm.c:2450:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.modem
ALSA lib ../../../alsa-lib-1.1.2/src/pcm/pcm.c:2450:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.modem
ALSA lib ../../../alsa-lib-1.1.2/src/pcm/pcm.c:2450:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.phoneline
ALSA lib ../../../alsa-lib-1.1.2/src/pcm/pcm.c:2450:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.phoneline
ALSA lib ../../../alsa-lib-1.1.2/src/pcm/pcm_dmix.c:1041:(snd_pcm_dmix_open) unable to open slave
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部分是没有找到声卡,下面是没有找打jack server。声音采集是OK了不过客户对报警不满意,所以寻找办法清除报警信息。

消除ALSA 报警(博客地址忘了)

  /usr/share/alsa/alsa.conf(可能位置有变化),中配置了声卡信息,那么可以根据上面的报错删除对应的声卡就可以了。

  这样就只剩下jack server的信息了。因为Pyaudio 在实例对象时,直接开启了声音采集和播放的功能,所以一直没有办法关掉jack server 的信息。

使用 sys模块去除警报

  在代码中使用 os.close(sys.stderr.fileno()) # (记得导入模块) 参考:https://stackoverflow.com/questions/36956083/how-can-the-terminal-output-of-executables-run-by-python-functions-be-silenced-i     这样可以不展示系统的err消息,所以ALSA 和jack server 的消息都不会被展示。

  具体的原理和代码示例参照  https://eli.thegreenplace.net/2015/redirecting-all-kinds-of-stdout-in-python/

使用sounddevice 据说也可以解决这个问题(没试过)

转载于:https://www.cnblogs.com/starktan/p/9365999.html

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Pyaudio是Python中用于音频输入和输出的库。它是对PortAudio库的封装,提供了简单而强大的API,用于处理音频流。你可以使用Pyaudio库来录制和播放声音,处理音频数据,进行音频特征提取,并将声音数据与其他Python库集成。 以下是使用Pyaudio库进行音频录制和播放的示例代码: 1. 音频录制: ```python import pyaudio import wave # 设置参数 chunk = 1024 # 每次读取的音频数据大小 format = pyaudio.paInt16 # 音频数据的格式 channels = 1 # 声道数 rate = 44100 # 采样率 record_seconds = 5 # 录制时长 # 创建PyAudio对象 p = pyaudio.PyAudio() # 打开音频流 stream = p.open(format=format, channels=channels, rate=rate, input=True, frames_per_buffer=chunk) print("开始录制音频...") frames = [] # 存储录制的音频数据 # 录制音频数据 for i in range(0, int(rate / chunk * record_seconds)): data = stream.read(chunk) frames.append(data) print("录制完成!") # 停止音频流 stream.stop_stream() stream.close() # 关闭PyAudio对象 p.terminate() # 保存录制的音频数据为WAV文件 wf = wave.open("recorded_audio.wav", "wb") wf.setnchannels(channels) wf.setsampwidth(p.get_sample_size(format)) wf.setframerate(rate) wf.writeframes(b"".join(frames)) wf.close() ``` 2. 音频播放: ```python import pyaudio import wave # 打开WAV文件 wf = wave.open("recorded_audio.wav", "rb") # 创建PyAudio对象 p = pyaudio.PyAudio() # 打开音频流 stream = p.open(format=p.get_format_from_width(wf.getsampwidth()), channels=wf.getnchannels(), rate=wf.getframerate(), output=True) print("开始播放音频...") # 播放音频数据 data = wf.readframes(chunk) while data: stream.write(data) data = wf.readframes(chunk) print("播放完成!") # 停止音频流 stream.stop_stream() stream.close() # 关闭PyAudio对象 p.terminate() ``` 请注意,上述代码中的"recorded_audio.wav"是录制音频的保存路径,你可以根据需要修改为你想要保存的文件名和路径。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值