Как воспроизводить звуки в python

Русские Блоги

«Советы по разработке» Python аудио инструмент управления PyAudio учебник

«Советы по разработке» Python аудио инструмент управления PyAudio учебник

Как воспроизводить звуки в python. Смотреть фото Как воспроизводить звуки в python. Смотреть картинку Как воспроизводить звуки в python. Картинка про Как воспроизводить звуки в python. Фото Как воспроизводить звуки в python

0. Введение

Когда вам нужно использовать Python для обработки аудиоданных, необходимо использовать Python для чтения и воспроизведения звуков. Ниже представлен полезный инструментарий PyAudio для обработки аудио.

1. Введение

PyAudio был вдохновлен:

2. установка

Текущая версияPyAudio v0.2.11, Используйте pip для установки PyAudio на большинстве платформ. Для версий, предшествующих v0.2.9, PyAudio распространяет установочные двоичные файлы, эти файлыАрхив здесь。

Microsoft Windows

Apple Mac OS X.

ИспользоватьHomebrewУстановите необходимую библиотеку portaudio, затем используйте pip для установки PyAudio:

brew install portaudio
pip install pyaudio

Debian / Ubuntu

Установите PyAudio с помощью менеджера пакетов:

sudo apt-get install python-pyaudio python3-pyaudio

Если у вас не установлена ​​последняя версия PyAudio, установите ее, используя pip:

Источник PyAudio

Исходный код можно загрузить из индекса пакетов Python (PyPI):pypi.python.org/pypi/PyAudio。

Или клонировать репозиторий git:

Чтобы собрать PyAudio из исходного кода, вам также необходимо собратьPortAudio v19, Некоторые инструкции по сборке PyAudio для различных платформ смотритеСоветы по компиляции, Чтобы построить PyAudio с помощью Microsoft Visual Studio, посмотрите Себастьяна Одетобъяснение。

3. Примеры

1). Собрать аудио

Следующий код демонстрирует, как собрать аудиофайл с микрофона компьютера за 4 секунды и сохранить файл output.wav

Используя модуль tqdm, вы можете легко отобразить процесс чтения следующим образом:

Чтобы использовать PyAudio, сначала используйте pyaudio.PyAudio() (1) Создание PyAudio, который устанавливает систему portaudio.

Для записи или воспроизведения аудио используйте pyaudio.PyAudio.open() (2) Откройте поток требуемых параметров звука на требуемом устройстве. Это установлено pyaudio.Stream Воспроизвести или записать аудио.

Используя потоковую передачу pyaudio.Stream.write() Аудио данные или использовать потоковые аудио данные для воспроизведения аудио pyaudio.Stream.read() 。(3)

Обратите внимание, что в «режиме блокировки» каждый pyaudio.Stream.write() или pyaudio.Stream.read() Блокируйте, пока все заданные / запрошенные кадры не будут воспроизведены / записаны. В качестве альтернативы, чтобы динамически генерировать аудиоданные или немедленно обрабатывать записанные аудиоданные, используйте «режим обратного вызова», описанный ниже.

Использовать pyaudio.Stream.stop_stream() Приостановить воспроизведение / запись и pyaudio.Stream.close() Останови поток. (4)

Наконец, используйте pyaudio.PyAudio.terminate() (5) Завершить сеанс portaudio

2). Воспроизвести аудио

Далее используется функция воспроизведения для воспроизведения аудиовыхода. Wav, сохраненный в 1)

Через tqdm отобразите индикатор выполнения воспроизведения следующим образом:

2). Воспроизведение аудио в режиме обратного вызова

Когда вам нужно воспроизвести аудио во время выполнения других программ, вы можете использовать метод обратного вызова для воспроизведения. Пример кода следующий:

Источник

Воспроизведение аудио файлов с Python

Я ищу хорошо поддерживаемую библиотеку Python, позволяющую воспроизводить аудиофайлы на моем Raspberry Pi с использованием стандартного аудиовыхода.

Пока я пробовал несколько, но ни один из них, кажется, не работает. Хотя pyglet работает на моем обычном компьютере нормально, он вызывает ошибку на Raspberry Pi. Есть ли библиотека Python, которая доказала свою простоту использования?

Я рекомендую широко популярную игру Pygame. Я могу ошибаться, но я считаю, что он предустановлен на Pi. Вы можете использовать музыкальный модуль Pygame Mixer для воспроизведения аудиофайлов. Я включил пример кода ниже.

ПРИМЕЧАНИЕ. Если это не помогло, перейдите в терминал и обновите систему

и попробуй еще раз.

Мне нужен был сценарий для воспроизведения песни с тридцати секунд на заднем плане, в то же время отвечая на ввод других пользователей. Я тогда хотел, чтобы это закончило песню на каком-то событии.

Я не думаю, что это особенно элегантно, но я открыл канал для фонового процесса MPlayer.

Затем, когда я захотел завершить процесс MPlayer, я просто написал «q» для выхода в канал.

Посмотрите в документации MPlayer все виды команд, которые вы можете передать таким образом, чтобы управлять воспроизведением.

