Использование пакета SimpleAudio, кроссплатформенной звуковой библиотеки для Python
Прочитав эту статью, вы научитесь воспроизводить аудиофайлы в своем приложении Python. Согласно официальной документации, пакет SimpleAudio:
«… Обеспечивает кроссплатформенную возможность воспроизведения звука без зависимостей для Python 3 в OSX, Windows и Linux.
Simpleaudio предназначен для универсального приобретения кроссплатформенного аудиоинтерфейса, предназначенного для воспроизведения звуковых клипов ».
Он имеет следующие особенности:
- Асинхронный интерфейс - выполнение программы продолжается сразу после начала воспроизведения звука, а фоновый поток позаботится обо всем остальном.
- Аудиоформат - стандартное целое число (8-, 16- и 24-битные целочисленные форматы), а также 32-битное число с плавающей запятой. 8-битный беззнаковый. 16-битные и 24-битные символы имеют прямой порядок байтов со знаком. 24 бита - это три байта на упакованный образец. 32-битные числа с прямым порядком байтов с плавающей запятой.
В этом руководстве есть три раздела:
- Настраивать
- Реализация
- Заключение
Переходим к следующему разделу и приступаем к установке необходимых модулей.
1. Настройка
Установка довольно проста с помощью команды pip install
. Перед продолжением настоятельно рекомендуется настроить виртуальную среду.
Окна
Выполните следующую команду, чтобы установить модуль simpleaudio
:
pip install simpleaudio
Linux
Для пользователей Linux вам необходимо установить дополнительные зависимости помимо указанной выше команды. Для вариантов Debian это можно сделать с помощью следующих команд. Сначала мы установим пакет разработки python3:
sudo apt-get install python3-dev
Затем мы получаем пакет разработки ALSA:
sudo apt-get install libasound2-dev
Когда вы закончите установку, перейдите к следующему разделу и начните писать код Python.
2. Реализация
Импортировать
Прежде всего, добавьте следующее объявление импорта вверху файла Python:
import simpleaudio as sa
WaveObject
Следующим шагом будет создание файла WaveObject
. Согласно документации, WaveObject
представляет фрагменты аудио, готовые к воспроизведению. Он инкапсулирует буфер аудиоданных, параметры воспроизведения (например, частоту дискретизации) и предоставляет метод для начала воспроизведения. Он принимает следующие входные параметры.
audio_data
- объект с аудиоданными (должен поддерживать интерфейс буфера)num_channels
(int) - количество аудиоканаловbytes_per_sample
(int) - количество байтов на одноканальный отсчетsample_rate
(int) - частота дискретизации в Гц
К счастью, этот модуль также предоставляет нам функцию from_wave_file
, которая позволяет нам вводить путь к файлу и загружать соответствующие данные в WaveObject
. Добавьте следующий код в свой файл Python. Измените путь ввода в соответствии с тем, что у вас есть:
wave_obj = sa.WaveObject.from_wave_file('alarm.wav')
Настоятельно рекомендуется использовать в качестве входных данных файл wav
. Если у вас есть mp3
вместо wav
, просто преобразуйте его в wav
файл.
Играть
Следующим шагом будет вызов функции play
:
play_obj = wave_obj.play()
Эта функция вернет PlayObject
, который, по сути, обрабатывает задания воспроизведения звука, такие как остановка и проверка, продолжает ли воспроизведение. Наконец, добавьте следующую функцию, и вы можете запустить этот файл Python для проверки воспроизведения звука. Множественные вызовы функции воспроизведения будут запускать все воспроизведение параллельно в фоновом режиме асинхронно.
play_obj.wait_done()
Играет
Чтобы проверить, играет ли PlayObject
, вы можете вызвать функцию is_playing
:
play_obj.is_playing()
Стоп
Хотя на момент написания не предусмотрена функция паузы или возобновления, вы все равно можете использовать функцию stop
для завершения воспроизведения звука:
play_obj.stop()
Также есть глобальная функция stop_all
, которая останавливает все существующее воспроизведение:
simpleaudio.stop_all()
Ознакомьтесь со следующей сутью, чтобы получить представление о том, как это работает асинхронно:
3. Заключение
Подведем итоги тому, что мы узнали сегодня.
Мы начали с установки модуля simpleaudio
через pip install. Для пользователей Linux были установлены дополнительные пакеты, такие как разработка Python и ALSA.
Затем мы подробно изучили доступные функции. Мы создали WaveObject
, который читает и загружает wav
файл. Затем мы воспроизвели его и получили PlayObject
, который можно было использовать для управления воспроизведением звука.
Спасибо, что прочитали эту статью. Надеюсь увидеть вас снова в следующей статье!