Использование пакета SimpleAudio, кроссплатформенной звуковой библиотеки для Python

Прочитав эту статью, вы научитесь воспроизводить аудиофайлы в своем приложении Python. Согласно официальной документации, пакет SimpleAudio:

«… Обеспечивает кроссплатформенную возможность воспроизведения звука без зависимостей для Python 3 в OSX, Windows и Linux.

Simpleaudio предназначен для универсального приобретения кроссплатформенного аудиоинтерфейса, предназначенного для воспроизведения звуковых клипов ».

Он имеет следующие особенности:

  • Асинхронный интерфейс - выполнение программы продолжается сразу после начала воспроизведения звука, а фоновый поток позаботится обо всем остальном.
  • Аудиоформат - стандартное целое число (8-, 16- и 24-битные целочисленные форматы), а также 32-битное число с плавающей запятой. 8-битный беззнаковый. 16-битные и 24-битные символы имеют прямой порядок байтов со знаком. 24 бита - это три байта на упакованный образец. 32-битные числа с прямым порядком байтов с плавающей запятой.

В этом руководстве есть три раздела:

  1. Настраивать
  2. Реализация
  3. Заключение

Переходим к следующему разделу и приступаем к установке необходимых модулей.

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, который можно было использовать для управления воспроизведением звука.

Спасибо, что прочитали эту статью. Надеюсь увидеть вас снова в следующей статье!

использованная литература

  1. SimpleAudio GitHub
  2. Документация SimpleAudio