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语言实现机器学习的K-近邻算法
Jun 11 Python
详解Python的Flask框架中生成SECRET_KEY密钥的方法
Jun 07 Python
Python自动化测试Eclipse+Pydev 搭建开发环境
Aug 15 Python
Python 循环语句之 while,for语句详解
Apr 23 Python
详解python爬虫系列之初识爬虫
Apr 06 Python
python 模拟银行转账功能过程详解
Aug 06 Python
PyQt5中多线程模块QThread使用方法的实现
Jan 31 Python
Django操作session 的方法
Mar 09 Python
详解Python IO口多路复用
Jun 17 Python
Django --Xadmin 判断登录者身份实例
Jul 03 Python
学习Python需要哪些工具
Sep 04 Python
PO模式在selenium自动化测试框架的优势
Mar 20 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
一个简单的自动发送邮件系统(二)
2006/10/09 PHP
PHP实现找出有序数组中绝对值最小的数算法分析
2017/08/07 PHP
laravel dingo API返回自定义错误信息的实例
2019/09/29 PHP
juery框架写的弹窗效果适合新手
2013/11/27 Javascript
点击按钮自动加关注的代码(sina微博/QQ空间/人人网/腾讯微博)
2014/01/02 Javascript
在JavaScript中操作数组之map()方法的使用
2015/06/09 Javascript
jQuery实现的购物车物品数量加减功能代码
2016/11/16 Javascript
在javaScript中检测数据类型的几种方式小结
2017/03/04 Javascript
jQuery+ajax实现动态添加表格tr td功能示例
2018/04/23 jQuery
vue视图不更新情况详解
2019/05/16 Javascript
Vue.js+cube-ui(Scroll组件)实现类似头条效果的横向滚动导航条
2019/06/24 Javascript
Node使用Nodemailer发送邮件的方法实现
2020/02/24 Javascript
python的几种开发工具介绍
2007/03/07 Python
基于python编写的微博应用
2014/10/17 Python
Python的几个高级语法概念浅析(lambda表达式闭包装饰器)
2016/05/28 Python
python 根据pid杀死相应进程的方法
2017/01/16 Python
pycharm重置设置,恢复默认设置的方法
2018/10/22 Python
Python读取系统文件夹内所有文件并统计数量的方法
2018/10/23 Python
python执行scp命令拷贝文件及文件夹到远程主机的目录方法
2019/07/08 Python
python列表推导和生成器表达式知识点总结
2020/01/10 Python
浅谈PyTorch的可重复性问题(如何使实验结果可复现)
2020/02/20 Python
深入浅析Python代码规范性检测
2020/07/31 Python
Python configparser模块应用过程解析
2020/08/14 Python
Python中的None与 NULL(即空字符)的区别详解
2020/09/24 Python
Python使用struct处理二进制(pack和unpack用法)
2020/11/12 Python
python在地图上画比例的实例详解
2020/11/13 Python
浅谈CSS3中display属性的Flex布局的方法
2017/08/14 HTML / CSS
新加坡最受追捧的体验平台:Hapz
2018/01/01 全球购物
Chi Chi London官网:购买连衣裙和礼服
2020/10/25 全球购物
现金出纳岗位职责
2014/03/15 职场文书
2014迎国庆标语大全
2014/09/19 职场文书
个人四风问题对照检查材料
2014/10/01 职场文书
2015年个人思想总结
2015/03/09 职场文书
节约用电通知
2015/04/25 职场文书
你喜欢篮球吗?Python实现篮球游戏
2021/06/11 Python
Win11更新失败并提示0xc1900101
2022/04/19 数码科技