pyaudio支持播放哪些文件?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了pyaudio支持播放哪些文件?相关的知识,希望对你有一定的参考价值。
在做一个播放器,要用到pyaudio,不知道它支持哪些文件,官方文档好像也没说
参考技术A 基于pyaudio利用Python编程实现播放音频mp3、wav等格式文件追问孝死,我当然知道,我还知道他支持flac,但他还支持其他格式吗?
参考技术B 没有前端的有趣方法: 但是,最理想的方法是像地狱般过时并使用pyaudio并手动摆弄音频帧.这样,只要正确解码数据,您就可以读取字面上的任何音频文件本回答被提问者采纳播放文件时的Pyaudio音质
【中文标题】播放文件时的Pyaudio音质【英文标题】:Pyaudio sound quality when playing a file 【发布时间】:2014-02-20 09:31:32 【问题描述】:所以我试图在我的树莓派上运行以下脚本:
"""PyAudio Example: Play a wave file."""
import pyaudio
import wave
import sys
CHUNK = 1024
if len(sys.argv) < 2:
print("Plays a wave file.\n\nUsage: %s filename.wav" % sys.argv[0])
sys.exit(-1)
wf = wave.open(sys.argv[1], 'rb')
# instantiate PyAudio (1)
p = pyaudio.PyAudio()
# open stream (2)
stream = p.open(format=p.get_format_from_width(wf.getsampwidth()),
channels=wf.getnchannels(),
rate=wf.getframerate(),
output=True)
# read data
data = wf.readframes(CHUNK)
# play stream (3)
while data != '':
stream.write(data)
data = wf.readframes(CHUNK)
# stop stream (4)
stream.stop_stream()
stream.close()
# close PyAudio (5)
p.terminate()
我创建了一个 WAV 文件,使用:arecord -D plughw:1 --duration=5 -f cd -vv ~/rectest.wav
当我像aplay ~/rectest.wav
一样播放它时,它播放得很好,而且声音响亮而清晰。
当我使用脚本(运行 python play.py ~/rectest.wav)时,音质很糟糕。我还注意到录音是 5 秒,但是当我使用脚本播放它时,它需要大约 8-9 秒才能完成播放(似乎失真使它更长)。
这里发生了什么?我该如何解决?
【问题讨论】:
您尝试过更大的CHUNK
尺寸吗?如果文件足够小,请尝试将整个内容读入内存并查看是否有效。可能是您的脚本根本没有为玩家提供足够快的内容。
是的,我有。你知道我在哪里可以清楚地理解每个论点的含义吗?块,频道,帧率等?我觉得我在随机猜测
所以我认为这些东西都没有帮助。由于 PyAudio 只是 PortAudio 上的 Python 层,因此后者的 documentation 可能会有所帮助。还有一篇专门针对 Audio Latency 的文章——这可能是问题所在——以及如何在某些平台上缓解它。
【参考方案1】:
我也遇到了这个问题,但我只是通过将增益控制静音并将扬声器和麦克风的音量降低到白电平来解决它。
之后我的音质变得清晰,意味着更好。
所以只要通过这个命令打开声音控制器
alsamixer
然后使用箭头键切换黑白选项、音量increase/decrease
和Speaker/MIC
并使用SPACEBAR
到mute/unmute
和Control Gain
。
【讨论】:
以上是关于pyaudio支持播放哪些文件?的主要内容,如果未能解决你的问题,请参考以下文章