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 字符串split的用法分享
Mar 23 Python
Python进程通信之匿名管道实例讲解
Apr 11 Python
在django中使用自定义标签实现分页功能
Jul 04 Python
Python科学画图代码分享
Nov 29 Python
python 接口返回的json字符串实例
Mar 27 Python
python Web开发你要理解的WSGI &amp; uwsgi详解
Aug 01 Python
使用python实现语音文件的特征提取方法
Jan 09 Python
从列表或字典创建Pandas的DataFrame对象的方法
Jul 06 Python
Django Admin中增加导出CSV功能过程解析
Sep 04 Python
python 导入数据及作图的实现
Dec 03 Python
python计算二维矩形IOU实例
Jan 18 Python
python 读取yaml文件的两种方法(在unittest中使用)
Dec 01 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中的一个中文字符串截取函数
2007/02/14 PHP
xss防御之php利用httponly防xss攻击
2014/03/21 PHP
FireFox与IE 下js兼容触发click事件的代码
2008/11/20 Javascript
ExtJS4 组件化编程,动态加载,面向对象,Direct
2011/05/12 Javascript
jquery中ajax学习笔记一
2011/10/16 Javascript
javascript动画浅析
2012/08/30 Javascript
Javascript之String对象详解
2016/06/08 Javascript
使用React实现轮播效果组件示例代码
2016/09/05 Javascript
微信小程序开发之录音机 音频播放 动画实例 (真机可用)
2016/12/08 Javascript
JS触摸事件、手势事件详解
2017/05/04 Javascript
H5+C3+JS实现双人对战五子棋游戏(UI篇)
2020/05/28 Javascript
如何将百度地图包装成Vue的组件的方法步骤
2019/02/12 Javascript
mock.js模拟数据实现前后端分离
2019/07/24 Javascript
Vue中通过vue-router实现命名视图的问题
2020/04/23 Javascript
JavaScript中ES6规范中let和const的用法和区别
2020/08/06 Javascript
vue或react项目生产环境去掉console.log的操作
2020/09/02 Javascript
Python实现豆瓣图片下载的方法
2015/05/25 Python
Python实现多线程抓取网页功能实例详解
2017/06/08 Python
python交互式图形编程实例(三)
2017/11/17 Python
15行Python代码带你轻松理解令牌桶算法
2018/03/21 Python
python防止随意修改类属性的实现方法
2019/08/21 Python
tensorflow中tf.slice和tf.gather切片函数的使用
2020/01/19 Python
浅谈keras保存模型中的save()和save_weights()区别
2020/05/21 Python
Selenium执行完毕未关闭chromedriver/geckodriver进程的解决办法(java版+python版)
2020/12/07 Python
html2canvas把div保存图片高清图的方法示例
2018/03/05 HTML / CSS
ParcelABC西班牙:包裹运送和快递服务
2019/12/24 全球购物
五年级音乐教学反思
2014/02/06 职场文书
留学顾问岗位职责
2014/04/14 职场文书
公司演讲稿开场白
2014/08/25 职场文书
酒店优秀员工推荐信
2015/03/24 职场文书
小学运动会通讯稿
2015/07/18 职场文书
《小乌鸦爱妈妈》教学反思
2016/02/19 职场文书
小学生节约用水倡议书
2019/08/12 职场文书
深入解析NumPy中的Broadcasting广播机制
2021/05/30 Python
JS精髓原型链继承及构造函数继承问题纠正
2022/06/16 Javascript
Golang gRPC HTTP协议转换示例
2022/06/16 Golang