Надеюсь, это несколько полезно!

Pygame почти наверняка более устойчив, но, я полагаю, зависит от ваших потребностей.

Я бы порекомендовал pyglet, а не pygame, если вам не нужна графика. На мой взгляд, это проще, элегантнее и лучше поддерживается. Опять же, я ожидаю, что это может быть дело вкуса.

Pygame дает вам простой и удобный способ загружать и воспроизводить звуки на разных каналах.

Вы можете использовать несколько внешних игроков через каналы. Тем не менее, вы почти всегда будете испытывать потерю скорости. Существует также проблема с управлением воспроизведением.

Я рекомендую вам pyaudio, он отлично работает.

Если вы хотите воспроизвести и сжатые файлы, я могу свободно указать вам на мой модуль decoder.py. Вы можете найти это на PyPI.

Он также использует подпроцесс, но вызывает декодеры вместо игроков. Они не используют много процессора, и некоторые из них знают, как использовать аппаратное ускорение. Затем вы можете использовать pyaudio или что-то еще для вывода необработанных аудиоданных. Если вы хотите, вы можете даже использовать pygame, используя pygame.sndarray. Таким образом, вы можете воспроизводить больше форматов, чем поддерживает Pygame.

Я пробовал decoder.py в среде PyQT GUI, с pyaudio, а также используя aplay в качестве внешнего проигрывателя. Это было на Raspberry Pi B.

Результаты были довольно удовлетворительными в обоих случаях.

Простота может быть поставлена ​​под сомнение.

Источник

winsound — Интерфейс воспроизведения звука для Windows¶

Модуль winsound обеспечивает доступ к базовому звуковоспроизводящему оборудованию, предоставляемому платформами Windows. Он включает функции и несколько констант.

winsound. Beep ( frequency, duration ) ¶

Подайте звуковой сигнал на динамик пК. Параметр frequency определяет частоту звука в герцах и должен находиться в диапазоне от 37 до 32 767. Параметр duration указывает время в миллисекундах, в течение которого должен продолжаться звук. Если система не может подать звуковой сигнал громкоговорителю, RuntimeError поднимается.

winsound. PlaySound ( sound, flags ) ¶

winsound. MessageBeep ( type=MB_OK ) ¶

Все Win32 системы поддерживают, по крайней мере, следующее: большинство систем поддерживают гораздо больше:

PlaySound() nameСоответствующее имя звука панели управления
‘SystemAsterisk’Звездочка
‘SystemExclamation’Восклицание
‘SystemExit’Выход из Windows
‘SystemHand’Критическая остановка
‘SystemQuestion’Вопрос

Остановите воспроизведение всех сущности указанного звука.

Этот флаг не поддерживается на современных платформах Windows.

Возвращает немедленно, позволяя звукам воспроизводиться асинхронно.

Если указанный звук не найден, не Воспроизвести системный звук по умолчанию.

Не прерывайте воспроизводимые в данный момент звуки.

Возвращает немедленно, если звуковой драйвер занят.

Этот флаг не поддерживается на современных платформах Windows.

Источник

Класс Sound и модуль pygame.mixer.music

В Pygame для работы с аудио предназначены модули pygame.mixer и pygame.mixer.music. Модули похожи, однако pygame.mixer в первую очередь адаптирован для добавления и настройки звуковых эффектов в игре. В то время как pygame.mixer.music – для добавления фоновой музыки.

Функция pygame.mixer.music.load() загружает потоковое аудио, т. е. не грузит файл целиком, а делает это отдельными порциями. В результате можно проигрывать только один файл за раз. Однако можно ставить файлы в очередь функцией queue(). Поддерживает в том числе формат mp3 (но не в Ubuntu).

С другой стороны, в pygame.mixer ключевым является класс Sound. Он позволяет загружать, проигрывать и выполнять ряд других действий с файлами форматов wav или ogg. При создании экземпляра Sound в конструктор передается имя файла.

В примере ниже подгружается фоновая музыка: pygame.mixer.music.load(). Функция не возвращает никакого «музыкального» объекта, поэтому результат ее вызова не присваивается переменной.

В программе при нажатии на клавишу 1 клавиатуры музыка ставится на паузу: music.pause(). Клавиша 2 уменьшает громкость в два раза: music.set_volum(0.5). Нажатие 3 возвращает громкость на прежний уровень. Функция unpause() вызывается на случай, если до этого музыка была выключена (клавишей 1).

В примере создаются два объекта типа Sound. У них есть свой метод play(). В данном случае файлы проигрываются при клике левой и правой кнопками мыши. Объекты Sound могут проигрываться одновременно, так как обычно принадлежат разным каналам. Если требуется более тонкое управление звуками, дополнительно используют класс Channel.

Программа ниже в процессе выполнения интерпретатором python3.6 может выбросить ошибку, в 3.8 – все нормально. На официальном сайте pygame.org рекомендуется использовать Pygame с версией Питона от 3.7.7.

Если закомментировать вызовы функций pause() и unpause() и раскомментировать stop() и play(), то результат будет схож. Разница в том, что при использовании комбинации stop-play файл начнет проигрываться сначала, а при pause-unpause продолжится с места останова.

