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 相关文章推荐
Python3实战之爬虫抓取网易云音乐的热门评论
Oct 09 Python
python探索之BaseHTTPServer-实现Web服务器介绍
Oct 28 Python
Numpy 将二维图像矩阵转换为一维向量的方法
Jun 05 Python
在Python中增加和插入元素的示例
Nov 01 Python
解析Python的缩进规则的使用
Jan 16 Python
python解析xml文件方式(解析、更新、写入)
Mar 05 Python
Python迭代器Iterable判断方法解析
Mar 16 Python
Python之变量类型和if判断方式
May 05 Python
Pytorch转keras的有效方法,以FlowNet为例讲解
May 26 Python
Python如何操作docker redis过程解析
Aug 10 Python
解决python 执行shell命令无法获取返回值的问题
Dec 05 Python
Linux系统下升级pip的完整步骤
Jan 31 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+SQL 注入攻击的技术实现以及预防办法
2011/01/27 PHP
php过滤html中的其他网站链接的方法(域名白名单功能)
2014/04/24 PHP
php结合curl实现多线程抓取
2015/07/09 PHP
php flush无效,IIS7下php实时输出的方法
2016/08/25 PHP
jQuery对象的selector属性用法实例
2014/12/27 Javascript
功能强大的Bootstrap效果展示(二)
2016/08/03 Javascript
canvas实现手机端用来上传用户头像的代码
2016/10/20 Javascript
JS 60秒后重新发送验证码的实例讲解
2017/07/26 Javascript
vue异步axios获取的数据渲染到页面的方法
2018/08/09 Javascript
jQuery Ajax async=&gt;false异步改为同步时,解决导致浏览器假死的问题
2019/07/22 jQuery
layui之table checkbox初始化时选中对应选项的方法
2019/09/02 Javascript
[52:15]2014 DOTA2国际邀请赛中国区预选赛5.21 HGT VS LGD-GAMING
2014/05/23 DOTA
Python网页解析利器BeautifulSoup安装使用介绍
2015/03/17 Python
python中Genarator函数用法分析
2015/04/08 Python
Python读取本地文件并解析网页元素的方法
2018/05/21 Python
Python从数据库读取大量数据批量写入文件的方法
2018/12/10 Python
Python 中的参数传递、返回值、浅拷贝、深拷贝
2019/06/25 Python
调试Django时打印SQL语句的日志代码实例
2019/09/12 Python
python 动态调用函数实例解析
2019/10/21 Python
Python上下文管理器用法及实例解析
2019/11/11 Python
pyecharts绘制中国2020肺炎疫情地图的实例代码
2020/02/12 Python
Python基于yield遍历多个可迭代对象
2020/03/12 Python
Python os库常用操作代码汇总
2020/11/03 Python
用python制作个音乐下载器
2021/01/30 Python
一文彻底解决HTML5页面中长按保存图片功能
2019/06/10 HTML / CSS
New Balance英国官方网站:始于1906年,百年慢跑品牌
2016/12/07 全球购物
美国汽配连锁巨头Pep Boys官网:轮胎更换、汽车维修服务和汽车零部件
2017/01/14 全球购物
Ruby中的保护方法和私有方法与一般面向对象程序设计语言的一样吗
2013/05/01 面试题
十佳教师事迹材料
2014/01/11 职场文书
2014年人事工作总结范文
2014/11/19 职场文书
2015年财政所工作总结
2015/04/25 职场文书
2015年度个人教学工作总结
2015/05/20 职场文书
高中生社会实践心得体会
2016/01/14 职场文书
python实现进度条的多种实现
2021/04/29 Python
Python 线程池模块之多线程操作代码
2021/05/20 Python
MySQL 8.0 之不可见列的基本操作
2021/05/20 MySQL