Python之PyAudio使用
来源:互联网 发布:手机计时器软件 编辑:程序博客网 时间:2024/06/03 20:59
- PyAudio
- 播放
- 录音
- 回放
- 回调方法播放
- 非阻塞回调
PyAudio
使用这个可以进行录音,播放,生成wav文件等等。
播放
#-*-coding:utf-8-*-#引入库import pyaudioimport waveimport sys# 定义数据流块CHUNK = 1024if len(sys.argv) < 2: print("Plays a wave file.\n\nUsage: %s filename.wav" % sys.argv[0]) sys.exit(-1)# 只读方式打开wav文件wf = wave.open(r'D:\\Python\\Lib\\site-packages\\PyQt4\\uic\\test.wav', 'rb')#(sys.argv[1], 'rb')p = pyaudio.PyAudio()# 打开数据流stream = p.open(format=p.get_format_from_width(wf.getsampwidth()), channels=wf.getnchannels(), rate=wf.getframerate(), output=True)# 读取数据data = wf.readframes(CHUNK)# 播放 while data != '': stream.write(data) data = wf.readframes(CHUNK)# 停止数据流 stream.stop_stream()stream.close()# 关闭 PyAudio p.terminate()
录音
import pyaudioimport waveCHUNK = 1024FORMAT = pyaudio.paInt16CHANNELS = 2RATE = 44100RECORD_SECONDS = 5WAVE_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 = 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()
回放
import pyaudioCHUNK = 1024WIDTH = 2CHANNELS = 2RATE = 44100RECORD_SECONDS = 5p = pyaudio.PyAudio()stream = p.open(format=p.get_format_from_width(WIDTH), channels=CHANNELS, rate=RATE, input=True, output=True, frames_per_buffer=CHUNK)print("* recording")for i in range(0, int(RATE / CHUNK * RECORD_SECONDS)): data = stream.read(CHUNK) stream.write(data, CHUNK)print("* done")stream.stop_stream()stream.close()p.terminate()
回调方法播放
"""PyAudio Example: Play a wave file (callback version)"""import pyaudioimport waveimport timeimport sysif 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')p = pyaudio.PyAudio()def callback(in_data, frame_count, time_info, status): data = wf.readframes(frame_count) return (data, pyaudio.paContinue)stream = p.open(format=p.get_format_from_width(wf.getsampwidth()), channels=wf.getnchannels(), rate=wf.getframerate(), output=True, stream_callback=callback)stream.start_stream()while stream.is_active(): time.sleep(0.1)stream.stop_stream()stream.close()wf.close()p.terminate()
非阻塞回调
"""PyAudio Example: Make a wire between input and output (i.e., record afew samples and play them back immediately).This is the callback (non-blocking) version."""import pyaudioimport timeWIDTH = 2CHANNELS = 2RATE = 44100p = pyaudio.PyAudio()def callback(in_data, frame_count, time_info, status): return (in_data, pyaudio.paContinue)stream = p.open(format=p.get_format_from_width(WIDTH), channels=CHANNELS, rate=RATE, input=True, output=True, stream_callback=callback)stream.start_stream()while stream.is_active(): time.sleep(0.1)stream.stop_stream()stream.close()p.terminate()
参考:
http://people.csail.mit.edu/hubert/pyaudio/#examples
http://www.tuicool.com/articles/IRRbY3
0 0
- Python之PyAudio使用
- Python--pyaudio声卡录音
- python安装pyaudio库
- pyaudio
- 树莓派下安装pyaudio与使用
- Python--pyAudio播放wav格式声音
- pyaudio+pocketsphinx
- pyAudio介绍
- python-利用pyaudio进行声音录制及简单实例代码分享
- python3 使用pyaudio OSError: [Errno -9996] Invalid input device (no default output device)-ubuntu16.04
- Ubuntu14.04 install pyaudio
- 处理音频--pyaudio
- mac下安装pyaudio
- pyaudio 编译相关问题
- Mac下安装pyaudio
- Python 之 list 使用
- Python 之 使用全局变量
- Python 之 list 使用
- Acfun自动签到程序
- 实验三:学生工作管理系统sql代码
- svn安装插件
- Lua时间转换
- android 图片获取策略,下载并保存至指定文件夹
- Python之PyAudio使用
- Linux 下 解压rar格式压缩包
- 6,15 喜刷刷oj 1 j 复数类 重载运算符+
- XXX.java:X: 错误: 程序包javax.servlet不存在
- 【项目4 - 处理C++源代码的程序】(3)
- 大访问量优化整体思路
- LeetCode Missing Ranges [LeetCode Book Problem]
- jQuery和CSS3超炫3D整屏垂直滚动页面特效
- Linux(Ubuntu)下面SecureFX 完全破解