Python语言已经无所不能了,今天就来分享一下,如何使用Python来录制和播放音频文件。

下面是一些可以播放和录制音频的Python第三方库:

playsound,支持MP3和WAV,目前只支持简单的回放。

simpleaudio,支持WAV,提供检查文件是否仍在播放的功能。

winsound,支持WAV,只支持windows。

python-sounddevice和pyaudio为PortAudio库提供绑定,以便跨平台回放WAV文件。

pydub,需要pyaudio来播放音频,但是安装了ffmpeg之后,它允许您使用几行代码来播放各种音频格式。

一、播放音频文件

使用playsound库

1、安装

$ pip install playsound

2、使用播放音频

from playsound import playsound

playsound('myfile.wav')

使用simpleaudio库

1、安装

$ pip install simpleaudio

2、使用播放音频

mport 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

使用winsound库

如果您使用Windows,您可以使用内置的winsound模块来访问其基本的声音播放机制。播放WAV文件可以在几行代码:

import winsound

filename = 'myfile.wav'

winsound.PlaySound(filename, winsound.SND_FILENAME)

使用python-sounddevice库

1、安装

$ pip install sounddevice

2、使用播放音频

import sounddevice as sd

import soundfile as sf

filename = 'myfile.wav'

# Extract data and sampling rate from file

data, fs = sf.read(filename, dtype='float32')

sd.play(data, fs)

status = sd.wait() # Wait until file is done playing

使用pydub库

1、安装

$ pip install pydub

2、使用播放音频

from pydub import AudioSegment

from pydub.playback import play

sound = AudioSegment.from_wav('myfile.wav')

play(sound)

默认情况下,pydub只支持播放wav格式音频。如果你想播放更多其他格式的音频文件。需要安装ffmpeg-python。

$ pip install ffmpeg-python

安装了ffmpeg后,播放MP3文件只需要在我们之前的代码中做一个小小的修改:

from pydub import AudioSegment

from pydub.playback import play

sound = AudioSegment.from_mp3('myfile.mp3')

play(sound)

使用pyaudio库

1、安装

$ pip install pyaudio

2、使用播放音频

import pyaudio

import wave

filename = 'myfile.wav'

chunk = 1024

wf = wave.open(filename, 'rb')

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(chunk)

while data != '':

stream.write(data)

data = wf.readframes(chunk)

stream.close()

p.terminate()

您可能已经注意到,使用pyaudio播放声音比使用前面看到的库播放声音要复杂一些。这意味着如果您只想在Python应用程序中播放声音效果,那么它可能不是您的首选。

但是,由于pyaudio提供了更低级的控制,因此可以获取和设置输入和输出设备的参数,并检查CPU负载和输入或输出延迟。

它还允许您在回调模式下播放和录制音频,在回调模式中,当需要回放新数据或记录可用数据时,将调用指定的回调函数。如果您的音频需要的不仅仅是简单的回放,那么这些选项使pyaudio成为一个合适的库。

既然您已经了解了如何使用许多不同的库来播放音频,现在就来看看如何使用Python自己录制音频。

二、录音

Python -sounddevice和pyaudio库提供了用Python录制音频的方法。

1 、使用python-sounddevice录音

import sounddevice as sd

from scipy.io.wavfile import write

fs = 44100 # Sample rate

seconds = 3 # Duration of recording

myrecording = sd.rec(int(seconds * fs), samplerate=fs, channels=2)

sd.wait() # Wait until recording is finished

write('output.wav', fs, myrecording) # Save as WAV file

2、使用pyaudio录音

import pyaudio

import wave

chunk = 1024 # Record in chunks of 1024 samples

sample_format = pyaudio.paInt16 # 16 bits per sample

channels = 2

fs = 44100 # Record at 44100 samples per second

seconds = 3

filename = "output.wav"

p = pyaudio.PyAudio() # Create an interface to PortAudio

print('Recording')

stream = p.open(format=sample_format,

channels=channels,

rate=fs,

frames_per_buffer=chunk,

input=True)

frames = [] # Initialize array to store frames

# Store data in chunks for 3 seconds

for i in range(0, int(fs / chunk * seconds)):

data = stream.read(chunk)

frames.append(data)

# Stop and close the stream

stream.stop_stream()

stream.close()

# Terminate the PortAudio interface

p.terminate()

print('Finished recording')

# Save the recorded data as a WAV file

wf = wave.open(filename, 'wb')

wf.setnchannels(channels)

wf.setsampwidth(p.get_sample_size(sample_format))

wf.setframerate(fs)

wf.writeframes(b''.join(frames))

wf.close()

三、保存和格式转换

1、使用pydub保存音频

from pydub import AudioSegment

sound = AudioSegment.from_wav('myfile.wav')

sound.export('myfile.mp3', format='mp3')

2、使用pydub完成格式转换

from pydub import AudioSegment

sound = AudioSegment.from_wav('myfile.wav')

sound.export('myfile.mp3', format='mp3')

如果觉得内容还不错,分享给更多朋友,一起提升编程技能。

以上就是Python实现播放和录制声音的功能的详细内容,更多关于python 播放和录制声音的资料请关注python博客其它相关文章!

