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实现的方法示例
Jul 12 Python
PyQt5 QSerialPort子线程操作的实现
Apr 21 Python
python 获取文件下所有文件或目录os.walk()的实例
Apr 23 Python
python抓取需要扫微信登陆页面
Apr 29 Python
Python正则表达式匹配和提取IP地址
Jun 06 Python
Python 脚本拉取 Docker 镜像问题
Nov 10 Python
Python读取YAML文件过程详解
Dec 30 Python
解析Python 偏函数用法全方位实现
Jun 26 Python
Python自带的IDE在哪里
Jul 01 Python
python3.7 openpyxl 在excel单元格中写入数据实例
Sep 01 Python
详解python实现可视化的MD5、sha256哈希加密小工具
Sep 14 Python
Python获取指定网段正在使用的IP
Dec 14 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实现简单的语法高亮函数实例分析
2015/04/27 PHP
PHP laravel中的多对多关系实例详解
2017/06/07 PHP
FCK调用方法..
2006/12/21 Javascript
JS实现网页滚动条感应鼠标变色的方法
2015/02/26 Javascript
javascript处理a标签超链接默认事件的方法
2015/06/29 Javascript
Javascript 计算字符串在localStorage中所占字节数
2015/10/21 Javascript
JavaScript+html5 canvas绘制的小人效果
2016/01/27 Javascript
基于JS如何实现类似QQ好友头像hover时显示资料卡的效果(推荐)
2016/06/09 Javascript
基于JavaScript实现复选框的全选和取消全选
2017/02/09 Javascript
js实现股票实时刷新数据案例
2017/05/14 Javascript
vue生成token并保存到本地存储中
2018/07/17 Javascript
详解datagrid使用方法(重要)
2020/11/06 Javascript
Python的Flask框架中Flask-Admin库的简单入门指引
2015/04/07 Python
Python使用defaultdict读取文件各列的方法
2017/05/11 Python
Python读取Pickle文件信息并计算与当前时间间隔的方法分析
2019/01/30 Python
Pyqt QImage 与 np array 转换方法
2019/06/27 Python
利用python实现汉字转拼音的2种方法
2019/08/12 Python
python 进程的几种创建方式详解
2019/08/29 Python
Python如何使用Gitlab API实现批量的合并分支
2019/11/27 Python
python 实现图片上传接口开发 并生成可以访问的图片url
2019/12/18 Python
Tensorflow 实现分批量读取数据
2020/01/04 Python
python读取ini配置的类封装代码实例
2020/01/08 Python
Python利用 utf-8-sig 编码格式解决写入 csv 文件乱码问题
2020/02/21 Python
浅析pip安装第三方库及pycharm中导入第三方库的问题
2020/03/10 Python
Python 线性回归分析以及评价指标详解
2020/04/02 Python
CSS3 @keyframes简单动画实现
2018/02/24 HTML / CSS
英国豪华家具和家居用品购物网站:Teddy Beau
2020/10/12 全球购物
Final类有什么特点
2012/04/25 面试题
优秀教师的感人事迹
2014/02/04 职场文书
学校节能宣传周活动总结
2014/07/09 职场文书
车贷收入证明范本
2014/09/14 职场文书
文明单位汇报材料
2014/12/24 职场文书
自主招生自荐信范文
2015/03/04 职场文书
就业导师推荐信范文
2015/03/27 职场文书
可可西里观后感
2015/06/08 职场文书
话题作文之财富(600字)
2019/12/03 职场文书