
Python поддерживает работу с аудио через несколько специализированных библиотек, каждая из которых ориентирована на определённые форматы и задачи. WAV-файлы можно воспроизводить с помощью встроенного модуля wave и pyaudio, тогда как MP3 и другие сжатые форматы требуют сторонних решений, таких как Pygame или Playsound.
Выбор библиотеки зависит от требований к управлению воспроизведением. Например, Pygame позволяет изменять громкость, приостанавливать и возобновлять треки, тогда как Playsound ограничивается простым запуском и завершением воспроизведения. Для приложений, где важна работа с потоковым аудио, лучше использовать PyAudio, который поддерживает запись и воспроизведение в реальном времени.
Перед запуском аудио важно убедиться, что формат файла совместим с выбранной библиотекой и что установлены все необходимые зависимости. В Windows и Linux чаще всего достаточно стандартного Python и PIP, тогда как на macOS может потребоваться установка дополнительных компонентов для корректной работы PyAudio.
В статье подробно рассматриваются практические способы воспроизведения аудио, настройка громкости, управление треками и работа с микрофоном, что позволяет использовать Python для создания медиа-приложений, интерактивных игр и простых аудио-плееров без сложной настройки среды.
Установка и настройка библиотеки для работы с аудио
Для воспроизведения аудио в Python чаще всего используют библиотеки Pygame, Playsound и PyAudio. Их установка выполняется через пакетный менеджер PIP: pip install pygame, pip install playsound и pip install pyaudio. На Windows и Linux этого обычно достаточно, на macOS может потребоваться установка portaudio для корректной работы PyAudio.
После установки библиотек важно проверить совместимость с текущей версией Python. Pygame поддерживает версии от 3.7 и выше, Playsound работает с Python 3.6+, а PyAudio требует соответствующих бинарных колёс для выбранной платформы. Проверку можно выполнить через python -m pip show имя_библиотеки.
Настройка включает импорт необходимых модулей и проверку устройств воспроизведения. В PyAudio следует вызвать pyaudio.PyAudio().get_device_count(), чтобы убедиться, что микрофон и динамики корректно распознаны. В Pygame достаточно инициализации микшера через pygame.mixer.init(frequency=44100, size=-16, channels=2) для стандартного стереозвука с частотой 44,1 кГц.
Для дальнейшей работы рекомендуется создать отдельную виртуальную среду Python, чтобы библиотеки не конфликтовали с другими проектами. Это делается командой python -m venv env с последующей активацией среды и повторной установкой нужных пакетов внутри неё.
Воспроизведение WAV-файлов с помощью стандартных модулей
Python включает модуль wave для работы с WAV-файлами и модуль winsound для воспроизведения на Windows. Их комбинация позволяет проигрывать аудио без установки сторонних библиотек.
Пример использования winsound:
import winsound
# Воспроизведение WAV-файла
winsound.PlaySound("example.wav", winsound.SND_FILENAME)
Параметры функции PlaySound:
SND_FILENAME– воспроизведение файла по имениSND_LOOP– зацикливание воспроизведенияSND_ASYNC– асинхронное воспроизведение
Для кроссплатформенного воспроизведения можно использовать wave совместно с pyaudio, если установка сторонних модулей допустима. Пример с использованием только стандартных модулей:
import wave
import sys
import struct
import array
import winsound # Для Windows
filename = "example.wav"
winsound.PlaySound(filename, winsound.SND_FILENAME)
С помощью wave можно получить подробные параметры файла, что полезно для анализа или обработки:
import wave
with wave.open("example.wav", "rb") as wf:
channels = wf.getnchannels()
framerate = wf.getframerate()
frames = wf.getnframes()
sampwidth = wf.getsampwidth()
duration = frames / framerate
print(f"Каналы: {channels}, Частота: {framerate} Гц, Длина: {duration:.2f} сек, Размер сэмпла: {sampwidth} байт")
Рекомендации при работе с WAV:
- Использовать
with wave.openдля автоматического закрытия файла. - Проверять формат WAV: поддерживаются PCM-файлы, сжатые форматы требуют сторонних библиотек.
- На Windows предпочтительно
winsoundдля быстрого воспроизведения без зависимостей. - Для анализа или преобразования звука использовать
wave.getparams()иwave.readframes().
Использование библиотеки Pygame для проигрывания MP3

