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实现随机森林算法的示例
Aug 24 Python
python logging日志模块的详解
Oct 29 Python
flask-restful使用总结
Dec 04 Python
python 实现倒排索引的方法
Dec 25 Python
很酷的python表白工具 你喜欢我吗
Apr 11 Python
详解用python计算阶乘的几种方法
Aug 14 Python
Python实现某论坛自动签到功能
Aug 20 Python
Pandas数据离散化原理及实例解析
Nov 16 Python
numpy:找到指定元素的索引示例
Nov 26 Python
pandas dataframe 中的explode函数用法详解
May 18 Python
sklearn线性逻辑回归和非线性逻辑回归的实现
Jun 09 Python
python3.8.3安装教程及环境配置的详细教程(64-bit)
Nov 28 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读取xml实例代码
2010/01/28 PHP
PHP文件打开、关闭、写入的判断与执行代码
2011/05/24 PHP
phpmailer发送邮件之后,返回收件人是否阅读了邮件的方法
2014/07/19 PHP
Ubuntu中搭建Nginx、PHP环境最简单的方法
2015/03/05 PHP
解决php用mysql方式连接数据库出现Deprecated报错问题
2019/12/25 PHP
Avengerls vs KG BO3 第二场2.18
2021/03/10 DOTA
飞鱼(shqlsl) javascript作品集
2006/12/16 Javascript
基于jquery的多彩百分比 动态进度条 投票效果显示效果实现代码
2011/08/28 Javascript
javascript 表格内容排序 简单操作示例代码
2014/01/03 Javascript
JQEasy-ui在IE9以下版本中二次加载的问题分析及处理方法
2014/06/23 Javascript
浅谈javascript属性onresize
2015/04/20 Javascript
javascript正则表达式之分组概念与用法实例
2016/06/16 Javascript
浅谈Angular路由复用策略
2017/10/04 Javascript
详解promise.then,process.nextTick, setTimeout 以及 setImmediate的执行顺序
2018/11/21 Javascript
七行JSON代码把你的网站变成移动应用过程详解
2019/07/09 Javascript
layUI的验证码功能及校验实例
2019/10/25 Javascript
vue项目中监听手机物理返回键的实现
2020/01/18 Javascript
[42:52]IG vs VGJ.T 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
简单介绍使用Python解析并修改XML文档的方法
2015/10/15 Python
python中numpy包使用教程之数组和相关操作详解
2017/07/30 Python
Python调用C语言的方法【基于ctypes模块】
2018/01/22 Python
python3+PyQt5自定义视图详解
2018/04/24 Python
mvc框架打造笔记之wsgi协议的优缺点以及接口实现
2018/08/01 Python
YUV转为jpg图像的实现
2019/12/09 Python
使用pickle存储数据dump 和 load实例讲解
2019/12/30 Python
Pytorch 实现sobel算子的卷积操作详解
2020/01/10 Python
python文件编写好后如何实践
2020/07/07 Python
html5+css3气泡组件的实现
2014/11/21 HTML / CSS
美国娱乐和流行文化商品店:FYE
2017/09/14 全球购物
美国名牌手表折扣网站:Jomashop
2020/05/22 全球购物
Chemist Warehouse中文网:澳洲连锁大药房
2021/02/05 全球购物
PHP如何防止SQL注入
2014/05/03 面试题
yy生日主持词
2014/03/20 职场文书
回复函范文
2015/07/14 职场文书
go 实现简易端口扫描的示例
2021/05/22 Golang
python for循环赋值问题
2021/06/03 Python