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计算时间差的方法
May 20 Python
Python中字典映射类型的学习教程
Aug 20 Python
详解MySQL数据类型int(M)中M的含义
Nov 20 Python
Python实现正弦信号的时域波形和频谱图示例【基于matplotlib】
May 04 Python
Python实现EXCEL表格的排序功能示例
Jun 25 Python
python如果快速判断数字奇数偶数
Nov 13 Python
Python可变参数会自动填充前面的默认同名参数实例
Nov 18 Python
Python模块的定义,模块的导入,__name__用法实例分析
Jan 07 Python
TensorFlow实现指数衰减学习率的方法
Feb 05 Python
使用pygame编写Flappy bird小游戏
Mar 14 Python
Python json读写方式和字典相互转化
Apr 18 Python
PyQt5结合matplotlib绘图的实现示例
Sep 15 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
一个简单的自动发送邮件系统(一)
2006/10/09 PHP
php 设计模式之 工厂模式
2008/12/19 PHP
PHP语言中global和$GLOBALS[]的分析 之二
2012/02/02 PHP
PHP+Memcache实现wordpress访问总数统计(非插件)
2014/07/04 PHP
一张表搞清楚php is_null、empty、isset的区别
2015/07/07 PHP
yii2.0整合阿里云oss的示例代码
2017/09/19 PHP
PHP实现的微信APP支付功能示例【基于TP5框架】
2019/09/16 PHP
关于IFRAME 自适应高度的研究
2006/07/20 Javascript
domReady的实现案例
2016/11/23 Javascript
JavaScript制作简单的框选图表
2017/05/15 Javascript
微信小程序如何再次获取用户授权的方法
2019/05/10 Javascript
JavaScript实现网页动态生成表格
2020/11/25 Javascript
Python 文件操作实现代码
2009/10/07 Python
python 字符串格式化代码
2013/03/17 Python
python人人网登录应用实例
2014/09/26 Python
利用ctypes提高Python的执行速度
2016/09/09 Python
python list删除元素时要注意的坑点分享
2018/04/18 Python
解决Python 爬虫URL中存在中文或特殊符号无法请求的问题
2018/05/11 Python
Python实现EXCEL表格的排序功能示例
2019/06/25 Python
python+mysql实现个人论文管理系统
2019/10/25 Python
Python any()函数的使用方法
2019/10/28 Python
全面总结使用CSS实现水平垂直居中效果的方法
2016/03/10 HTML / CSS
html5 canvas简单封装一个echarts实现不了的饼图
2018/06/12 HTML / CSS
wedgwood加拿大官网:1759年成立的英国国宝级陶瓷餐具品牌
2018/07/17 全球购物
英国女装网上商店:I Saw It First
2018/10/18 全球购物
德国的大型美妆个护电商:Flaconi
2020/06/26 全球购物
英语教学随笔感言
2014/02/20 职场文书
英语故事演讲稿
2014/04/29 职场文书
中层干部培训方案
2014/06/16 职场文书
罚站检讨书
2015/01/29 职场文书
发票退票证明
2015/06/24 职场文书
python关于集合的知识案例详解
2021/05/30 Python
MySQL 不等于的三种使用及区别
2021/06/03 MySQL
Python3 多线程(连接池)操作MySQL插入数据
2021/06/09 Python
CSS 一行代码实现头像与国旗的融合
2021/10/24 HTML / CSS
PostgreSQL并行计算算法及参数强制并行度设置方法
2022/04/07 PostgreSQL