python实现录音小程序


Posted in Python onOctober 26, 2020

本文为大家分享了python实现录音小程序的具体代码,供大家参考,具体内容如下

学习目标:掌握python的pyaudio扩展包和Wave模块录制语音的方法

  • Wav音频:声道数,采样频率,量化位数

python Wav包是自带的,pyaudio需要下载

pip3 install pyaudio

python读Wav文件:

fp=wave.open('','rb')
 nf=fp.getnframes()#获取文件的采样点数量
 print('sampwidth:',fp.getsampwidth())
 print('framerate:',fp.getframerate())
 print('channels:',fp.getnchannels())
 f_len=nf*2#文件长度计算,每个采样2个字节
 audio_data=fp.readframes(nf)

python写Wav文件:

def save_wave_file(filename,data):
 '''save the date to the wavfile'''
 wf=wave.open(filename,'wb')
 wf.setnchannels(channels)#声道
 wf.setsampwidth(sampwidth)#采样字节 1 or 2
 wf.setframerate(framerate)#采样频率 8000 or 16000
 wf.writeframes(b"".join(data))#https://stackoverflow.com/questions/32071536/typeerror-sequence-item-0-expected-str-instance-bytes-found
 wf.close()

利用PyAudio录音:

def my_record():
 pa=PyAudio()
 stream=pa.open(format = paInt16,channels=1,
   rate=framerate,input=True,
   frames_per_buffer=NUM_SAMPLES)
 my_buf=[]
 count=0
 while count<TIME*20:#控制录音时间
 string_audio_data = stream.read(NUM_SAMPLES)#一次性录音采样字节大小
 my_buf.append(string_audio_data)
 count+=1
 print('.')
 save_wave_file('01.wav',my_buf)
 stream.close()

利用PyAudio播放音频

chunk=2014
def play():
 wf=wave.open(r"01.wav",'rb')
 p=PyAudio()
 stream=p.open(format=p.get_format_from_width(wf.getsampwidth()),channels=
 wf.getnchannels(),rate=wf.getframerate(),output=True)
 while True:
 data=wf.readframes(chunk)
 if data=="":break
 stream.write(data)
 stream.close()
 p.terminate()

完整录音播放的demo

import wave
from pyaudio import PyAudio,paInt16

framerate=8000
NUM_SAMPLES=2000
channels=1
sampwidth=2
TIME=2
def save_wave_file(filename,data):
 '''save the date to the wavfile'''
 wf=wave.open(filename,'wb')
 wf.setnchannels(channels)
 wf.setsampwidth(sampwidth)
 wf.setframerate(framerate)
 wf.writeframes(b"".join(data))
 wf.close()

def my_record():
 pa=PyAudio()
 stream=pa.open(format = paInt16,channels=1,
   rate=framerate,input=True,
   frames_per_buffer=NUM_SAMPLES)
 my_buf=[]
 count=0
 while count<TIME*20:#控制录音时间
 string_audio_data = stream.read(NUM_SAMPLES)
 my_buf.append(string_audio_data)
 count+=1
 print('.')
 save_wave_file('01.wav',my_buf)
 stream.close()

chunk=2014
def play():
 wf=wave.open(r"01.wav",'rb')
 p=PyAudio()
 stream=p.open(format=p.get_format_from_width(wf.getsampwidth()),channels=
 wf.getnchannels(),rate=wf.getframerate(),output=True)
 while True:
 data=wf.readframes(chunk)
 if data=="":break
 stream.write(data)
 stream.close()
 p.terminate()

if __name__ == '__main__':
 my_record()
 print('Over!') 
 play()

更多用法详见 pyaudio文档

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python实现简单的可逆加密程序实例
Mar 05 Python
详解Python中的各种函数的使用
May 24 Python
使用Python对SQLite数据库操作
Apr 06 Python
Django添加KindEditor富文本编辑器的使用
Oct 24 Python
tensorflow2.0保存和恢复模型3种方法
Feb 03 Python
基于Python3.6中的OpenCV实现图片色彩空间的转换
Feb 03 Python
python 中的[:-1]和[::-1]的具体使用
Feb 13 Python
Python文件读写w+和r+区别解析
Mar 26 Python
keras多显卡训练方式
Jun 10 Python
简单了解Python多态与属性运行原理
Jun 15 Python
Pytorch中的数据集划分&正则化方法
May 27 Python
Python 的演示平台支持 WSGI 接口的应用
Apr 20 Python
Python图像处理之简单画板实现方法示例
Aug 30 #Python
浅析python中numpy包中的argsort函数的使用
Aug 30 #Python
浅析python3中的os.path.dirname(__file__)的使用
Aug 30 #Python
python语音识别实践之百度语音API
Aug 30 #Python
python调用百度语音识别实现大音频文件语音识别功能
Aug 30 #Python
python的中异常处理机制
Aug 30 #Python
python调用百度REST API实现语音识别
Aug 30 #Python
You might like
如何去掉文章里的 html 语法
2006/10/09 PHP
无数据库的详细域名查询程序PHP版(2)
2006/10/09 PHP
PHP新手NOTICE错误常见解决方法
2011/12/07 PHP
注意:php5.4删除了session_unregister函数
2013/08/05 PHP
详解WordPress中过滤链接与过滤SQL语句的方法
2015/12/18 PHP
将PHP程序中返回的JSON格式数据用gzip压缩输出的方法
2016/03/03 PHP
什么是PHP7中的孤儿进程与僵尸进程
2019/04/14 PHP
解决thinkPHP 5 nginx 部署时,只跳转首页的问题
2019/10/16 PHP
jQuery scroll事件实现监控滚动条分页示例
2014/04/04 Javascript
关于网页中的无缝滚动的js代码
2016/06/09 Javascript
Vue.js每天必学之内部响应式原理探究
2016/09/07 Javascript
vue的props实现子组件随父组件一起变化
2016/10/27 Javascript
基于Vue、Vuex、Vue-router实现的购物商城(原生切换动画)效果
2018/01/09 Javascript
Bootstrap-table自定义可编辑每页显示记录数
2018/09/07 Javascript
JS字符串与二进制的相互转化实例代码详解
2019/06/28 Javascript
Angular进行简单单元测试的实现方法实例
2020/08/16 Javascript
element-ui中el-upload多文件一次性上传的实现
2020/12/02 Javascript
Python实现子类调用父类的方法
2014/11/10 Python
python入门前的第一课 python怎样入门
2018/03/06 Python
python实现按行分割文件
2019/07/22 Python
Python爬虫学习之获取指定网页源码
2019/07/30 Python
windows 10 设定计划任务自动执行 python 脚本的方法
2019/09/11 Python
Python字节单位转换实例
2019/12/05 Python
使用phonegap进行本地存储的实现方法
2017/03/31 HTML / CSS
产品工艺师的岗位职责
2013/11/15 职场文书
外贸业务员求职信范文
2013/12/12 职场文书
预备党员思想汇报范文
2014/01/11 职场文书
机械制造专业毕业生求职信
2014/03/02 职场文书
2014社区三八妇女节活动方案
2014/03/30 职场文书
党委干部批评与自我批评发言稿
2014/09/28 职场文书
宾馆前台接待岗位职责
2015/04/02 职场文书
小学学习委员竞选稿
2015/11/20 职场文书
高中班主任寄语
2019/06/21 职场文书
英文诗歌翻译方法(赏析)
2019/08/16 职场文书
如何制作自己的原生JavaScript路由
2021/05/05 Javascript
如何使用vue3打造一个物料库
2021/05/08 Vue.js