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基础教程之常用运算符
Aug 29 Python
介绍Python中的一些高级编程技巧
Apr 02 Python
Python fileinput模块使用实例
Jun 03 Python
Python实现破解猜数游戏算法示例
Sep 25 Python
你眼中的Python大牛 应该都有这份书单
Oct 31 Python
Python遍历pandas数据方法总结
Feb 09 Python
python入门前的第一课 python怎样入门
Mar 06 Python
python抖音表白程序源代码
Apr 07 Python
Selenium+Python 自动化操控登录界面实例(有简单验证码图片校验)
Jun 28 Python
Python面向对象之Web静态服务器
Sep 03 Python
python如何查看网页代码
Jun 07 Python
Pytorch中的学习率衰减及其用法详解
Jun 05 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侧拉菜单 漂亮,可以向右或者向左展开,支持FF,IE
2009/10/15 PHP
PHP实现读取一个1G的文件大小
2013/08/24 PHP
php5.2 Json不能正确处理中文、GB编码的解决方法
2014/03/28 PHP
PHP rsa加密解密使用方法
2015/04/27 PHP
谈谈PHP中substr和substring的正确用法及相关参数的介绍
2015/12/16 PHP
编写兼容IE和FireFox的脚本
2009/05/18 Javascript
js判断一个元素是否为另一个元素的子元素的代码
2012/03/21 Javascript
javascript作用域、作用域链(菜鸟必看)
2016/06/16 Javascript
详解Vue.js动态绑定class
2016/12/20 Javascript
jQuery简单绑定单个事件的方法示例
2017/06/10 jQuery
js+html5实现复制文字按钮
2017/07/15 Javascript
vue v-for 使用问题整理小结
2019/08/04 Javascript
详解elementui之el-image-viewer(图片查看器)
2019/08/30 Javascript
js中script的上下放置区别,Dom的增删改创建操作实例分析
2019/12/16 Javascript
Json实现传值到后台代码实例
2020/06/30 Javascript
为什么JavaScript中0.1 + 0.2 != 0.3
2020/12/03 Javascript
python实现ip查询示例
2014/03/26 Python
python常用知识梳理(必看篇)
2017/03/23 Python
用python 批量更改图像尺寸到统一大小的方法
2018/03/31 Python
python爬取网页内容转换为PDF文件
2020/07/28 Python
Pycharm 2019 破解激活方法图文详解
2019/10/11 Python
python给图像加上mask,并提取mask区域实例
2020/01/19 Python
python统计字符串中字母出现次数代码实例
2020/03/02 Python
使用已经得到的keras模型识别自己手写的数字方式
2020/06/29 Python
python实现人性化显示金额数字实例详解
2020/09/25 Python
PyTorch中clone()、detach()及相关扩展详解
2020/12/09 Python
HTML4和HTML5之间除了相似以外的10个主要不同
2012/12/13 HTML / CSS
来自美国主售篮球鞋的零售商店:KICKSUSA
2017/11/28 全球购物
内刊编辑求职自荐书范文
2014/02/19 职场文书
乡镇综治宣传月活动总结
2014/07/02 职场文书
领导干部作风整顿剖析材料
2014/10/11 职场文书
2015年高二班主任工作总结
2015/05/25 职场文书
活着观后感
2015/06/03 职场文书
2015年秋季运动会前导词
2015/07/20 职场文书
python数字类型和占位符详情
2022/03/13 Python
pytorch实现加载保存查看checkpoint文件
2022/07/15 Python