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. linux vi编辑 整理
  2. 图形化客户端Navicat介绍和使用
  3. grub legacy
  4. nginx 访问控制之deny allow
  5. python清空字典保留变量_python彻底清除字典数据,clear方法使用
  6. Elasticsearch全文检索对比:match、match_phrase、wildcard
  7. 在tnsnames.ora中配置监听
  8. 分布式机器学习框架:CXXNet
  9. 华硕z97不识别m2固态_华硕H110T +i3 8100T 组装黑苹果Mac mini安装教程
  10. redis开启远程连接访问和需要密码的方法
  11. 2019云计算战局前瞻:百度云要啃“硬骨头”
  12. Synchronized 锁升级机制
  13. Android Studio的怪错:AndroidManifest.xml unresolve symbol package/connot resolve symbol/Animations
  14. spring源码视频教程哪个好
  15. java setmethod_java.util.zip.ZipEntry.setMethod(int method)方法示例
  16. install sql server 2016 Error code 0x84B20001
  17. 手码-在U-boot SPL 移植新的PMIC芯片驱动
  18. 人工智能在音乐领域的应用概述(1)---听歌识曲
  19. 我打算去广东第一“鬼城”,买房安家
  20. Postman 实用接口测试执行顺序

热门文章

  1. Mysql数据库查询优化日常笔记
  2. 金字塔原理读书笔记 一 为什么使用金字塔结构
  3. Java 数组 快速排序
  4. CMMI4 培训计划
  5. mysql 报表工具_Navicat功能:报表创建工具
  6. HTML——表格的快速生成以及表格的合并
  7. unity aspon word excel ppt pdf转图片
  8. mc用什么版本的java_我的世界网易 Java 版哪个版本比较好?
  9. Linux下tomcat修改端口(80)
  10. 原生Ajax详细获取数据