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中的继承和多态的概念
Apr 27 Python
Python实现控制台输入密码的方法
May 29 Python
python更新列表的方法
Jul 28 Python
Python使用迭代器捕获Generator返回值的方法
Apr 05 Python
pycharm+django创建一个搜索网页实例代码
Jan 24 Python
python爬取淘宝商品详情页数据
Feb 23 Python
python的dataframe转换为多维矩阵的方法
Apr 11 Python
用PyInstaller把Python代码打包成单个独立的exe可执行文件
May 26 Python
pyhanlp安装介绍和简单应用
Feb 22 Python
python批量修改图片尺寸,并保存指定路径的实现方法
Jul 04 Python
利用python做表格数据处理
Apr 13 Python
Python中for后接else的语法使用
May 18 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
PHP连接MySQL数据的操作要点
2015/03/20 PHP
PHP实现简单爬虫的方法
2015/07/29 PHP
PHP实现基本留言板功能原理与步骤详解
2020/03/26 PHP
xml文档转换工具,附图表例子(hta)
2010/11/17 Javascript
javascript中节点的最近的相关节点访问方法
2013/03/20 Javascript
JSON无限折叠菜单编写实例
2013/12/16 Javascript
jquery+php随机生成红包金额数量代码分享
2015/08/27 Javascript
JS实现淘宝支付宝网站的控制台菜单效果
2015/09/28 Javascript
输入法的回车与消息发送快捷键回车的冲突解决方法
2016/08/09 Javascript
jQuery实现的上传图片本地预览效果简单示例
2018/03/29 jQuery
Bootstrap开发中Tab标签页切换图表显示问题的解决方法
2018/07/13 Javascript
[01:05:24]Ti4 冒泡赛第二天 iG vs NEWBEE 3
2014/07/15 DOTA
[02:17]DOTA2亚洲邀请赛 RAVE战队出场宣传片
2015/02/07 DOTA
[44:22]完美世界DOTA2联赛循环赛 FTD vs PXG BO2第一场 11.01
2020/11/02 DOTA
python网络编程调用recv函数完整接收数据的三种方法
2017/03/31 Python
Python md5与sha1加密算法用法分析
2017/07/14 Python
深入浅析python with语句简介
2018/04/11 Python
python numpy和list查询其中某个数的个数及定位方法
2018/06/27 Python
详解在Python中以绝对路径或者相对路径导入文件的方法
2019/08/30 Python
浅谈Python type的使用
2019/11/19 Python
PyCharm使用之配置SSH Interpreter的方法步骤
2019/12/26 Python
python的reverse函数翻转结果为None的问题
2020/05/11 Python
Python如何实现FTP功能
2020/05/28 Python
药学专业大学生自荐信
2013/09/28 职场文书
医药代表个人的求职信分享
2013/12/08 职场文书
售前工程师职业生涯规划
2014/03/02 职场文书
大学生应聘求职信
2014/05/26 职场文书
高中生学习计划书
2014/09/15 职场文书
大学辅导员述职报告
2015/01/10 职场文书
交通肇事罪辩护词
2015/05/21 职场文书
增值税发票丢失证明
2015/06/19 职场文书
订货会主持词
2015/07/01 职场文书
六一儿童节致辞
2015/07/31 职场文书
护士业务学习心得体会
2016/01/25 职场文书
Python中 range | np.arange | np.linspace三者的区别
2022/03/22 Python
Windows server 2012 NTP时间同步的实现
2022/06/25 Servers