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 24 Python
python2 与 pyhton3的输入语句写法小结
Sep 10 Python
python学生信息管理系统(初级版)
Oct 17 Python
Python实现的对本地host127.0.0.1主机进行扫描端口功能示例
Feb 15 Python
详解python持久化文件读写
Apr 06 Python
Python Django切换MySQL数据库实例详解
Jul 16 Python
Python 脚本拉取 Docker 镜像问题
Nov 10 Python
tensorflow2.0与tensorflow1.0的性能区别介绍
Feb 07 Python
Python新手如何进行闭包时绑定变量操作
May 29 Python
浅谈pandas dataframe对除数是零的处理
Jul 20 Python
Python如何读写字节数据
Aug 05 Python
python 实现aes256加密
Nov 27 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+ajax实现无刷新的新闻留言系统
2020/12/21 PHP
Yii隐藏URL中index.php的方法
2016/07/12 PHP
PHP合并数组函数array_merge用法分析
2017/02/17 PHP
JavaScript 模仿vbs中的 DateAdd() 函数的代码
2007/08/13 Javascript
JavaScript Event学习补遗 addEventSimple
2010/02/11 Javascript
js读取本地excel文档数据的代码
2010/11/11 Javascript
javascript拓展DOM操作 prependChild insertAfert
2010/11/17 Javascript
js判断为空Null与字符串为空简写方法
2014/02/24 Javascript
jQuery通过Ajax返回JSON数据
2015/04/28 Javascript
JS实现来回出现文字的状态栏特效代码
2015/10/31 Javascript
JavaScript编程的单例设计模讲解
2015/11/10 Javascript
JS组件Bootstrap Select2使用方法详解
2020/04/17 Javascript
浅谈JS继承_寄生式继承 &amp; 寄生组合式继承
2016/08/16 Javascript
JS+Canvas绘制动态时钟效果
2017/11/10 Javascript
基于vue.js 2.x的虚拟滚动条的示例代码
2018/01/23 Javascript
微信小程序开发(一):服务器获取数据列表渲染操作示例
2020/06/01 Javascript
vue 解决兄弟组件、跨组件深层次的通信操作
2020/07/27 Javascript
vue+element-ui JYAdmin后台管理系统模板解析
2020/07/28 Javascript
Vue中使用Echarts仪表盘展示实时数据的实现
2020/11/01 Javascript
python根据距离和时长计算配速示例
2014/02/16 Python
python实现将html表格转换成CSV文件的方法
2015/06/28 Python
在Python中marshal对象序列化的相关知识
2015/07/01 Python
Python读取excel指定列生成指定sql脚本的方法
2018/11/28 Python
浅谈ROC曲线的最佳阈值如何选取
2020/02/28 Python
html5中localStorage本地存储的简单使用
2017/06/16 HTML / CSS
YSL Beauty加拿大官方商城:圣罗兰美妆加拿大
2017/05/15 全球购物
老师自我鉴定范文
2013/12/25 职场文书
门诊手术室工作制度
2014/01/30 职场文书
信息技术毕业生自荐信范文
2014/03/13 职场文书
毕业生如何写自我鉴定
2014/03/15 职场文书
高一课前三分钟演讲稿
2014/09/13 职场文书
小学五一劳动节活动总结
2015/02/09 职场文书
2015年统计员个人工作总结
2015/07/23 职场文书
毕业典礼致辞
2015/07/29 职场文书
三八妇女节致辞
2015/07/31 职场文书
python 如何执行控制台命令与操作剪切板
2021/05/20 Python