首页 > 编程语言 >在 Python 中播放声音

在 Python 中播放声音

时间:2023-07-29 20:05:17浏览次数:72  
标签:sound 声音 Python 音频 pyglet file 播放 pygame


介绍

在 Python 中播放声音_开发语言

我们首先检查playsound库,它为在Python中播放声音文件提供了一个简单直接的解决方案。凭借其最低的设置要求,开发人员可以使用单个函数调用将音频播放快速集成到他们的应用程序中。但是,对于更高级的音频功能,我们深入研究了两个流行的库:pygame和pyglet。Pygame是一个强大的多媒体库,以其处理音频,图形和用户输入的能力而闻名。

让我们继续这个音频冒险,探索 Python 应用程序中的声音可能性。

不同的方法

“播放声音”库

在 Python 中播放声音文件的一种快速有效的方法是使用 playsound 包。无需复杂的设置,因为它提供了一个简单的音频播放界面。必须先使用 pip 包管理器安装 playsound 库,然后才能继续。

设置好所有内容后,您可以使用播放声音功能导入库并播放音频文件。此方法将声音文件的路径作为输入,并使用系统的内置音频播放器播放声音文件。它还支持 WAV、MP3 和其他音频格式。

playsound 库还提供其他功能,例如控制音量和阻止程序执行,直到声音完成播放。这使您可以有效地将声音播放与代码的其他部分同步。


from playsound import playsound    # Provide the path to your sound file  sound_file = "path/to/your/sound/file.mp3"    # Play the sound file  playsound(sound_file)


使用“pygame”进行高级音频播放

虽然playsound库足以进行基本的音频播放,但如果您需要更复杂的功能,则可以使用“pygame”库。流行的多媒体库 Pygame 提供了一套完整的功能来管理输入、图形和音频。

要使用“pygame”进行音频播放,您必须通过 pip 安装它。完成设置后,您可以导入必要的模块并初始化 pygame 库以开始使用其音频功能。

pygame.mixer模块是'pygame'音频播放的重要组成部分之一。它提供了用于管理多个同时声音、控制响度以及加载和播放音频文件的工具。在使用“pygame”播放声音之前,必须先调用pygame.mixer.init()来初始化混音器模块。音频系统现在已准备好播放。

Python 游戏混合器。然后,绕过文件位置作为 Sound() 方法的输入,可以加载声音文件。加载声音后,可以使用声音对象的 play() 函数播放它。您还可以修改播放速度、响度和效果,如循环和淡入淡出。

“pygame”除了播放单个声音外,还使您能够同时控制多种声音。可以通过组合声音并单独调整其音量来制作复杂的音频组合。“pygame”是交互式应用程序和游戏开发的绝佳选择,由于其适应性,需要复杂的音频播放。


import pygame    # Initialize the pygame mixer  pygame.mixer.init()    # Load a sound file  sound_file ="path/to/your/sound/file.wav"  sound = pygame.mixer.Sound(sound_file)   # Play the sound  sound.play()    # Wait for the sound to finish playing  pygame.time.wait(int(sound.get_length() * 1000))


使用“pyglet”进行高级音频播放

虽然“playsound”库为Python中的基本音频播放提供了一个简单明了的解决方案,但寻求更高级功能和灵活性的开发人员可以转向“pyglet”。Pyglet 是一个功能强大的多媒体库,为音频和视频播放、图形用户界面等提供了广泛的工具集。在本节中,我们将深入研究“pyglet”用于高级音频播放的功能。

Pyglet提供了一个高级接口,用于通过其pyglet.media模块加载和播放音频文件。使用“pyglet”,您可以超越基本的声音播放并利用更高级的功能。

“Pyglet”对位置音频的支持是其最显着的功能之一。这通过在三维环境中模拟声源来实现更逼真的音频体验。通过定义声源的位置、速度和方向,您可以生成一个逼真的音频环境,其中声音似乎从不同的方向和距离发出。对于游戏、虚拟现实体验或模拟等应用程序,此功能特别有用。

“Pyglet”除了位置音频外,还包括音量控制、音高转换和定制音频流等功能。您可以使用音量控制更改某些声音的响度或产生动态音频效果。您可以通过变调来更改声音的音高,这对于提出原始音频效果或更改音频的播放速度可能很方便。自定义音频流可以实时设计和修改音频流,从而实现交互式和动态音频体验。

此外,“pyglet”在处理各种声音文件类型时提供了多功能性,因为它支持多种音频格式,包括 WAV、MP3、OGG 和 FLAC。此外,它还具有用于管理大量同步声音、流式传输音频以及与程序其他部分协调音频播放的工具。

Python 程序员现在拥有在音频体验中创建真实感所需的功能和工具。无论您是在制作需要精确声音定位的游戏、需要动态音频效果的多媒体应用程序,还是尝试虚拟现实模拟,“pyglet”都能提供必要的工具来实现您的音频视觉。