Библиотека pygame позволяет воспроизводить MP3-файлы на всех основных платформах. Для работы требуется модуль pygame.mixer, который инициализирует аудиосистему.
Инициализация и воспроизведение MP3:
import pygame
pygame.mixer.init(frequency=44100, size=-16, channels=2, buffer=512)
pygame.mixer.music.load("example.mp3")
pygame.mixer.music.play()
Параметры pygame.mixer.init:
frequency– частота дискретизации, обычно 44100 Гцsize– размер сэмпла, отрицательное значение обозначает signedchannels– количество каналов: 1 для моно, 2 для стереоbuffer– размер буфера, влияет на задержку воспроизведения
Управление воспроизведением:
pygame.mixer.music.pause()– приостановкаpygame.mixer.music.unpause()– продолжениеpygame.mixer.music.stop()– остановкаpygame.mixer.music.set_volume(0.0–1.0)– регулировка громкости
Для циклического воспроизведения используется параметр loops:
pygame.mixer.music.play(loops=-1) # бесконечный цикл
Рекомендации:
- Перед загрузкой нового трека вызвать
pygame.mixer.music.stop()для предотвращения конфликтов. - Проверять поддержку формата MP3 на платформе; при ошибках использовать
pygame.mixer.init()с параметрами по умолчанию. - Для синхронного ожидания окончания воспроизведения использовать цикл с
pygame.mixer.music.get_busy().
Работа с библиотекой Playsound для простого воспроизведения
Библиотека playsound позволяет воспроизводить аудио-файлы с минимальным количеством кода. Поддерживаются форматы WAV и MP3 на всех основных платформах.
Простейший пример воспроизведения:
from playsound import playsound
playsound("example.mp3")
Функция playsound имеет два основных параметра:
| Параметр | Описание |
|---|---|
| sound | Путь к файлу или URL |
| block | True – синхронное воспроизведение, False – асинхронное |
Пример асинхронного воспроизведения:
playsound("example.wav", block=False)
Рекомендации при использовании playsound:
- Использовать полный путь к файлу для предотвращения ошибок поиска.
- Для повторного воспроизведения вызывать
playsoundотдельно, так как встроенного цикла нет. - Асинхронное воспроизведение не всегда поддерживается на всех платформах одинаково.
- Для потоковой загрузки файлов с URL требуется сначала скачать файл локально.
Регулировка громкости и управления воспроизведением

В Python управление воспроизведением аудио и регулировка громкости зависит от используемой библиотеки. Рассмотрены основные подходы для pygame и pydub.
Для pygame.mixer:
pygame.mixer.music.set_volume(0.0–1.0)– установка громкости, 1.0 – максимальная, 0.0 – выключеноpygame.mixer.music.pause()– приостановка воспроизведенияpygame.mixer.music.unpause()– возобновлениеpygame.mixer.music.stop()– полная остановкаpygame.mixer.music.get_busy()– проверка, воспроизводится ли трек- Циклическое воспроизведение:
pygame.mixer.music.play(loops=n), гдеn– количество повторов
Для pydub и simpleaudio:
- Загрузка и регулировка громкости:
from pydub import AudioSegment
from pydub.playback import play
sound = AudioSegment.from_file("example.mp3")
sound = sound + 5 # увеличение громкости на 5 дБ
play(sound)
- Уменьшение громкости:
sound = sound - 3уменьшает на 3 дБ - Для асинхронного воспроизведения использовать
simpleaudio.play_buffer
Рекомендации:
- Громкость в
pygameмасштабируется от 0 до 1, вpydub– в децибелах. - Для плавного изменения громкости применяйте
AudioSegment.fade_in()иfade_out(). - Перед остановкой нового трека убедитесь, что предыдущий завершен, проверяя
get_busy(). - Асинхронное управление удобнее для фонового воспроизведения, синхронное – для звуковых эффектов.
Проигрывание нескольких аудио файлов одновременно

