pyaudiosounddevice都是用于Python中音频处理和流的库,允许用户通过他们的API录制、播放和处理音频数据。下面是对这两个库的简要介绍:

PyAudio

PyAudio 提供了 Python 绑定到 PortAudio,这是一个跨平台的音频I/O库。它允许你很容易地使用Python语言进行音频录制和播放。

特点:

  • 跨平台(工作在Unix/Linux、MacOS和Windows上)
  • 允许你直接访问声卡或其他音频接口,例如通过麦克风录制声音或者向扬声器输出声音
  • 支持阻塞和非阻塞流
  • 提供了详细的错误信息和音频流状态

典型用途:

  • 音频录制和播放
  • 音频信号处理
  • 实现音频应用,如语音识别和合成

示例代码:

import pyaudio
import wave # 打开WAV文件
wf = wave.open('file.wav', 'rb') # 初始化PyAudio
p = pyaudio.PyAudio() # 打开流
stream = p.open(format=p.get_format_from_width(wf.getsampwidth()),
channels=wf.getnchannels(),
rate=wf.getframerate(),
output=True) # 读取数据
data = wf.readframes(1024) # 播放流
while len(data) > 0:
stream.write(data)
data = wf.readframes(1024) # 停止流
stream.stop_stream()
stream.close() # 关闭PyAudio
p.terminate()

SoundDevice

sounddevice库是基于PortAudio的,提供了一个简洁的Pythonic接口,用于录制和播放音频。

特点:

  • 跨平台(与PortAudio一样)
  • 提供了同步和异步的音频流接口
  • 支持NumPy,方便进行科学计算
  • 相对于PyAudio,API更加简洁和Pythonic

典型用途:

  • 实时音频处理
  • 实验心理学中的音频刺激
  • 用于科学研究的音频数据采集

示例代码:

import sounddevice as sd
import numpy as np duration = 5.5 # seconds
frequency = 440 # Hz # 生成一个音频信号
t = np.linspace(0, duration, int(duration * 44100), False)
audio = np.sin(2 * np.pi * frequency * t) # 播放音频
sd.play(audio, samplerate=44100)
sd.wait() # 等待音频播放完毕

总结

两个库都能够处理音频流,但在API设计上有所不同。PyAudio 更接近底层PortAudio接口,提供了很多配置选项和详细的控制。而SoundDevice 提供了更加简化和易于使用的接口,对于需要快速上手的项目而言可能更适合。如果需要进行复杂的音频处理,或者与其他底层音频库(如Librosa或SciPy)结合使用,SoundDevice可能更合适,尤其是因为它支持NumPy数组。选择哪一个库取决于你的项目需求和个人偏好。

玩转Python:处理音频文件,两个非常重要的库,很实用,附代码的更多相关文章

  1. python播放音频文件

    可在nano或者gax上面使用(已测试过) 将mp3文件转换为wav文件 trans_mp3_to_wav.py from pydub import AudioSegment # 这里filepath ...

  2. python爬取微信信息--显示性别/地域/词云(附代码)

    看到一篇有意思的博客 利用微信开放的接口itchat 可以获取登录的微信好友信息 并且利用图像工具显示分析结果 非常的有意思 记录下实现过程 并提供可执行代码 首先要 import itchat 库 ...

  3. Windows中使用CopyFile函数复制文件,出现string转LPCTSTR问题(附代码)

    原因: 同一张图片,用imread读取,imwrite重新写入另外一个文件夹,然后再次读取发现前后异常,这是因为读取后转成Mat格式,然后写入转成图片格式,这个过程会对图片产生损失. 因此后来采用直接 ...

  4. C语言解析WAV音频文件

    C语言解析WAV音频文件 代码地址: Github : https://github.com/CasterWx/c-wave-master 目录 前言 了解WAV音频文件 什么是二进制文件 WAV的二 ...

  5. 记录:python读取excel文件

    由于最近老是用到python读取excel文件,所以特意记录一下python读取excel文件的大体框架. 库:xlrd(读),直接pip安装即可.想要写excel文件的话,安装xlwd库即可,也是直 ...

  6. [原创]使用python对视频/音频文件进行详细信息采集,并进行去重操作

    [原创]使用python对视频/音频文件进行详细信息采集,并进行去重操作 转载请注明出处 一.关于为什么用pymediainfo以及pymediainfo的安装 使用python对视频/音频文件进行详 ...

  7. 吴裕雄--天生自然python学习笔记:python 用pygame模块处理音频文件

    除了对图片. Word 等普通格式的文件进行处理外, Python 还有强大的多媒体文件操作能力,如对音频.视频 文件的操作 . 如果要播放音乐,我们可以用 pygame 包中的 mixer 对 象. ...

  8. Python实例---爬取下载喜马拉雅音频文件

    PyCharm下python爬虫准备 打开pycharm 点击设置 点击项目解释器,再点击右边+号 搜索相关库并添加,例如:requests 喜马拉雅全网递归下载 打开谷歌/火狐浏览器,按F12打开开 ...

  9. Python开发【Tornado】:搭建文件下载服务、音频文件播放

    Tornado 如何做文件下载 要求:浏览器输入url地址,直接弹窗提示下载 Tornado服务端,搭建文件下载服务 #!/usr/bin/env python # -*- coding:utf-8 ...

  10. Python学习--13 文件I/O

    Python内置了读写文件的函数,用法和C是兼容的. 读写文件前,我们先必须了解一下,在磁盘上读写文件的功能都是由操作系统提供的,现代操作系统不允许普通的程序直接操作磁盘,所以,读写文件就是请求操作系 ...

