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实现对PPT文件进行截图操作的方法
Apr 28 Python
利用python打印出菱形、三角形以及矩形的方法实例
Aug 08 Python
详解Django中六个常用的自定义装饰器
Jul 04 Python
pyqt5的QWebEngineView 使用模板的方法
Aug 18 Python
Python中变量的输入输出实例代码详解
Jul 28 Python
numpy.meshgrid()理解(小结)
Aug 01 Python
Django项目主urls导入应用中views的红线问题解决
Aug 10 Python
python和js交互调用的方法
Jun 23 Python
使用Dajngo 通过代码添加xadmin用户和权限(组)
Jul 03 Python
sqlalchemy实现时间列自动更新教程
Sep 02 Python
详解python的xlwings库读写excel操作总结
Feb 26 Python
python基于OpenCV模板匹配识别图片中的数字
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
Windows PHP5和Apache的安装与配置
2009/06/08 PHP
php中利用post传递字符串重定向的实现代码
2011/04/21 PHP
php基于单例模式封装mysql类完整实例
2016/10/18 PHP
jscript之List Excel Color Values
2007/06/13 Javascript
Javascript图像处理—平滑处理实现原理
2012/12/28 Javascript
jQuery学习笔记之 Ajax操作篇(三) - 过程处理
2014/06/23 Javascript
JavaScript验证电子邮箱的函数
2014/08/22 Javascript
JavaScript中字符串(string)转json的2种方法
2015/06/25 Javascript
浅谈angularjs中响应回车事件
2017/04/24 Javascript
BootStrap selectpicker后台动态绑定数据
2017/06/01 Javascript
详解Layer弹出层样式
2017/08/21 Javascript
详解如何在vue项目中引入elementUI组件
2018/02/11 Javascript
jquery动态添加带有样式的HTML标签元素方法
2018/02/24 jQuery
详解如何在vscode里面调试js和node.js的方法步骤
2018/12/24 Javascript
微信小程序实现简易table表格
2020/06/19 Javascript
使用p5.js临摹动态图形
2019/10/23 Javascript
Vuex模块化应用实践示例
2020/02/03 Javascript
JS操作Fckeditor的一些常用方法(获取、插入等)
2020/02/19 Javascript
vue实现购物车的监听
2020/04/20 Javascript
修改NPM全局模式的默认安装路径的方法
2020/12/15 Javascript
[08:54]《一刀刀一天》之DOTA全时刻18:十九支奔赴西雅图队伍全部出炉
2014/06/04 DOTA
[45:38]DOTA2上海特级锦标赛主赛事日 - 1 胜者组第一轮#1Liquid VS Alliance第一局
2016/03/02 DOTA
python django 增删改查操作 数据库Mysql
2017/07/27 Python
pygame实现俄罗斯方块游戏
2018/06/26 Python
Python中xml和json格式相互转换操作示例
2018/12/05 Python
Python3中exp()函数用法分析
2019/02/19 Python
Python设计密码强度校验程序
2020/07/30 Python
Python实现一个简单的递归下降分析器
2020/08/01 Python
Kiehl’s科颜氏西班牙官方网站:源自美国的植物护肤品牌
2020/02/22 全球购物
澳大利亚最受欢迎的超级商场每日优惠:Catch
2020/11/17 全球购物
课程设计心得体会
2013/12/28 职场文书
员工考核管理制度
2014/02/02 职场文书
档案管理员岗位职责
2015/02/12 职场文书
2015年共青团工作总结
2015/05/15 职场文书
车辆管理制度范本
2015/08/05 职场文书
如何书写读后感?(附范文)
2019/07/26 职场文书