python录音播放_“Duang”:用Python播放和录制音频2019-07-10

内容

如果想用Python来播放或录制声音,那您就来对地方了!在本教程中,您将学习如何使用一些最流行的音频库在Python中播放和录制声音。您将首先了解最直接的播放和录制声音的方法,然后您将了解一些能够提供更多功能的库,以替换一些多余的代码行。

当本教程结束的时候,您将知道如何实现以下各种结果:

播放MP3与WAV文件,以及其他多种音频格式的文件

播放包含声音的Numpy和Python数组

使用Python录制音频

用多种不同的文件格式保存您所录制的结果或各种音频文件

Playing Audio Files

下面您将看到如何使用选定的Python库播放音频文件。其中一些库允许您播放一系列的音频格式文件,包括MP3和NumPy数组。下面的所有库都允许您播放WAV文件,有些库的代码行要比其他库的多一些:

playsound 如果您只想播放WAV或MP3文件,playsound是最简单的软件包。它只提供简单的回放功能。

simpleaudio 允许您播放WAV文件和NumPy数组,并为您提供检查文件是否仍在播放的选项。

winsound 允许您播放WAV文件或发出扬声器哔声,但它只能在Windows上工作。

python-sounddevice和pyaudio 为portaudio库提供绑定,用于跨平台播放WAV文件。

pydub 需要pyaudio来播放音频,但是安装了ffmpeg后,它可以让您只使用几行代码来播放大量的音频格式。

让我们看一下这些库,逐个录制和播放一下音频。

playsound

from playsound import playsound

playsound('myfile.wav')

有关playsound的文档 表示这个库虽然只是针对WAV和MMP3文件进行了测试,但是也可能能够执行其他格式的文件。

这个库最后一次更新于2017年的6月份。到这篇文章的写作时间(2019年5月)为止,它似乎一直都是能够正常工作的,但是不清楚它是否支持更新的Python版本。

simpleaudio

simpleaudio是一个跨平台的库,可以回放WAV文件而不需要任何依赖关系。下面的代码可以用于播放WAV文件,并且等到文件播放完毕才结束脚本的运行:

import simpleaudio as sa

filename = 'myfile.wav'

wave_obj = sa.WaveObject.from_wave_file(filename)

play_obj = wave_obj.play()

play_obj.wait_done() # Wait until sound has finished playing

各个WAV文件都包含着表示原始音频数据的一个字节序列,以及使用RIFF(Resource Interchange File, 资源交换文件格式)格式的带元数据的头文件。

对于CD录音来说,相应的工业标准是将每个音频样本(与气压相关的单个音频数据点)存储为一个16-byte的值,每秒44100个样本。

为了减小文件大小,以较低的采样率(如每秒8000个采样率)存储一些记录(例如人类语音)可能就足够了,尽管这意味着较高的音频可能无法准确地表示出来。

本教程中讨论的一些库可以播放和录制bytes对象,而其他库则使用NumPy数组存储原始音频数据。

两者都对应于一系列数据点,这些数据点可以以指定的采样率回放以播放声音。对于一个bytes对象,每个样本存储为两个8-byte值的集合,而在NumPy数组中,每个元素可以包含一个与单个样本对应的16-byte值。

这两种数据类型之间的一个重要区别是bytes对象是不可变的,而numpy数组是可变的,使后者更适合生成声音和更复杂的信号处理。有关如何使用numpy的更多信息,请查看我们的NumPy 教程.

simpleaudio允许您使用simpleaudio.play_buffer()播放NumPy和Python数组以及bytes对象。确保您已经安装了NumPy包以及simpleaudio包,以使以下示例能够正常工作。(安装pip后,您可以通过从控制台运行pip install numpy

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值