1.1打开一个音频的输入流

import pyaudioCHUNK = 1024
FORMAT = pyaudio.paInt16
CHANNELS = 2
RATE = 16000p = pyaudio.PyAudio()stream = p.open(format=FORMAT,channels=CHANNELS,rate=RATE,input=True,frames_per_buffer=CHUNK)

1.2代码分析

p = pyaudio.PyAudio() 创建一个PyAudio的

stream = p.open(format=FORMAT,channels=CHANNELS, rate=RATE,input=True,output=False, frames_per_buffer=CHUNK)

用open函数打开一个音频的输入流

文档中对各参数的说明
def __init__(self,PA_manager,rate,              #Sampling rate 采样率channels,             #Number of channels音轨数format,               #Sampling size and format. See |PaSampleFormat|.采样点的大小和类型,见PaSampleFormatinput=False,           #Specifies whether this is an input stream,Defaults to ``False``,是否为输入流,默认为否output=False,         #Specifies whether this is an output stream,Defaults to ``False``.是否为输出流,默认为否input_device_index=None,        #Index of Input Device to use.Unspecified (or ``None``) uses default device.Ignored if `input` is ``False``.output_device_index=None,        #Index of Output Device to use.Unspecified (or ``None``) uses the default device.Ignored if `output` is ``False``.frames_per_buffer=1024,        #Specifies the number of frames per buffer.start=True,         #Start the stream running immediately.input_host_api_specific_stream_info=None,    #Specifies a host API ,specific stream information data structure for input. See :py:class:`PaMacCoreStreamInfo`output_host_api_specific_stream_info=None,    #Specifies a host API ,specific stream information data structure for output.See :py:class:`PaMacCoreStreamInfo`.stream_callback=None):           #Specifies a callback function for *non-blocking* (callback) operation,which indicates *blocking* operation (i.e.,:py:func:`Stream.read` and :py:func:`Stream.write`).

简单来说我们要使用的参数就像例子中的:

format采样数据的格式,在文档中有给出定义好的格式变量

##### PaSampleFormat Sample Formats #####

paFloat32                #: 32 bit float
paInt32                    #: 32 bit int
paInt24                       #: 24 bit int
paInt16                       #: 16 bit int
paInt8                          #: 8 bit int
paUInt8                    #: 8 bit unsigned int
paCustomFormat t        #: a custom data format

channels音轨数一般取2

rate采样率即每秒采样多少次

input=True,Ture代表这是一条输入流,False代表这不是输入流

frames_per_buffer每个缓冲多少帧

设定好这些参数我们就打开了一条可以用于输入的音频流了

2.1录音

RECORD_SECONDS = 2
print("start recording......")frames = []for i in range(0, int(RATE / CHUNK * RECORD_SECONDS) + 1):data = stream.read(CHUNK)frames.append(data)print("end!")stream.stop_stream()
stream.close()
p.terminate()

2.2代码分析

stream.read(CHUNK)每次读chunk个数据

通过int(RATE / CHUNK * RECORD_SECONDS)计算要读多少次,2秒*每秒的采样率/每次读多少数据=需要读多少次

frames.append(data)将读出的数据保存到列表中

stream.stop_stream()  停止输入流
stream.close()                关闭输入流
p.terminate()                 终止portaudio

3.1保存

import waveWAVE_OUTPUT_FILENAME = "Oldboy.wav"wf = wave.open(WAVE_OUTPUT_FILENAME, 'wb')
wf.setnchannels(CHANNELS)
wf.setsampwidth(p.get_sample_size(FORMAT))
wf.setframerate(RATE)
wf.writeframes(b''.join(frames))
wf.close()

3.2代码解释

wave.open(WAVE_OUTPUT_FILENAME, 'wb') 以’wb‘二进制流写的方式打开一个文件

wf.setnchannels(CHANNELS)        设置音轨数
wf.setsampwidth(p.get_sample_size(FORMAT))       设置采样点数据的格式,和FOMART保持一致 
wf.setframerate(RATE)         设置采样率与RATE要一致

wf.writeframes(b''.join(frames))将声音数据写入文件

wf.close()        关闭文件流,释放句柄

4.1

pyaudio_01.py-编解码文档类资源-CSDN下载

音频信号处理(一)语音录制相关推荐

  1. 基于matlab的音频信号处理毕业设计(含源文件

    基于MATLAB的语音信号处理GUI设计 一.课题研究的意义 本课题旨在对音频文件的调制和滤波.音频信号处理是研究用数字信号处理技术和语音学知识对语音信号进行处理的新兴的学科,是目前发展最为迅速的信息 ...

  2. matlab 音乐信号处理,MATLAB 的音频信号处理技术 | 学步园

    声音数据输入输出函数: 可以方便地读写au和way文件,并可控制其中的位及频率. wavread()和wavwriteO. 声音播放: wavplay():播放wav声音文件.当然,也可以把处理后的 ...

  3. 【基于pyAudioKits的Python音频信号处理(一)】pyAudioKits安装与API速查手册

    文章目录 pyAudioKits 基本用法 创建或加载音频 来自NumPy数组 来自文件 录音 模拟 Audio对象 播放 绘制 转为NumPy数组 获取属性 保存 索引和切片 连接 合成 四则运算 ...

  4. 学术干货:看清华教授如何将深度学习引入音频信号处理

    https://www.toutiao.com/a6687760578368242180/ 人工智能论坛如今浩如烟海,有硬货.有干货的讲座却百里挑一."AI未来说·青年学术论坛"系 ...

  5. API 层实现语音录制

    API 层实现语音录制   发表日期:2003-03-31 作者:temp77[] 出处:     我从前出于需要,上网寻找了关于录音部分的源代码,收获不大,现在把自己摸索的部分源代码公开出来吧,希望 ...

  6. 音频信号处理——DTW

    音频信号处理--DTW 标签(空格分隔): 音频处理 DTW全名Dynamic Time Warping由日本科学家 Itakura 提出,用于衡量两个长度不同时间序列的相似度.应用也十分广泛,主要是 ...

  7. 音频信号处理——基音周期

    音频信号处理--基音周期 标签(空格分隔): 音频处理 一.简介 1.1 什么是基音?什么是基音周期 基音顾名思义就是声音的基础.这里我们主要讨论人的发声,根据声带震动的方式的不同,将声音信号分为清音 ...

  8. STM32MP157-Linux音频应用编程-语音转文字项目

    文章目录 前言 STM32MP157语音识别 alsa-lib简介: 移植alsa-lib库: libcurl库简介: 安装CURL 移植CURL API调用 录音 文件IO 打开音频文件 打开缓冲文 ...

  9. 深度学习在音频信号处理领域中的进展(截止至2019年5月)

    最近在arXiv上看到一篇关于深度学习在音频信号处理中的进展的文章,感觉写的不错,所以根据自己的理解和大家分享一下.如果有些地方博主理解的不对,或者解释不清,可以在下面评论,博主会一一回复. 论文链接 ...

  10. 音频信号处理库librosa

    参考: 1. librosa官网 2. librosa语音信号处理 3. 语音信号处理库 --Librosa 4. librosa音频处理教程 5. Python音频信号处理库函数librosa介绍 ...

最新文章

  1. 简洁好用的数据库表结构文档生成工具!
  2. 20172303 2018-2019-1《程序设计与数据结构》课程总结
  3. java 泛型 extends 多个
  4. 新东方mti百科知识pdf_20南航翻硕mti初试417上岸经验贴
  5. 链接聚合是将一组物理接口_如何增加带宽,提升网络可靠性?
  6. 【记录】idea创建springboot多模块项目
  7. python元组添加元素_2分钟学会Python的元组使用
  8. 百度APP月活跃用户达5.6亿,日登录用户占比超75%
  9. mysql某个表被行锁了_一文搞懂MySQL行锁、表锁、间隙锁详解
  10. java模块依赖关系_链接模块依赖关系未解决
  11. spring学习---IOC--基于xml--bean管理--spring创建对象--spring注入属性--其他属性注入--外部bean--内部bean
  12. JNDI配置数据库连接
  13. nyoj1087摆方格(数学规律题)
  14. Unity3D资源热更新(一)
  15. svn 1.12.0 版本以及汉化包(百度网盘分享--永久有效)
  16. PageHelper分页pageSize和total异常问题
  17. Java随机产生两位数正整数
  18. python unpacking_Python解包(Unpacking)
  19. 【hihocoder1082】然而沼跃鱼早就看穿了一切——字符串
  20. 数据可视化工具之常见的折线图与折现面积图分析

热门文章

  1. 西部数码网站管理助手 mysql_西部数码网站管理助手开启自定义伪静态教程
  2. [java基础-4] 循环方法:方法声明.重载.递归
  3. PerformanceTest, monitoring command
  4. android客户端功能,搜狐微博Android客户端最新版 功能丰富 界面友好
  5. Unity编辑器—Excel转Xml和Asset数据
  6. Boost Serialization 库(一个有效的调试工具)
  7. /usr/bin/ld: i386 architecture of input file `xx‘ is incompatible with i386:x86-64 output
  8. 开源OA系统门户:企业信息互通,集成办公
  9. 【论文代码复现2】Clustered sampling based on sample size
  10. linux删除文件前几行,linux删除文件的前n行