Если у вас нет файлов wav или ogg для тестов, можете найти немного в каталоге data модуля pygame.examples. Модуль находится в папке библиотеки pygame, адрес которой можно посмотреть так:

Практическая работа

Добавьте фоновую музыку и звук столкновения в игру из практической работы предыдущего урока.

Окно игры должно закрываться только после того, как звук столкновения полностью проиграется. В зависимости от решения вам может понадобиться метод get_length() объекта типа Sound. Метод возвращает продолжительность звука, выраженную в секундах (тип float).

Шапошникова С. (plustilino) © 2020

Pygame. Введение в разработку игр на Python

Источник

Воспроизведение аудио с Python

Как я могу воспроизвести звук (это будет как звук в 1 секунду) из скрипта Python?

Было бы лучше, если бы он не зависел от платформы, но для начала он должен работать на Mac.

Я знаю, что могу просто выполнить afplay file.mp3 команду из Python, но можно ли сделать это в чистом Python? Мне также было бы лучше, если бы он не полагался на внешние библиотеки.

Вы можете найти информацию об аудио Python здесь: http://wiki.python.org/moin/Audio/

Вы можете найти более конкретную документацию о поддержке аудиомикшера в документации pygame.mixer.music.

Обязательно используйте несжатые 16-битные файлы PCM.

Попробуйте использовать playsound, который представляет собой кроссплатформенный однофункциональный модуль на чистом Python без каких-либо зависимостей для воспроизведения звуков.

Установить через pip:

После установки вы можете использовать его так:

В pydub мы недавно решили использовать ffplay (через подпроцесс) из набора инструментов ffmpeg, который внутренне использует SDL.

Я связал реализацию выше, но следует упрощенная версия:

edit : pydub теперь использует pyaudio для воспроизведения, когда он установлен, и возвращается к ffplay, чтобы избежать недостатков, о которых я упоминал. Ссылка выше также показывает эту реализацию.

Для чего-то более независимого от платформы вам понадобится внешняя библиотека.

Я рекомендую модуль звукового устройства (но будьте осторожны, я автор).

Пакет включает предварительно скомпилированную библиотеку PortAudio для Mac OS X и Windows, и ее можно легко установить с помощью:

Он может воспроизводить звук из массивов NumPy, но также может использовать простые буферы Python (если NumPy недоступен).

Для воспроизведения массива NumPy это все, что вам нужно (при условии, что аудиоданные имеют частоту дискретизации 44100 Гц):

Он не может читать / записывать звуковые файлы, для этого вам понадобится отдельная библиотека.

Ответ Аарона кажется примерно в 10 раз сложнее, чем необходимо. Просто сделайте это, если вам нужен только ответ, работающий в OS X:

Затем запустите его так:

Это самый простой и лучший из найденных. Он поддерживает Linux / pulseaudio, Mac / coreaudio и Windows / WASAPI.

Можно воспроизводить звук в OS X без каких-либо сторонних библиотек, используя аналог следующего кода. Необработанные аудиоданные можно вводить с помощью wave_wave.writeframes. Этот код извлекает 4 секунды аудио из входного файла.

Попробуйте PySoundCard, использующий для воспроизведения PortAudio, доступный на многих платформах. Кроме того, он распознает «профессиональные» звуковые устройства с большим количеством каналов.

Вот небольшой пример из Readme:

ОБНОВЛЕНИЕ: все это указывает, как делать то, чего OP хотел избежать в первую очередь. Думаю, я разместил это здесь, потому что OP хотел избежать именно той информации, которую я искал. Упс.

Pypi имеет список модулей для Python в музыке. Мне больше всего нравится jython, потому что в нем больше ресурсов и библиотек для музыки. В качестве примера кода для воспроизведения одной заметки из учебника :

Mac OS Я пробовал много кодов, но у меня это работает

Установите playsound пакет, используя:

Чтобы воспроизвести звук уведомления с помощью python, вызовите музыкальный проигрыватель, например vlc. VLC побудил меня использовать его версию командной строки, cvlc, вместо этого.

Для этого требуется, чтобы на устройстве был предварительно установлен vlc. Протестировано в Linux (Ubuntu 16.04 LTS); Запуск Python 3.5.

Попробуйте звуковое устройство

Если у вас нет модуля, введите его pip install sounddevice в свой терминал.

Затем в предпочитаемом вами скрипте Python (я использую Juypter) введите

sd.play(audio, sr) будет воспроизводить то, что вы хотите, через Python

Независимо от того, какой файл wav вы хотите воспроизвести, просто убедитесь, что он находится в том же каталоге, что и ваш скрипт Python. Это должно позволить вам воспроизводить желаемый файл WAV через Python.

Как только аудио является объектом данных «librosa», Python видит его как массив numpy. В качестве эксперимента попробуйте воспроизвести длинный (попробуйте 20 000 точек данных) случайный массив numpy. Python должен воспроизводить это как белый шум. Модуль sounddevice также воспроизводит множество массивов и списков.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *