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. 6.1 KMP算法搜索机器码

    KMP算法是一种高效的字符串匹配算法,它的核心思想是利用已经匹配成功的子串前缀的信息,避免重复匹配,从而达到提高匹配效率的目的.KMP算法的核心是构建模式串的前缀数组Next,Next数组的意义是:当 ...

  2. Llama2-Chinese项目:2.3-预训练使用QA还是Text数据集?

      Llama2-Chinese项目给出pretrain的data为QA数据格式,可能会有疑问pretrain不应该是Text数据格式吗?而在Chinese-LLaMA-Alpaca-2和open-l ...

  3. Oracle问题:ORA-01109解决办法

    出现问题: 在数据库服务器端,查询dual表,报ORA-01109错误 ORA-01109:database not open 查看: sqlplus / as sysdba;--管理员登录 sele ...

  4. Django框架项目之搜索功能——搜索导航栏、搜索后台接口、搜索页面

    文章目录 1-搜索导航栏 Header搜索组件:选择性CV router/index.js Header.vue 2-搜索后台接口 路由:course/urls.py 视图:course/views. ...

  5. 11g编译bbed

    报错如下: make -f ins_rdbms.mk $ORACLE_HOME/rdbms/lib/bbed Linking BBED utility (bbed) rm -f /u01/app/or ...

  6. PolarD&N2023秋季个人挑战—Crypto全解

    EasyRSA (额..这个题看错了不是挑战赛的.这里当做好题记录下来了) 题目信息:500 分 5 Polar币 from Crypto.Util.number import bytes_to_lo ...

  7. 使用JNA读取dll文件

    由于项目需要进行读卡操作,需要使用java进行读取dll文件 设备:德卡T10 1. 引入POM文件 <dependency> <groupId>net.java.dev.jn ...

  8. Johnson 最短路算法

    Johnson 算法 全源最短路径求解其实是单源最短路径的推广,求解单源最短路径的两种算法时间复杂度分别为: Dijkstra 单源最短路径算法:时间复杂度为 \(O(E + VlogV)\),要求权 ...

  9. 配置postcss-pxtorem报:options has an unknown property 'plugins'

    闲聊: 小颖最近在坐大屏相关的项目,要写适配,之前用的:postcss-px2rem.px2rem-loader,和朋友闲聊呢他说他们也在写大屏,不过他们用的 postcss-pxtorem,在写另外 ...

  10. 探索 Web API:SpeechSynthesis 与文本语言转换技术

    一.引言 随着科技的不断发展,人机交互的方式也在不断演变.语音识别和合成技术在人工智能领域中具有重要地位,它们为残障人士和日常生活中的各种场景提供了便利.Web API 是 Web 应用程序接口的一种 ...