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,进行,录音,播音...相关推荐

  1. python 全栈开发之路 day1

    python 全栈开发之路 day1 本节内容 计算机发展介绍 计算机硬件组成 计算机基本原理 计算机 计算机(computer)俗称电脑,是一种用于高速计算的电子计算机器,可以进行数值计算,又可以进 ...

  2. Python全栈开发之路 【第六篇】:Python基础之常用模块

    本节内容 模块分类:好处:标准库:help("modules") 查看所有python自带模块列表第三方开源模块:自定义模块:模块调用: import modulefrom os ...

  3. Python全栈开发之路 【第一篇】:Python 介绍

    本节内容 一.Python介绍 python的创始人为荷兰人--吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本 ...

  4. 战争热诚的python全栈开发之路

    战争热诚的python全栈开发之路 从学习python开始,一直是自己摸索,但是时间不等人啊,所以自己为了节省时间,决定报个班系统学习,下面整理的文章都是自己学习后,认为重要的需要弄懂的知识点,做出链 ...

  5. Python开发之路(4)— 使用 snowboy 做语音唤醒功能

    Python开发之路(4)- 使用 snowboy 做语音唤醒功能 本次开发在Ubuntu16.04虚拟机系统. 一.snowboy介绍 snowboy 是一个开源的.轻量级语音唤醒引擎,可以通过它很 ...

  6. Python开发之路(5)— 使用HTTP获取天气情况

    Python开发之路(5)- 使用HTTP获取天气情况 一.心知天气 首先,我们需要使用到的一个平台就是心知天气:https://www.seniverse.com/ 进入心知天气的网站,注册一个账号 ...

  7. python开发的录音机(二)让鼠标点击与开始录音同步(录制与回放鼠标宏)

    当我们用录音机录网上的音乐时,有一个场景让人困扰: 比如听以下页面中的一首歌,要在页面上点击一下播放按钮 如果想把这一首歌录下来,当点击了播放按钮再去点录音机的录音按钮时,中间有一个时间差.可能一不小 ...

  8. python全栈开发要学些什么_战争热诚的python全栈开发之路

    从学习python开始,一直是自己摸索,但是时间不等人啊,所以自己为了节省时间,决定报个班系统学习,下面整理的文章都是自己学习后,认为重要的需要弄懂的知识点,做出链接,一方面是为了自己找的话方便,一方 ...

  9. 我的全栈之路-Python基础之Python概述与开发环境搭建

    我的全栈之路-Python基础之Python概述与开发环境搭建 我的全栈之路 1.1 信息技术发展趋势 1.2 浅谈计算机系统架构 1.2.1 计算机系统架构概述 1.2.2 计算机硬件系统 1.2. ...

  10. python 全栈开发,Day112(内容回顾,单例模式,路由系统,stark组件)

    python 全栈开发,Day112(内容回顾,单例模式,路由系统,stark组件) 一.内容回顾 类可否作为字典的key 初级 举例: class Foo(object):pass_registry ...

最新文章

  1. 【简明书】机器学习用例书册
  2. 如何在Docker容器中挂载主机目录
  3. RabbitMQ通配符模式
  4. jQuery的弹出窗口插件colorbox
  5. 关于六年级定格动画计算机教案,定格动画教案
  6. 浏览器渲染机制面试_面试官不讲码德,问我Chrome浏览器的渲染原理(6000字长文)...
  7. JSP关于用户安全退出的问题
  8. ETL的数据同步工具调研(持续更新中)
  9. Nand Flash与Nor Flash
  10. 增加 magento top_menu菜单
  11. 远东传动收购机器人_一张图为你总结最近5年在机器人领域收购案例
  12. 这是我见过最通俗易懂的单例模式讲解了!
  13. django进阶07用户模块与权限系统
  14. atitit.研发管理--标准化流程总结---java开发环境与项目部署环境的搭建工具包总结
  15. python爬虫网络出错怎么办_python网络爬虫(3)python爬虫遇到的各种问题(python版本、进程等)...
  16. Postman设置环境变量
  17. ps打开曲线的快捷键,ps合并图层的快捷键,ps色相饱和度快捷键,组合键【CTRL】+【B】,该组合键是用于调整色彩平衡。
  18. 中国民族博览杂志中国民族博览杂志社中国民族博览编辑部2022年第7期目录
  19. python中shelf对象_shelve 用来持久化任意的Python对象实例代码_python_脚本之家
  20. 从民国时期小学生的两篇作文来看两位小作者的写作能力。

热门文章

  1. 中国象棋博弈源代码Android,中国象棋源代码
  2. 日本盗版漫画网站的罪与罚
  3. Android 和 Ios测试的区别
  4. 余华:从手握钢钳的牙医到名满世界的作家
  5. Java性能优化全攻略
  6. 后摩尔时代下先进封装技术
  7. 360浏览器cookie的导出
  8. qunee for html5,Qunee for HTML5(二)
  9. AMOS分析技术:二阶验证性因子分析
  10. Linux如何增加SSH端口号