Python之PyAudio使用
2015-06-15 19:43
585 查看
PyAudio
播放
录音
回放
回调方法播放
非阻塞回调
参考:
http://people.csail.mit.edu/hubert/pyaudio/#examples
http://www.tuicool.com/articles/IRRbY3
播放
录音
回放
回调方法播放
非阻塞回调
PyAudio
使用这个可以进行录音,播放,生成wav文件等等。播放
[code]#-*-coding:utf-8-*- #引入库 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) # 只读方式打开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()
录音
[code]import pyaudio import wave CHUNK = 1024 FORMAT = pyaudio.paInt16 CHANNELS = 2 RATE = 44100 RECORD_SECONDS = 5 W***E_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(W***E_OUTPUT_FILENAME, 'wb') wf.setnchannels(CHANNELS) wf.setsampwidth(p.get_sample_size(FORMAT)) wf.setframerate(RATE) wf.writeframes(b''.join(frames)) wf.close()
回放
[code]import pyaudio CHUNK = 1024 WIDTH = 2 CHANNELS = 2 RATE = 44100 RECORD_SECONDS = 5 p = 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()
回调方法播放
[code]"""PyAudio Example: Play a wave file (callback version)""" import pyaudio import wave import time import sys 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') 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()
非阻塞回调
[code]""" PyAudio Example: Make a wire between input and output (i.e., record a few samples and play them back immediately). This is the callback (non-blocking) version. """ import pyaudio import time WIDTH = 2 CHANNELS = 2 RATE = 44100 p = 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
相关文章推荐
- python 学习笔记(一)通过做题来熟悉python 的基本语法
- python import 同名模块
- Python
- python-sphinx 2.6.5的一个bug
- Python Twisted介绍
- [笔记] python的json模块
- python中string模块各属性以及函数的用法
- wxPython基本控件
- Python定制类
- 第一个 wxPython程序
- python爬虫
- datetime和time
- python代码`if not x:` 和`if x is not None:`和`if not x is None:`
- python内置函数
- Python之print详解
- Python+VS环境搭建
- python GUI库wxPython
- python的局部变量和全局变量
- python备份mysql脚本
- Python实现简单HTML表格解析的方法