Для одновременного воспроизведения нескольких аудио-файлов в Python подходят библиотеки pygame и pydub с simpleaudio. Они позволяют запускать отдельные потоки для каждого трека.
Пример с использованием pygame.mixer:
import pygame
pygame.mixer.init(frequency=44100, size=-16, channels=2, buffer=512)
sound1 = pygame.mixer.Sound("track1.wav")
sound2 = pygame.mixer.Sound("track2.wav")
channel1 = sound1.play()
channel2 = sound2.play()
Особенности и рекомендации:
- Каждый
Soundпроигрывается через отдельныйChannel, что позволяет регулировать громкость и остановку индивидуально. - Максимальное количество одновременных каналов задается
pygame.mixer.set_num_channels(n). - Для смешивания треков с разной частотой дискретизации необходимо привести их к одной через
pygame.mixer.Sound(array)или конвертацию WAV.
Пример с pydub и simpleaudio:
from pydub import AudioSegment
import simpleaudio as sa
track1 = AudioSegment.from_file("track1.mp3")
track2 = AudioSegment.from_file("track2.mp3")
play_obj1 = sa.play_buffer(track1.raw_data,
num_channels=track1.channels,
bytes_per_sample=track1.sample_width,
sample_rate=track1.frame_rate)
play_obj2 = sa.play_buffer(track2.raw_data,
num_channels=track2.channels,
bytes_per_sample=track2.sample_width,
sample_rate=track2.frame_rate)
- Каждый трек воспроизводится независимо, можно управлять паузой и остановкой через
play_obj.stop(). - Для синхронизации начала треков следует запускать их почти одновременно или заранее выровнять длительность с помощью
AudioSegment.
Обработка ошибок при загрузке и воспроизведении файлов
Ошибки при работе с аудио-файлами могут возникать из-за отсутствия файла, некорректного формата или проблем с библиотекой воспроизведения. Их обработка повышает стабильность программы.
Пример обработки ошибок при использовании pygame:
import pygame
pygame.mixer.init()
try:
pygame.mixer.music.load("example.mp3")
pygame.mixer.music.play()
except pygame.error as e:
print(f"Ошибка воспроизведения: {e}")
Для playsound:
from playsound import playsound, PlaysoundException
try:
playsound("example.wav")
except PlaysoundException as e:
print(f"Ошибка воспроизведения: {e}")
Рекомендации по обработке ошибок:
- Перед загрузкой проверять существование файла с помощью
os.path.exists(). - Использовать try-except блоки для перехвата исключений библиотек.
- Для разных форматов и библиотек использовать отдельные блоки except для специфических исключений.
- При асинхронном воспроизведении проверять состояние потока с помощью
get_busy()или аналогичных методов.
Запись и воспроизведение аудио с микрофона в реальном времени
Для работы с аудио в реальном времени используется библиотека pyaudio. Она позволяет считывать данные с микрофона и сразу воспроизводить через динамики.
Пример записи и воспроизведения потока:
import pyaudio
CHUNK = 1024
FORMAT = pyaudio.paInt16
CHANNELS = 1
RATE = 44100
p = pyaudio.PyAudio()
stream = p.open(format=FORMAT,
channels=CHANNELS,
rate=RATE,
input=True,
output=True,
frames_per_buffer=CHUNK)
try:
while True:
data = stream.read(CHUNK)
stream.write(data)
except KeyboardInterrupt:
pass
stream.stop_stream()
stream.close()
p.terminate()
Рекомендации:
- Использовать буфер
CHUNKот 512 до 4096 сэмплов для минимальной задержки. - Формат
paInt16обеспечивает совместимость с большинством аудиоустройств. - Для стерео-микрофона изменить
CHANNELS=2и обработку данных соответствующим образом. - При длительном воспроизведении использовать try-except для безопасного завершения потока.
- Для уменьшения шумов можно применять фильтрацию данных через
numpyперед записью на выход.
Вопрос-ответ:
Какие библиотеки в Python позволяют воспроизводить аудио без установки сторонних модулей?
Для базового воспроизведения WAV-файлов можно использовать стандартные модули wave и winsound на Windows. Модуль wave позволяет читать параметры файла и получать данные сэмплов, а winsound обеспечивает воспроизведение с возможностью синхронного и асинхронного запуска, а также зацикливания.
Как проигрывать MP3-файлы в Python и управлять громкостью?
MP3-файлы можно воспроизводить с помощью pygame.mixer. Для этого необходимо инициализировать микшер через pygame.mixer.init(), затем загрузить файл с помощью pygame.mixer.music.load() и запустить воспроизведение pygame.mixer.music.play(). Громкость регулируется методом pygame.mixer.music.set_volume() с значением от 0.0 до 1.0. Также можно приостанавливать, возобновлять и останавливать трек с помощью соответствующих методов.
Можно ли воспроизводить несколько аудио-файлов одновременно в Python?
Да. В pygame каждый файл загружается как объект Sound и воспроизводится через отдельный Channel. Максимальное число одновременно воспроизводимых каналов задается через pygame.mixer.set_num_channels(). Для смешивания MP3-файлов используется pydub с simpleaudio, где каждый трек воспроизводится независимо, и управление паузой или остановкой осуществляется через объект воспроизведения.
Как записывать звук с микрофона и воспроизводить его в реальном времени?
Для этого используется библиотека pyaudio. Создается поток с параметрами частоты дискретизации, числа каналов и размера буфера. Затем данные считываются с микрофона методом stream.read() и сразу передаются на выход через stream.write(). Буфер рекомендуется устанавливать от 512 до 4096 сэмплов для минимальной задержки, формат paInt16 обеспечивает совместимость с большинством устройств, а управление потоком реализуется через безопасное завершение с try-except.
