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网络编程学习笔记(三):socket网络服务器
Jun 09 Python
Python实现从脚本里运行scrapy的方法
Apr 07 Python
numpy数组拼接简单示例
Dec 15 Python
Python实现使用request模块下载图片demo示例
May 24 Python
python实现动态数组的示例代码
Jul 15 Python
python3-flask-3将信息写入日志的实操方法
Nov 12 Python
django框架forms组件用法实例详解
Dec 10 Python
python绘制雪景图
Dec 16 Python
python opencv实现图片缺陷检测(讲解直方图以及相关系数对比法)
Apr 07 Python
Pytorch1.5.1版本安装的方法步骤
Dec 31 Python
python开发飞机大战游戏
Jul 15 Python
python非标准时间的转换
Jul 25 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中file_exists与is_file,is_dir的区别介绍
2012/09/12 PHP
解析PHP高效率写法(详解原因)
2013/06/20 PHP
PHP中$_FILES的使用方法及注意事项说明
2014/02/14 PHP
php实现按文件名搜索文件的远程文件查找器
2014/05/10 PHP
PHP中exec函数和shell_exec函数的区别
2014/08/20 PHP
ThinkPHP表单数据智能写入create方法实例分析
2015/09/27 PHP
php在windows环境下获得cpu内存实时使用率(推荐)
2018/02/08 PHP
PHP实现的多维数组去重操作示例
2018/07/21 PHP
PHP获取当前系统时间的方法小结
2018/10/03 PHP
javascript小组件 原生table排序表格脚本(兼容ie firefox opera chrome)
2012/07/25 Javascript
jQuery表格插件datatables用法总结
2014/09/05 Javascript
使用JavaScript和C#中获得referer
2014/11/14 Javascript
基于javascript实现的搜索时自动提示功能
2014/12/26 Javascript
javascript面向对象之定义成员方法实例分析
2015/01/13 Javascript
HTML5基于Tomcat 7.0实现WebSocket连接并实现简单的实时聊天
2016/10/31 Javascript
iscroll-probe实现下拉刷新和下拉加载效果
2017/06/28 Javascript
jQuery进阶实践之利用最优雅的方式如何写ajax请求
2017/12/20 jQuery
Vuepress 搭建带评论功能的静态博客的实现
2019/02/17 Javascript
jQuery 常用特效实例小结【显示与隐藏、淡入淡出、滑动、动画等】
2020/05/19 jQuery
python连接sql server乱码的解决方法
2013/01/28 Python
python对url格式解析的方法
2015/05/13 Python
Python中生成器和迭代器的区别详解
2018/02/10 Python
Python Matplotlib库安装与基本作图示例
2019/01/09 Python
python隐藏终端执行cmd命令的方法
2019/06/24 Python
TensorFLow 不同大小图片的TFrecords存取实例
2020/01/20 Python
社区版pycharm创建django项目的方法(pycharm的newproject左侧没有项目选项)
2020/09/23 Python
CSS3中文字镂空、透明值、阴影效果设置示例小结
2016/03/07 HTML / CSS
利用css3 translate完美实现表头固定效果
2017/02/28 HTML / CSS
耐克巴西官方网站:Nike巴西
2016/08/14 全球购物
意大利在线药房:Farmacia Loreto Gallo
2019/08/09 全球购物
意外伤害赔偿协议书范本
2014/09/28 职场文书
实习护士自荐信
2015/03/25 职场文书
干部考核工作总结2015
2015/07/24 职场文书
nginx配置文件使用环境变量的操作方法
2021/06/02 Servers
python字典的元素访问实例详解
2021/07/21 Python
Spring Boot配合PageHelper优化大表查询数据分页
2022/04/20 Java/Android