要利用“pyglet”来播放声音,必须首先创建一个pyglet.media。玩家的东西。此对象处理音频文件的加载和播放。您可以通过创建 pyglet.media.StaticSource 对象并将其作为参数传递给文件路径来加载声音文件。

使用播放器对象的 play() 函数,您可以在加载声音后播放声音。“pyglet”提供的其他功能包括音高转换、响度控制以及设计自己的音频流源的能力。


import pyglet    # Create a pyglet player object  player = pyglet.media.Player()  # Load a sound file sound_file = "path/to/your/sound/file.wav"  source = pyglet.media.StaticSource(pyglet.media.load(sound_file))  # Queue the source to the player  player.queue(source)  # Play the sound  player.play()  # Wait for the sound to finish playing pyglet.app.run()


结论

Python 提供了多个用于播放声音的库和工具,可满足不同的需求和复杂程度。“playsound”库为基本音频播放提供了一种简单的方法,而“pygame”和“pyglet”则提供了更高级的功能和灵活性。通过精通这些库,您可以轻松地将音频播放包含在 Python 项目中,无论它们是用于游戏、交互式应用程序还是多媒体体验。Python 的音频功能使您能够设计身临其境且引人入胜的应用程序,无论您的编程经验水平如何,都能利用声音的力量。请记住探索这些库提供的文档和示例,以释放 Python 中音频播放的全部潜力。所以继续,开始试验,让你的Python程序通过你创造的迷人音景而活跃起来。

 

标签:sound,声音,Python,音频,pyglet,file,播放,pygame
From: https://blog.51cto.com/10zhancom/6895026

相关文章

  • pycharm运行代码自动跳转到Python控制台窗口
    问题:在使用Pycharm的过程中,会遇到运行代码Pycharm会自动跳转到Python控制台(pythonconsole)窗口,如下图解决方案:​ 造成上述问题的原因是:不经意的设置了使用Pytho控制台运行,我们只需要修改以下运行配置就可以恢复正常,如下图(1)进入编辑配置:(2)取消勾选使用Python控制台运行......
  • PYTHON mysql形成分割文件
    importrandom,string,re,time,sys,hashlib,pymysql,requestsf=open("aa.txt","w")connect=pymysql.connect(user='root',password='123456',db='new',host......
  • Python入门简单代码
     1.#定义一个函数,使该函数能够返回4个参数中的最大值。defmax4(a,b,c,d):max1=max(a,b)max2=max(c,d)max3=max(max1,max2)returnmax3print(max4(1,2,3,4))2.#使用匿名函数完成求两个参数之和的功能add=lambdax,y:x+yprint(add(1,2))3.#编写一个......
  • 如何在Python中获取时间(在Python中获取当前的Unix时间)
    在Python中获取当前时间是许多与时间有关的操作的一个很好的起点。一个非常重要的用例是创建时间戳。在本教程中,你将学习如何用datetime模块获取、显示和格式化当前时间。我们将学习如何读取当前时间的属性,如年份、分钟或秒。为了使时间更容易阅读,将探索打印时间的选项。我们......
  • Python 潮流周刊第 13 期(2023-07-29)
    查看全文:https://pythoncat.top/posts/2023-07-29-weekly......
  • Python-Django-环境搭建和基础知识
    Python-Django学习目录:环境搭建和基础知识:包括安装Python和Django、了解Python基础语法、掌握Django框架的基本概念和工作原理等。模型和数据库:包括创建模型、定义字段、使用DjangoORM进行数据库操作等。视图和URL:包括定义视图函数、URL路由配置、模板渲染等。表单和验证:包括表单......
  • 记录Ubuntu20.04安装Python3.7
    1、先升级一下软件包列表和软件包管理工具sudoapt-getupdatesudoapt-getupgrade 2、安装依赖:sudoaptinstallopenssl*zlib* 3、下载Python压缩包wgethttps://www.python.org/ftp/python/3.7.1/Python-3.7.1.tgz 4、解压缩tar-zxvfPython-3.7.1.tgz进入解......
  • PythonNote042---pymysql使用
      简单介绍pymysql的一些操作,增改删查增先建表,再写数据至表中除查询操作外,增改删都需要commit操作,具体原理看ref.1importpandasaspdimportpymysqlimporttimeimportwarningswarnings.filterwarnings("ignore")建表con=pymysql.connect(host='localhost',......
  • python的tril,pad,block_diag在LLM上的使用
    最近需要对position_ids和attention_mask进行重构,所以需要掌握numpy的一些操作,以下是一些示例,多个下三角矩阵拼接:importnumpyasnpfromscipy.linalgimportblock_diagA=np.ones((2,2))B=np.ones((3,3))b=[A,B]print(np.tril(block_diag(*b)))[[1.0.0.0.0.]......
  • Python面向对象编程-学习笔记(二)
    5.类的继承classEmployee:raise_amount=1.04def__init__(self,first,last,pay):self.first=firstself.last=lastself.pay=payself.email=first+'.'+last+'@company.com'cla......