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中的一些类型转换函数小结
Feb 10 Python
Python中if __name__ == &quot;__main__&quot;详细解释
Oct 21 Python
Python中实现参数类型检查的简单方法
Apr 21 Python
详解Python爬虫的基本写法
Jan 08 Python
python万年历实现代码 含运行结果
May 20 Python
Python2.7下安装Scrapy框架步骤教程
Dec 22 Python
Python tkinter label 更新方法
Oct 11 Python
Python模块、包(Package)概念与用法分析
May 31 Python
Python 用三行代码提取PDF表格数据
Oct 13 Python
python正则过滤字母、中文、数字及特殊字符方法详解
Feb 11 Python
Python写捕鱼达人的游戏实现
Mar 31 Python
利用Python实现自动扫雷小脚本
Dec 17 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
一个用php3编写的简单计数器
2006/10/09 PHP
PHP实现动态执行代码的方法
2016/03/25 PHP
利用PHPStorm如何开发Laravel应用详解
2017/08/30 PHP
php使用filter_var函数判断邮箱,url,ip格式示例
2019/07/06 PHP
JS中剪贴板兼容性、判断复制成功或失败
2021/03/09 Javascript
$()JS小技巧
2007/07/21 Javascript
ExtJS 2.0实用简明教程 之Ext类库简介
2009/04/29 Javascript
实用的JS正则表达式(手机号码/IP正则/邮编正则/电话等)
2013/01/11 Javascript
jQuery实现的Div窗口震动效果实例
2015/08/07 Javascript
js实现向右横向滑出的二级菜单效果
2015/08/27 Javascript
JavaScript实现设计模式中的单例模式的一些技巧总结
2016/05/17 Javascript
Vue实现购物车功能
2017/04/27 Javascript
webpack2.0配置postcss-loader的方法
2017/08/17 Javascript
详解VueJS应用中管理用户权限
2018/02/02 Javascript
微信小程序中实现手指缩放图片的示例代码
2018/03/13 Javascript
详解基于node.js的脚手架工具开发经历
2019/01/28 Javascript
js实现图片上传即时显示效果
2019/09/30 Javascript
浅谈vue 锚点指令v-anchor的使用
2019/11/13 Javascript
详解pandas如何去掉、过滤数据集中的某些值或者某些行?
2019/05/15 Python
如何通过雪花算法用Python实现一个简单的发号器
2019/07/03 Python
Python udp网络程序实现发送、接收数据功能示例
2019/12/09 Python
opencv+python实现均值滤波
2020/02/19 Python
Python3 获取文件属性的方式(时间、大小等)
2020/03/12 Python
德国价格合理的品牌商品购物网站:averdo
2019/03/21 全球购物
物理教学随笔感言
2014/02/22 职场文书
出纳员的岗位职责
2014/02/22 职场文书
户外活动策划方案
2014/03/12 职场文书
年终考核实施方案
2014/05/26 职场文书
红色旅游心得体会
2014/09/03 职场文书
检察机关个人对照检查材料
2014/09/15 职场文书
乡镇团委工作总结2015
2015/05/26 职场文书
安全教育片观后感
2015/06/17 职场文书
小学信息技术教学反思
2016/02/16 职场文书
开学季:喜迎新生,迎新标语少不了
2019/11/07 职场文书
Java集成swagger文档组件
2021/06/28 Java/Android
MySQL中JOIN连接的基本用法实例
2022/06/05 MySQL