随机推荐

  1. 7 个 IntelliJ IDEA 必备插件,显著提升编码效率

    首先说一下idea引入外部插件的方式 用插件 1. FindBugs-IDEA 2. Maven Helper 3. VisualVM Launcher 4. GenerateAllSetter 5. ...

  2. ⭐malloc(易造成内存泄漏)(及时释放内存)

    1,关于malloc以及相关的几个函数 #include <stdlib.h>(Linux下)       void *malloc(size_t size);       void fr ...

  3. LVS+keepalived配置高可用架构和负载均衡机制(1)

    一.基础知识 1. 四层负载均衡(基于IP+端口的负载均衡) 所谓四层负载均衡,也就是主要通过报文中的目标ip地址和端口,再加上负载均衡设备设置的服务器选择方式(分发策略,轮询),决定最终选择的内部服 ...

  4. 19c上ADG主库sys密码修改会影响备库同步吗?

    一套Oracle 19c的ADG集群要修改sys密码,由于之前遇见过11g上sys密码修改导致同步问题的情况,所以改之前特意查了下文档,发现其实12cR2开始,在主库修改密码就会自动同步到备库了,以下 ...

  5. Python--乱码转化为中文

    1. \u和\x的含义 \u:代表的是unicode码 \x:代表的是16进制码 2. 代码实现 :\x类型 # \xe4\xb8\xad\xe6\x96\x87 代表的意思是'中文' s = u'\ ...

  6. OI 模板合集

    update on 2023.10: 这篇博客的原本意义是 方便直接复制 / 快速复习,但部分原有代码存在本质错误,完全没有起到这个作用,故重构. 由于折叠代码块在某些 markdown 编辑器中不支 ...

  7. 使用 Java 对比两个PDF文档之间的差异

    不论是在团队写作还是在个人工作中,PDF 文档往往会经过多次修订和更新.掌握 PDF 文档内容的变化对于管理文档有极大的帮助.通过对比 PDF 文档,用户可以快速找出文档增加.删除和修改的内容,更好地 ...

  8. Production Environment Difference Between Development, Stage, And Production

    There are three different environments that you'll probably deal with at some point. Each environmen ...

  9. 数据结构与算法 | 记忆化搜索(Memorize Search)

    在本系列的文章中已经写了二叉树(Binary Tree).深搜(DFS)与广搜(BFS).哈希表(Hash Table)等等,计划接下来要写的是动态规划(Dynamic Programming,DP) ...

  10. .Net8 Blazor 尝鲜

    全栈 Web UI 随着 .NET 8 的发布,Blazor 已成为全堆栈 Web UI 框架,可用于开发在组件或页面级别呈现内容的应用,其中包含: 用于生成静态 HTML 的静态服务器呈现. 使用 ...