python之使用pyaudio录音和格式转化

环境

pip3 install pyaudio
pip3 install wave
pip3 install numpy

linux 21.04
python 3.7

代码(Record类)

#!/bin/python3
# 标识引用的python版本
import pyaudio
import wave
import sys
import os
import numpy as np"""
首先集成一下录音功能和格式转换功能
"""
class Record():"""录音的类CHUNK = 1024FORMAT = pyaudio.paInt16  CHANNELS = 1  声道RATE = 16000  频率RECORD_SECONDS = 5  录音时间  单位=> sWAVE_OUTPUT_FILENAME = os.getcwd() + "/python/output1.wav"   录音文件"""def __init__(self,WAVE_OUTPUT_FILENAME,CHUNK=1024,FORMAT=pyaudio.paInt16,CHANNELS=1,RECORD_SECONDS=5,Input=True,RATE=16000,PCMName="out.pcm",DataType=np.int16):self.CHUNK = CHUNKself.FORMAT = FORMATself.CHANNELS = CHANNELSself.RECORD_SECONDS = RECORD_SECONDSself.WAVE_OUTPUT_FILENAME = WAVE_OUTPUT_FILENAMEself.Input = Inputself.RATE = RATEself.PCMName = PCMNameself.DataType = DataTypedef recording(self):"""这句代码 会屏蔽一些不必要的报错os.close(sys.stderr.fileno())"""#隐藏一些报错,这些不影响程序的运行os.close(sys.stderr.fileno())print("开始录音")p = pyaudio.PyAudio()stream = p.open(format=self.FORMAT,channels=self.CHANNELS,rate=self.RATE,input=self.Input,#默认为Trueframes_per_buffer=self.CHUNK)frames = []for i in range(0, int(self.RATE / self.CHUNK * self.RECORD_SECONDS)):data = stream.read(self.CHUNK)frames.append(data)print("done")# 关闭流stream.stop_stream()stream.close()p.terminate()wf = wave.open(self.WAVE_OUTPUT_FILENAME, 'wb')wf.setnchannels(self.CHANNELS)wf.setsampwidth(p.get_sample_size(self.FORMAT))wf.setframerate(self.RATE)wf.writeframes(b''.join(frames))wf.close()def wav2pcm(self):"""音频文件wav格式 转 pcm格式"""f = open(self.WAVE_OUTPUT_FILENAME, "rb")f.seek(0)f.read(1024)data = np.fromfile(f, dtype=self.DataType)# 获取 分割后的 数组filePath =  str(self.WAVE_OUTPUT_FILENAME).split('/')path = ''# 拼接路径 取出最后一位 [0,-1)for item in filePath[:-1]:path += item +'/'path += self.PCMName # print("PCM Path =>",path)data.tofile(path)print("结束")# 可以返回一个元组; 也可以把它封成数组返回return (self.WAVE_OUTPUT_FILENAME,path)def run(self):self.recording()wavpath,path = self.wav2pcm()# print("wave =>",wavpath,"\n","path =>",path)# 这个就不写入那个类里了, 这样方便调用 不需要再初始化类了
# 可直接copy到使用的类中或者文件里
def pcm2wav(pcmfile,wavfile,channels=1,rate=16000):with open(pcmfile,'rb') as fp:pcmdata = fp.read()with wave.open(wavfile, 'wb') as wav:wav.setnchannels(channels)wav.setsampwidth(16 // 8)wav.setframerate(rate)# 写入wav.writeframes(pcmdata)# 测试
if __name__ == "__main__":wavepath = os.getcwd() + "/python/output1.wav"  dev = Record(wavepath)# dev.run()pcmfile = os.getcwd() + '/python/demo.pcm'wavfile = os.getcwd() + '/python/demo.wav'pcm2wav(pcmfile,wavfile)

python之使用pyaudio录音和格式转化相关推荐

  1. python实现图片格式转换_干货必看 | Python实现图片格式转化

    今天教大家一个实用的小技巧,用Python实现图片格式转化,即将PDF格式转化成PNG格式. 整体代码: import fitz ''' #将PDF转化为图片 pdfPath pdf文件的路径 img ...

  2. python实现视频格式转化、调节视频播放速度(仅需三行代码)

    python实现视频格式转化.调节视频速度 支持格式: MoviePy 能处理的视频是 ffmpeg 格式的,支持的文件类型:*.mp4 *.wmv *.rm *.avi *.flv *.webm * ...

  3. 【python自动化办公】好用的在线网站推荐解决pdf格式转化、文字提取、图片质量增强、抠图等

    目录 前言 1. 学习python自动化办公目的 2. 以往学习内容 3. 资料来源 1. 文档在线格式转化--ALL TO ALL 2. PDF在线工具--PDF24 Tools 3. PDF工具合 ...

  4. python GMT时间格式转化

    1.datetime类型转换成GMT时间格式的字符串(如'Thu, 19 Feb 2009 16:00:07 GMT'),strftime(官方释义:new string) : from dateti ...

  5. python录音pyaudio_『开发技巧』Python音频操作工具PyAudio上手教程

    『开发技巧』Python音频操作工具PyAudio上手教程 ​ 0.引子 当需要使用Python处理音频数据时,使用python读取与播放声音必不可少,下面介绍一个好用的处理音频PyAudio工具包. ...

  6. 【python中级】苹果HEIC格式转化JPG

    [python中级]苹果HEIC格式转化JPG 1.背景 2.安装pyheif 依赖包 3.代码 4.使用方法 5.资源 1.背景 将苹果手机上的照片上传NAS,发现照片格式是 HEIC 格式. HE ...

  7. Python:numpy数组转换为json格式

    在python中,如何将一个numpy数组转换为json格式? 这是最近遇到的一个问题,做个笔记. 假设arr为numpy数组,将其转换为json格式: 总体思想是①首先转换为python的list, ...

  8. python的pyaudio教程入门_『开发技巧』Python音频操作工具PyAudio上手教程

    『开发技巧』Python音频操作工具PyAudio上手教程 ​ 0.引子 当需要使用Python处理音频数据时,使用python读取与播放声音必不可少,下面介绍一个好用的处理音频PyAudio工具包. ...

  9. python音频分析工具_『开发技巧』Python音频操作工具PyAudio上手教程

    『开发技巧』Python音频操作工具PyAudio上手教程 ​ 0.引子 当需要使用Python处理音频数据时,使用python读取与播放声音必不可少,下面介绍一个好用的处理音频PyAudio工具包. ...

  10. python处理音频的软件_『开发技巧』Python音频操作工具PyAudio上手教程

    『开发技巧』Python音频操作工具PyAudio上手教程 ​ 0.引子 当需要使用Python处理音频数据时,使用python读取与播放声音必不可少,下面介绍一个好用的处理音频PyAudio工具包. ...

最新文章

  1. HDU2222(AC自动机模版题)
  2. 取数字问题:动态规划
  3. eclipse是否免费
  4. 计算机数据库技术的应用现状,数据库技术发展现状及趋势.doc
  5. 麒麟系统兼容安卓生态 弥补生态短板
  6. python exceptions怎么用_Python基础介绍 | Exceptions异常
  7. 小项目--猜年龄游戏
  8. 读书笔记-1-《书都不会读,你还想成功?》
  9. 无效的列类型 || Mbatis-Plus链接oracle
  10. H3CNE实验:Comware基本命令操作
  11. lol微信登录服务器,LOL开启微信登录功能测试 绑定微信登陆方法一览
  12. el-cascader数据绑定值原理之展平操作的算法
  13. python期货交易_strategies/python版CTP商品期货交易类库.py at master · gzhou1024/strategies · GitHub...
  14. 为什么你的前端工作经验不值钱?
  15. 杀戮空间2游戏开服架设好后怎么查找自己服务器
  16. RAID的几种常用模式
  17. win7下配置FTP服务
  18. 2020牛客寒假算法基础集训营1总结
  19. Problem 2128 最长子串(kmp+strstr好题经典)
  20. 花草护卫队小组站立会议全记录

热门文章

  1. 2019最新大数据分析智能BI Tableau教程视频(18章节)
  2. 虚拟服务器建网站苹果cms,零基础搭建苹果cmsv10影视站教程
  3. MATLAB(矩阵转置等操作)
  4. 集成电路设计-读书笔记(一)
  5. 《机器学习基石》课程笔记(3)
  6. 【MODIS数据的下载】
  7. 简单的Markdown解析器
  8. 肝一份java性能调优手册
  9. 毛星云opencv之用鼠标进行交互操作
  10. Lightly:新一代的C语言IDE