python录制视频和声音_Python实现播放和录制声音的功能相关推荐

  1. kazam录制视频在windows下无法播放解决办法

    kazam 编码格式H.264 由于编码格式的原因,kazam在ubuntu下录制视频格式虽是MP4,但是在Windows下无法播放,效果无法展示,ppt也没得素材可用 办法 安装 ffmpeg 编码 ...

  2. python给视频加背景音乐_python中加背景音乐如何操作

    在python中加背景音乐的方法: 1.导入pygame资源包: 2.修改音乐的file路径: 3.使用init()方法进行初始化: 4.使用load()方法添加音乐文件: 5.使用play()方法播 ...

  3. python给视频加背景音乐_python给视频添加背景音乐并改变音量的具体方法

    用到给视频添加背景音乐,并改变音量.记录一下,与碰到同样问题的朋友共享. import subprocess inmp4='E:/PycharmProjects/untitled2/hecheng/1 ...

  4. linux网页没有声音,linux 系统播放网页内容没声音

    安装了 Ubuntu Linux系统,在使用 Firefox打开 Flash是,光有图像没有声音,但播放MP3.视频等均正常,通过网上查找相关方法,一直无效,后来找到下面方法有效,留此作为存档. 打开 ...

  5. qq录制视频保存到哪了?qq录制视频怎么没了?找回方法在这

    相信很多小伙伴都跟小编一样,使用qq录屏录制好后,结果就怎么也找不到录屏的文件了.经过小编一番研究,终于找到了qq录屏后视频文件的所保存的文件路径了.qq录制视频保存到哪了?别担心,下面小编就带大家一 ...

  6. python编辑视频字符化_Python 视频转字符画 - 进阶

    这篇文章是 视频转字符动画-Python-60行代码 的后续,如果感兴趣,请先看看它. 0. 话说在前头 最新版使用了画布方式实现,和本文相比改动非常大,如果对旧版本的实现没啥兴趣,可以直接移步 vi ...

  7. python爬虫视频 下载 黑马_Python爬虫能爬视频么(python爬虫零基础视频教程)

    Python爬虫能爬视频么 他视频没有的,但是跑了之后你要处理这个视频,就是问题的?你只需要,得到视频的播放地址,还是要把视频完整的下载到本地的.如果只是爬那个视频的下载地址,很简单,如果要下载的话, ...

  8. python 网站视频快进_python gstreamer实现视频快进/快退/循环播放功能

    Gstreamer到底是个啥? GStreamer 是一个 基于pipeline的多媒体框架,基于GObject,以C语言写成. 应用GStreamer这个这个多媒体框架,你可以写出任意一种流媒体的应 ...

  9. python把视频取帧_Python批量截取视频某一帧

    该文讲了如何调用opencv这个包对一个视频的某段时间进行均匀截多张图图(当然也可以是多个时间,也可以是不均匀时间,也可以是单张图片-都是可以自己定的呀) 大家都是成熟的Python人了,所以很多细节 ...

最新文章

  1. spring 组件基于注解的注册方式
  2. 软件开发必修课:你该知道的GRASP职责分配模式
  3. hahahahahah
  4. 飞鸽传书,去看了下WEBBROWSER的资料
  5. 文本加密算法matlab,matlab希尔加密算法
  6. 动图妙解高内聚与低耦合,觉得让你秒懂
  7. teamview外网连接服务器虚拟主机,利用路由器端口映射+桥接虚拟机搭建个人服务器...
  8. adb 连接手机 cannot connect to xxx.xxx.x.xx:5555: 由于目标计算机积极拒绝,无法连接。 (10061)
  9. 推荐三款U盘烧写工具
  10. Python代码反向解析列线图nomogram自动计算各项得分及总得分
  11. 比亚迪半导体IPO再生波折:又被中止审核 红杉小米是股东
  12. 酞菁-氧化石墨烯(NiPc- NHCO-EGO)|齐岳生物提供酞菁定制材料
  13. ArcGIS模拟3D洪水
  14. 云锁和悬镜服务器哪个好,安全狗、悬镜、云锁、云帮手建议用哪个比较好?
  15. 计算机网络不可用感叹号,win7网络连接感叹号提示默认网关不可用怎么办
  16. Unity 5如何设置物体透明
  17. springcontext.xml 中方言是红色的_12种方言都能听懂!讯飞智能录音笔A1评测:小如钥匙坠+复古磁带造型...
  18. 第七周--项目1-静态成员应用
  19. python生词本查单词译文_GitHub - To-knowledge/Wudao-dict: 有道词典的命令行版本,支持英汉互查和在线查询。...
  20. 电脑如何备份文件,怎么同步?

热门文章

  1. python反编译luac_Lua程序逆向之为Luac编写IDA Pro文件加载器
  2. 博阅电纸书_博阅电纸书Mars测评
  3. 华为HYBRID的配置
  4. 满意度调查的几种常用方法
  5. x:null扩展 什么意思
  6. PyQt5随笔:对PyQt5 的右键菜单进行简单的QSS美化
  7. Linux系统下实现开机自动加载驱动模块
  8. java 渐变橡皮擦_android实现图片橡皮擦和快速染色功能
  9. wordpress网站重定向次数过多
  10. 【精选】JAVA入门算法题(四)