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实现读取命令行参数的方法
May 22 Python
python直接访问私有属性的简单方法
Jul 25 Python
各种Python库安装包下载地址与安装过程详细介绍(Windows版)
Nov 02 Python
python实现俄罗斯方块游戏
Mar 25 Python
树莓派与PC端在局域网内运用python实现即时通讯
Jun 22 Python
微信公众号token验证失败解决方案
Jul 22 Python
django项目中使用手机号登录的实例代码
Aug 15 Python
PyCharm如何导入python项目的方法
Feb 06 Python
基于Python计算圆周率pi代码实例
Mar 25 Python
TensorFLow 数学运算的示例代码
Apr 21 Python
Python分析最近大火的网剧《隐秘的角落》
Jul 02 Python
Idea安装python显示无SDK问题解决方案
Aug 12 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中的常用魔术方法总结
2013/08/02 PHP
php实现邮件发送并带有附件
2014/01/24 PHP
Windows和Linux中php代码调试工具Xdebug的安装与配置详解
2014/05/08 PHP
通过php删除xml文档内容的方法
2015/01/23 PHP
详解PHP对数组的定义以及数组的创建方法
2015/11/27 PHP
php+Memcached实现简单留言板功能示例
2017/02/15 PHP
详解jquery uploadify 上传文件
2013/11/09 Javascript
js返回前一页刷新本页重载页面
2014/07/29 Javascript
浅谈Javascript中的对象和继承
2019/04/19 Javascript
微信小程序项目总结之记账小程序功能的实现(包括后端)
2019/08/20 Javascript
vue iview的菜单组件Mune 点击不高亮的解决方案
2019/11/01 Javascript
JS在Array数组中按指定位置删除或添加元素对象方法示例
2019/11/19 Javascript
基于JQuery实现页面定时弹出广告
2020/05/08 jQuery
jQuery实现简单飞机大战
2020/07/05 jQuery
js实现幻灯片轮播图
2020/08/14 Javascript
django通过ajax发起请求返回JSON格式数据的方法
2015/06/04 Python
Python实现读取TXT文件数据并存进内置数据库SQLite3的方法
2017/08/08 Python
Django 导出 Excel 代码的实例详解
2017/08/11 Python
Python程序员面试题 你必须提前准备!
2018/01/16 Python
python实现飞机大战微信小游戏
2020/03/21 Python
Python替换月份为英文缩写的实现方法
2019/07/15 Python
Python BeautifulSoup [解决方法] TypeError: list indices must be integers or slices, not str
2019/08/07 Python
Python for循环通过序列索引迭代过程解析
2020/02/07 Python
什么是组件架构
2016/05/15 面试题
生产车间主任的个人自我鉴定
2013/10/25 职场文书
学校运动会开幕演讲稿
2014/01/04 职场文书
迟到检讨书500字
2014/02/05 职场文书
大学专科自荐信
2014/06/17 职场文书
五四青年节的活动方案
2014/08/20 职场文书
2015年出纳个人工作总结
2015/04/02 职场文书
婚礼伴郎致辞
2015/07/28 职场文书
导游词之香港-太平山顶
2019/10/18 职场文书
Redis Cluster 集群搭建你会吗
2021/08/04 Redis
关于HTML编码导致的乱码问题
2021/09/04 HTML / CSS
python 进阶学习之python装饰器小结
2021/09/04 Python
处理canvas绘制图片模糊问题
2022/05/11 Javascript