python播放音频的三种方法

本文详细介绍了使用Python的三种主流音频播放方式:pygame模块、pyqt5模块和pyaudio模块。对比了各模块的优缺点,包括pygame可能产生的音频失真、pyqt5在Anaconda环境下的安装问题以及pyaudio的代码复杂度。
部署运行你感兴趣的模型镜像

第一种 使用pygame模块

import pygame
pygame.mixer.init()
pygame.mixer.music.load('audio.wav')  
pygame.mixer.music.set_volume(0.5) 
pygame.mixer.music.play()

缺点:pygame模块播放音频时,有时候会产生失真,且无法通过修改播放器的频率来矫正音色。

第二种 使用pyqt5模块

from PyQt5 import QtMultimedia
from PyQt5.QtCore import QUrl
file = QUrl.fromLocalFile('audio.wav')  # 音频文件路径
content = QtMultimedia.QMediaContent(file)
player.setMedia(content)
player.setVolume(50.0)
player.play()

缺点:由于大部分人使用的python环境为anaconda配置的环境,在anaconda下的pyqt5没有QtMultimedia这一模块,只能自己使用pip安装,但是使用pip安装后如果anaconda环境下有spyder、anaconda navigator等图形化界面程序,这些程序会无法打开,因此使用pip安装后调试完毕后记得使用pip卸载掉,之后才能正常打开spyder等程序。

第三种 使用pyaudio模块

import pyaudio
import wave
import sys

