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生成随机验证码(中文验证码)示例
Apr 03 Python
Python本地与全局命名空间用法实例
Jun 16 Python
python获取元素在数组中索引号的方法
Jul 15 Python
python实现文本文件合并
Dec 29 Python
python executemany的使用及注意事项
Mar 13 Python
python实现分页效果
Oct 25 Python
python 内置模块详解
Jan 01 Python
python 实现查找文件并输出满足某一条件的数据项方法
Jun 12 Python
打包python 加icon 去掉cmd黑窗口方法
Jun 24 Python
python读写csv文件实例代码
Jul 05 Python
浅析PyCharm 的初始设置(知道)
Oct 12 Python
pycharm实现猜数游戏
Dec 07 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 DataGrid 实现代码
2009/08/12 PHP
PHP安全配置详细说明
2011/09/26 PHP
php存储过程调用实例代码
2013/02/03 PHP
php格式化日期实例分析
2014/11/12 PHP
PHP去除空数组且数组键名重置的讲解
2019/02/28 PHP
laravel5.5添加echarts实现画图功能的方法
2019/10/09 PHP
js 完美图片新闻轮转效果,腾讯大粤网首页图片轮转改造而来
2011/11/21 Javascript
如何使用Javascript获取距今n天前的日期
2013/07/08 Javascript
javascript中的取反再取反~~没有意义
2014/04/06 Javascript
JavaScript读二进制文件并用ajax传输二进制流的方法
2016/07/18 Javascript
canvas 弹幕效果(实例分享)
2017/01/11 Javascript
vue项目中axios使用详解
2018/02/07 Javascript
基于Vue实现可以拖拽的树形表格实例详解
2018/10/18 Javascript
React-redux实现小案例(todolist)的过程
2019/09/29 Javascript
Vue实现仿iPhone悬浮球的示例代码
2020/03/13 Javascript
js实现自定义滚动条的示例
2020/10/27 Javascript
[39:08]完美世界DOTA2联赛PWL S3 LBZS vs CPG 第一场 12.12
2020/12/16 DOTA
Python实现的ini文件操作类分享
2014/11/20 Python
python操作mongodb根据_id查询数据的实现方法
2015/05/20 Python
深入解析Python中的变量和赋值运算符
2015/10/12 Python
python 统计代码行数简单实例
2017/05/04 Python
Pycharm设置utf-8自动显示方法
2019/01/17 Python
Python3解释器知识点总结
2019/02/19 Python
Python使用py2neo操作图数据库neo4j的方法详解
2020/01/13 Python
在python3中使用shuffle函数要注意的地方
2020/02/28 Python
Python编程快速上手——PDF文件操作案例分析
2020/02/28 Python
Pandas读取csv时如何设置列名
2020/06/02 Python
使用Python pip怎么升级pip
2020/08/11 Python
Pycharm学生免费专业版安装教程的方法步骤
2020/09/24 Python
Python析构函数__del__定义原理解析
2020/11/20 Python
List、Map、Set三个接口,存取元素时,各有什么特点?
2015/09/27 面试题
工作建议书范文
2014/05/13 职场文书
改进工作作风心得体会
2016/01/23 职场文书
CSS实现章节添加自增序号的方法
2021/06/23 HTML / CSS
java后台调用接口及处理跨域问题的解决
2022/03/24 Java/Android
React自定义hook的方法
2022/06/25 Javascript