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中使用ElementTree解析XML示例
Jun 02 Python
Python利用Beautiful Soup模块搜索内容详解
Mar 29 Python
python re模块findall()函数实例解析
Jan 19 Python
python+mysql实现教务管理系统
Feb 20 Python
python如何实现视频转代码视频
Jun 17 Python
Python 获取指定文件夹下的目录和文件的实现
Aug 30 Python
python 使用shutil复制图片的例子
Dec 13 Python
tensorflow模型文件(ckpt)转pb文件的方法(不知道输出节点名)
Apr 22 Python
python文件编写好后如何实践
Jul 07 Python
Python实现打包成库供别的模块调用
Jul 13 Python
jupyter 添加不同内核的操作
Feb 06 Python
ubuntu安装jupyter并设置远程访问的实现
Mar 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
解析关于wamp启动是80端口被占用的问题
2013/06/21 PHP
php 删除目录下N分钟前创建的所有文件的实现代码
2013/08/10 PHP
CI框架开发新浪微博登录接口源码完整版
2014/05/28 PHP
PHP+Ajax实现无刷新分页实例详解(附demo源码下载)
2016/04/07 PHP
Centos6.5和Centos7 php环境搭建方法
2016/05/27 PHP
Yii多表联合查询操作详解
2016/06/02 PHP
php+layui数据表格实现数据分页渲染代码
2019/10/26 PHP
jQuery textarea的长度进行验证
2009/05/06 Javascript
jQuery Mobile页面跳转后未加载外部JS原因分析及解决
2013/03/18 Javascript
jQuery oLoader实现的加载图片和页面效果
2015/03/14 Javascript
DropDownList控件绑定数据源的三种方法
2016/12/24 Javascript
利用forever和pm2部署node.js项目过程
2017/05/10 Javascript
使用socket.io制做简易WEB聊天室
2018/01/02 Javascript
JavaScript设计模式之原型模式分析【ES5与ES6】
2018/07/26 Javascript
微信小程序如何引用外部js,外部样式,公共页面模板
2019/07/23 Javascript
在vue中封装的弹窗组件使用队列模式实现方法
2020/07/23 Javascript
[04:54]DOTA2-DPC中国联赛1月31日Recap集锦
2021/03/11 DOTA
python创建只读属性对象的方法(ReadOnlyObject)
2013/02/10 Python
使用Python设置tmpfs来加速项目的教程
2015/04/17 Python
python抓取百度首页的方法
2015/05/19 Python
Python实现Youku视频批量下载功能
2017/03/14 Python
Python爬虫包BeautifulSoup简介与安装(一)
2018/06/17 Python
python编程使用协程并发的优缺点
2018/09/20 Python
Python+OpenCV实现实时眼动追踪的示例代码
2019/11/11 Python
python中的subprocess.Popen()使用详解
2019/12/25 Python
美国现代家具网站:Design Within Reach
2018/07/19 全球购物
乌克兰设计师和品牌的服装:Love&Live
2020/04/14 全球购物
交通安全教育制度
2014/02/02 职场文书
绩效考核实施方案
2014/03/18 职场文书
意向书范文
2014/03/31 职场文书
经典的毕业生自荐信范文
2014/04/14 职场文书
小学生操行评语
2014/04/22 职场文书
党的群众路线教育实践活动对照检查材料思想汇报
2014/09/19 职场文书
2014年园林绿化工作总结
2014/12/11 职场文书
2015初一年级组工作总结
2015/07/24 职场文书
redis protocol通信协议及使用详解
2022/07/15 Redis