python录音pyaudio_Python开发之路(1)-用pyaudio录制和广播,使用,Pyaudio,进行,录音,播音...
Python开发之路(1)— 使用Pyaudio进行录音和播音
一、安装Pyaudio
1、在Windows10的PyCharm集成开发环境里安装Pyaudio
打开【Settings】,选择【Project Interpreter】,然后点击右侧的【+】号
搜索
pyaudio
,点击安装
2、在ubuntu16下使用pip3安装Pyaudio
如果ubuntu下没有安装pip3,使用如下命令安装
sudo apt-get install python3-pip
我们需要安装一些依赖库
sudo apt-get install libasound-dev portaudio19-dev libportaudio2 libportaudiocpp0
sudo apt-get install swig
sudo apt-get install libatlas-base-dev
sudo apt-get install alsa-utils alsa-tools alsa-tools-gui alsamixergui -y
然后使用pip3命令安装pyaudio即可
pip3 install pyaudio
3、安装失败
无论是在windows还是Ubuntu下安装失败,我们可以直接使用whl安装,
下载地址:
https://www.lfd.uci.edu/~gohlke/pythonlibs/#pyaudio
选择和直接系统位数及python版本对应的下载,例如我的是Python 3.7.6,64为的Windows系统,就选择
PyAudio‑0.2.11‑cp37‑cp37m‑win_amd64.whl
下载好后打开命令行进入到那个文件夹下,使用命令安装即可:
pip install PyAudio-0.2.11-cp37-cp37m-win_amd64.whl #windows下
在Ubuntu下就使用
pip3 install PyAudio-0.2.11-cp37-cp37m-win_amd64.whl #Ubuntu下
如下所示,安装成功
二、使用pyaudio播音
首先我们要确认声卡是否能够使用在Ubuntu 上输入
alsaloop
命令,即在扬声器听到你说话的声音。
我们要导入需要用到的pyaudio包
import pyaudio,wave
首先,打开我们要播放的文件
# 打开我们要播放的文件
wf=wave.open(r"01.wav",'rb')
然后就可以实例化一个PyAudio对象了
# 实例化一个PyAudio对象
pa = pyaudio.PyAudio()
然后使用这个对象去打开声卡,设置 采样深度、通道数、采样率、输入和采样点缓存数量
# 打开声卡
stream = pa.open(format=pa.get_format_from_width(wf.getsampwidth()), # 从wf中获取采样深度
channels=wf.getnchannels(), # 从wf中获取声道数
rate=wf.getframerate(), # 从wf中获取采样率
output=True) # 设置为输出
然后将得到的音频数据播放出来即可
count = 0
while count < 8*5:
audio_data = stream.read(2048) # 读出声卡缓冲区的音频数据
record_buf.append(audio_data) # 将读出的音频数据追加到record_buf列表
count += 1
print('*')
播放完成后关闭声卡,终止PyAudio
# 关闭声卡
stream.close()
pa.terminate()
在Windows下直接使用录音机录音,然后将名字修改成"
01.wav
",并复制到python脚本所在的文件夹下;
在ubuntu下,可以使用命令录制一段5秒的声音进行测试;
arecord -D "plughw:0,0" -f S16_LE -r 16000 -d 5 -t wav 01.wav
参数是意义
指令
含义
本指令含义
-D
选择设备名称
使用系统自带声卡plughw:0,0
-f
录音格式
S16_LE代表有符号16位小端序
-r
采样率
16000是16KHz采样
d
录音时长
录音5秒
-t
录音格式
wav格式
01.wav
文件名,可以包含路径
文件名字叫 01.wav
然后运行python程序即可播放声音
三、使用pyaudio录音
首先我们要确认声卡是否能够使用,在windows上直接使用windows自带的录音机即可;在Ubuntu 上输入
alsaloop
命令,即在扬声器听到你说话的声音。保证声卡可以使用后我们就可以开始编写代码进行录音了。
首先,我们要导入需要用到的pyaudio包
import pyaudio,wave
接下来就可以实例化一个PyAudio对象了
# 实例化一个PyAudio对象
pa = pyaudio.PyAudio()
然后使用这个对象去打开声卡,设置 采样深度、通道数、采样率、输入和采样点缓存数量
# 打开声卡,设置 采样深度为16位、声道数为2、采样率为16、输入、采样点缓存数量为2048
stream = pa.open(format=pyaudio.paInt16, channels=2, rate=16000, input=True, frames_per_buffer=2048)
新建一个列表,用来存储采样到的数据
# 新建一个列表,用来存储采样到的数据
record_buf = []
然后就通过声卡循环采用,采样到一定数据后即可停止采样
count = 0
while count < 8*5:
audio_data = stream.read(2048) # 读出声卡缓冲区的音频数据
record_buf.append(audio_data) # 将读出的音频数据追加到record_buf列表
count += 1
print('*')
采样完成后将数据写入一个wav文件,首先我们要创建一个音频文件,然后设置 声道数、采样深度、采样率
wf = wave.open('01.wav', 'wb') # 创建一个音频文件,名字为“01.wav"
wf.setnchannels(2) # 设置声道数为2
wf.setsampwidth(2) # 设置采样深度为
wf.setframerate(16000) # 设置采样率为16000
# 将数据写入创建的音频文件
wf.writeframes("".encode().join(record_buf))
# 写完后将文件关闭
wf.close()
然后我们需要要停止声卡,关闭声卡,终止pyaudio
# 停止声卡
stream.stop_stream()
# 关闭声卡
stream.close()
# 终止pyaudio
pa.terminate()
运行程序,可以看到脚本目录下多出来一个大约5秒的音频文集,windows下直接使用默认播放器麻烦即可,在ubuntu下可以使用命令播放
aplay 01.wav
四、优化
为了更好的使用体验,我们可以在录音的过程中添加一个进度条。
要使用进度条,我们需要导入
tqdm
模块,在Pycharm里之间搜索然后安装即可:
在ubuntu里使用命令安装即可:
pip3 install tqdm
然后就可以导入tqdm模块
from tqdm import tqdm
将录音python 代码中的循环采样中的
while count < 8 * 5 :
修改为
for i in tqdm(range( 8 * 5 )):
即可:
然后可以看到:
python录音pyaudio_Python开发之路(1)-用pyaudio录制和广播,使用,Pyaudio,进行,录音,播音...相关推荐
- python 全栈开发之路 day1
python 全栈开发之路 day1 本节内容 计算机发展介绍 计算机硬件组成 计算机基本原理 计算机 计算机(computer)俗称电脑,是一种用于高速计算的电子计算机器,可以进行数值计算,又可以进 ...
- Python全栈开发之路 【第六篇】:Python基础之常用模块
本节内容 模块分类:好处:标准库:help("modules") 查看所有python自带模块列表第三方开源模块:自定义模块:模块调用: import modulefrom os ...
- Python全栈开发之路 【第一篇】:Python 介绍
本节内容 一.Python介绍 python的创始人为荷兰人--吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本 ...
- 战争热诚的python全栈开发之路
战争热诚的python全栈开发之路 从学习python开始,一直是自己摸索,但是时间不等人啊,所以自己为了节省时间,决定报个班系统学习,下面整理的文章都是自己学习后,认为重要的需要弄懂的知识点,做出链 ...
- Python开发之路(4)— 使用 snowboy 做语音唤醒功能
Python开发之路(4)- 使用 snowboy 做语音唤醒功能 本次开发在Ubuntu16.04虚拟机系统. 一.snowboy介绍 snowboy 是一个开源的.轻量级语音唤醒引擎,可以通过它很 ...
- Python开发之路(5)— 使用HTTP获取天气情况
Python开发之路(5)- 使用HTTP获取天气情况 一.心知天气 首先,我们需要使用到的一个平台就是心知天气:https://www.seniverse.com/ 进入心知天气的网站,注册一个账号 ...
- python开发的录音机(二)让鼠标点击与开始录音同步(录制与回放鼠标宏)
当我们用录音机录网上的音乐时,有一个场景让人困扰: 比如听以下页面中的一首歌,要在页面上点击一下播放按钮 如果想把这一首歌录下来,当点击了播放按钮再去点录音机的录音按钮时,中间有一个时间差.可能一不小 ...
- python全栈开发要学些什么_战争热诚的python全栈开发之路
从学习python开始,一直是自己摸索,但是时间不等人啊,所以自己为了节省时间,决定报个班系统学习,下面整理的文章都是自己学习后,认为重要的需要弄懂的知识点,做出链接,一方面是为了自己找的话方便,一方 ...
- 我的全栈之路-Python基础之Python概述与开发环境搭建
我的全栈之路-Python基础之Python概述与开发环境搭建 我的全栈之路 1.1 信息技术发展趋势 1.2 浅谈计算机系统架构 1.2.1 计算机系统架构概述 1.2.2 计算机硬件系统 1.2. ...
- python 全栈开发,Day112(内容回顾,单例模式,路由系统,stark组件)
python 全栈开发,Day112(内容回顾,单例模式,路由系统,stark组件) 一.内容回顾 类可否作为字典的key 初级 举例: class Foo(object):pass_registry ...
最新文章
- linux vi编辑 整理
- 图形化客户端Navicat介绍和使用
- grub legacy
- nginx 访问控制之deny allow
- python清空字典保留变量_python彻底清除字典数据,clear方法使用
- Elasticsearch全文检索对比:match、match_phrase、wildcard
- 在tnsnames.ora中配置监听
- 分布式机器学习框架:CXXNet
- 华硕z97不识别m2固态_华硕H110T +i3 8100T 组装黑苹果Mac mini安装教程
- redis开启远程连接访问和需要密码的方法
- 2019云计算战局前瞻:百度云要啃“硬骨头”
- Synchronized 锁升级机制
- Android Studio的怪错:AndroidManifest.xml unresolve symbol package/connot resolve symbol/Animations
- spring源码视频教程哪个好
- java setmethod_java.util.zip.ZipEntry.setMethod(int method)方法示例
- install sql server 2016 Error code 0x84B20001
- 手码-在U-boot SPL 移植新的PMIC芯片驱动
- 人工智能在音乐领域的应用概述(1)---听歌识曲
- 我打算去广东第一“鬼城”,买房安家
- Postman 实用接口测试执行顺序