chunk = 1024
wf = wave.open('gyh.wav', '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 len(data) > 0:
    stream.write(data)
    data = wf.readframes(CHUNK)

stream.stop_stream()
stream.close()

p.terminate()

缺点:无,就是代码多点。

记得点赞

您可能感兴趣的与本文相关的镜像

Python3.10

Python3.10

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

<think>我们被要求提供Python播放音频方法,根据站内引用和常见方法,以下是几种主要方法: 注意:根据引用[1][2][3][4],我们将介绍包括内置模块、第三方库等多种方式,并指出其优缺点。 方法1:使用内置winsound模块(仅Windows) 优点:无需安装第三方库 缺点:仅支持.wav格式,且仅适用于Windows系统 示例代码: from winsound import PlaySound PlaySound('audio.wav', flags=1) # flags=1表示异步播放 引用[1]提到此方法方法2:使用pygame 优点:跨平台,支持多种音频格式 缺点:可能出现失真,且安装包较大 示例代码: import pygame pygame.mixer.init() pygame.mixer.music.load("audio.mp3") pygame.mixer.music.play() # 等待播放结束 while pygame.mixer.music.get_busy(): pygame.time.Clock().tick(10) 引用[2][3]提到此方法,但指出可能有失真问题。 方法3:使用PyQt5的QMediaPlayer 优点:功能强大,可控制音量等 缺点:安装复杂,且可能与其他图形界面程序冲突(如Anaconda环境) 示例代码: from PyQt5.QtMultimedia import QMediaPlayer, QMediaContent from PyQt5.QtCore import QUrl # 注意:需要先创建QApplication实例 import sys from PyQt5.QtWidgets import QApplication app = QApplication(sys.argv) player = QMediaPlayer() file = QUrl.fromLocalFile('audio.wav') # 音频文件路径 content = QMediaContent(file) player.setMedia(content) player.setVolume(50.0) player.play() # 需要保持应用运行 sys.exit(app.exec_()) 引用[2][4]提到此方法,但警告在Anaconda环境下安装可能破坏其他程序。 方法4:使用simpleaudio 优点:轻量级,支持缓冲接口 缺点:仅支持未压缩的WAV文件 示例代码: import simpleaudio as sa wave_obj = sa.WaveObject.from_wave_file('audio.wav') play_obj = wave_obj.play() play_obj.wait_done() # 等待播放结束 引用[3]提到此方法方法5:使用playsound(跨平台简单播放) 优点:简单易用,跨平台 缺点:功能简单,无法控制播放进度和音量 示例代码: from playsound import playsound playsound('audio.mp3') 注意:如果安装playsound出现问题,可参考之前的解决方案。 方法6:使用pydub(需要依赖ffmpeg) 优点:支持多种格式,操作灵活 缺点:需要安装ffmpeg 示例代码: from pydub import AudioSegment from pydub.playback import play song = AudioSegment.from_mp3("audio.mp3") play(song) 总结: 根据需求选择: - 仅Windows且播放wav:使用winsound - 简单跨平台播放:playsound(注意安装问题)或simpleaudio(仅wav) - 需要控制播放过程:pygame或PyQt5(注意环境问题) - 处理多种音频格式:pydub(需ffmpeg) 注意:引用[4]特别提醒在Anaconda环境下使用PyQt5可能导致spyder等无法打开,建议谨慎安装。 §§相关问题§§ 1. 如何解决Python播放音频时的异步播放问题? 2. 在Linux系统中,Python播放音频有哪些推荐的方法? 3. 使用playsound库安装失败怎么办? 4. Python如何实现音频录制功能? </think> ## Python播放音频的完整指南(附代码示例) 以下是Python播放音频的多种方法总结,根据需求场景选择适合的方案: ### 一、原生内置方案(无需安装) ```python # Windows系统专用 - 播放.wav文件 from winsound import PlaySound PlaySound('audio.wav', flags=1) # flags=1表示异步播放[^1] ``` ✅ **优点**:无需安装任何库 ❌ **限制**:仅限Windows系统,只支持.wav格式 ### 二、轻量级第三方库 #### 1. playsound(推荐简单场景) ```python from playsound import playsound playsound('audio.mp3') # 支持MP3/WAV等格式 ``` ✅ **优点**:单行代码实现跨平台播放 ⚠️ **注意**:如遇安装问题,使用`pip install --no-cache-dir playsound` #### 2. simpleaudio(高质量WAV播放) ```python import simpleaudio as sa wave_obj = sa.WaveObject.from_wave_file('audio.wav') play_obj = wave_obj.play() play_obj.wait_done() # 等待播放结束[^3] ``` ✅ **优点**:无失真播放WAV文件 ❌ **限制**:不支持MP3等压缩格式 ### 三、功能丰富的多媒体库 #### 1. pygame(游戏级音频控制) ```python import pygame pygame.mixer.init() pygame.mixer.music.load("audio.mp3") pygame.mixer.music.play() # 控制音量(0.0-1.0) pygame.mixer.music.set_volume(0.7) # 停止播放 pygame.mixer.music.stop() ``` ⚠️ **注意**:可能出现轻微失真[^2] #### 2. pydub + pyaudio(高级音频处理) ```python # 需要先安装: pip install pydub pyaudio from pydub import AudioSegment from pydub.playback import play audio = AudioSegment.from_mp3("audio.mp3") play(audio) # 自动检测平台播放 ``` ✅ **优点**:支持格式广泛,可进行音频处理 ### 四、图形界面集成方案 ```python # PyQt5方案(需谨慎安装) from PyQt5.QtMultimedia import QMediaPlayer, QMediaContent from PyQt5.QtCore import QUrl player = QMediaPlayer() media = QMediaContent(QUrl.fromLocalFile('audio.wav')) player.setMedia(media) player.setVolume(70) # 0-100音量范围 player.play() ``` ⚠️ **警告**:在Anaconda环境中安装可能导致spyder崩溃[^4] --- ### 方法选择建议 | 场景 | 推荐方案 | 安装命令 | |------|----------|----------| | 快速播放MP3 | playsound | `pip install playsound` | | 无损WAV播放 | simpleaudio | `pip install simpleaudio` | | 游戏/复杂控制 | pygame | `pip install pygame` | | 音频处理 | pydub | `pip install pydub pyaudio` | > **最佳实践**:简单播放选`playsound`,专业处理选`pydub`。Windows专用场景可用原生`winsound`[^1]
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值