Как воспроизвести звук в python
Как воспроизвести аудио (.mp3) на Python
В данной статье мы покажем как можно воспроизвести аудио файлы в разных библиотеках на Python. Python универсальный язык программирование и в нем можно манипулировать не только текстом и цифрами но и аудио-видео файлами. Ниже мы покажем код как работать с mp3 в разных библиотеках.
Библиотека PyGame
На создание скрипта с нуля для манипуляции аудио файлов может уйти много времени. Если вам нужно просто обрезать песню онлайн вы можете использовать онлайн редактор mp3 файлов. Такие аудио редакторы позволяют быстро обрезать песню и скачать ее онлайн.
Библиотека Pyglet
Pyglet предоставляет собой API для работы с мультимедийными данными в приложениях, написанных с помощью Python. Это OpenGL библиотека, которая работает на нескольких платформах. Она в основном используется для разработки игровых и других графически насыщенных приложений.
Библиотека GStreamer
GStreamer является чрезвычайно мощным и гибким фреймворком для разработки приложений, обрабатывающих потоковые мультимедийные данные. Многие преимущества фреймворка GStreamer обусловлены его модульной архитектурой: GStreamer позволяет достаточно просто подключать дополнительные модули плагинов. Но платой за использование модульной архитектуры и удобных интерфейсов чаще всего является усложнение программного продукта, при этом процесс разработки новых приложений на его основе не всегда прост.
10 аудиомодулей Python для воспроизведения и записи
В настоящее время язык программирования Python является ведущим из-за его удобных функций. Python также имеет много интересных модулей и библиотек, с помощью которых пользователи могут многое сделать, используя их. Одна из самых интересных особенностей языка Python – это его аудиомодули.
В этой статье мы обсудим 10 различных типов аудиомодулей и библиотек на Python для воспроизведения и записи звука, их уникальные особенности и преимущества.
Давайте разберемся с вышеуказанными аудиомодулями по очереди.
1. Аудиомодуль PYO
PYO – это модуль Python, написанный на языке программирования C для создания сценария цифровой обработки сигналов. Этот модуль Python содержит классы для обработки самых разных типов аудиосигналов. Благодаря этому пользователи могут импортировать цепочки обработки сигналов непосредственно в сценарии или проекты Python и могут манипулировать звуковыми сигналами в реальном времени с помощью интерпретатора.
Инструмент модулей PYO в Python имеет примитивы, такие как математические операции, базовую обработку сигналов: задержки, генераторы синтеза, фильтры и многое другое. Но он также объединяет алгоритмы для создания звуковой грануляции и многих других художественных звуковых операций.
2. Кроссплатформенный аудиовход – вывод с pyAudio
Pyaudio – это библиотека Python, которая представляет собой кроссплатформенный аудиовход – вывод с открытым исходным кодом. Он имеет широкий спектр функций, связанных со звуком и в основном ориентированных на сегментацию, извлечение функций, классификацию и визуализацию.
Используя библиотеку pyaudio, пользователи могут классифицировать неизвестные звуки, выполнять контролируемую и неконтролируемую сегментацию, извлекать звуковые функции и представления, обнаруживать звуковые события и отфильтровывать периоды тишины из длинных записей, применять уменьшение размерности для визуализации аудиоданных и сходства контента и многое другое.
Здесь пользователи могут заметить, что воспроизведение звука с использованием библиотеки pyaudio может быть немного сложнее по сравнению с другими библиотеками воспроизведения звука. Вот почему эта библиотека может быть не лучшим выбором пользователей для воспроизведения звука в своих проектах или приложениях.
Хотя библиотека pyaudio обеспечивает более низкоуровневое управление, что позволяет пользователям устанавливать параметры для своих устройств ввода и вывода. Эта библиотека также позволяет пользователям проверять загрузку своего процессора и активность ввода-вывода.
Библиотека Pyaudio также позволяет пользователям воспроизводить и записывать звук в режиме обратного вызова, где указанная функция обратного вызова вызывается, когда новые данные необходимы для воспроизведения и доступны для записи. Это особенности библиотеки pyaudio, которые отличают ее от других аудиобиблиотек и модулей. Эта библиотека специально используется, если пользователь хочет воспроизвести звук помимо простого воспроизведения.
3. Dejavu
Dejavu – это аудиомодуль на Python с открытым исходным кодом. Он может запоминать записанный звук, прослушивая его один раз, и этот звук сохраняется в базе данных. После этого, когда проигрывается песня, микрофонный вход или дисковый файл, Dejavu пытается сопоставить звук с сохраненными в базе данными, и вернуть песню или запись, которая была воспроизведена ранее.
Модуль Dejavu превосходит распознавание отдельных сигналов с реалистичным количеством шума. Есть две формы, в которых пользователь может использовать Дежавю для распознавания звука:
4. Mingus
Mingus – это пакет на Python. Его используют многие программисты, исследователи музыкантов и композиторы для создания и изучения музыки и песен. Этот пакет является кроссплатформенным и представляет собой очень продвинутую теорию музыки, представляющую пакет для Python вместе с файлами цифрового интерфейса музыкальных инструментов и поддержкой воспроизведения.
Пакет Mingus можно использовать для образовательных инструментов, для создания редакторов для песен, а также во многих других приложениях и программах, в которые пользователи хотят импортировать функцию обработки и воспроизведения музыки.
Этот пакет представляет собой теорию музыки и включает в себя такие темы, как гаммы, прогрессии, аккорды и интервалы. Mingus тестирует эти компоненты и использует для создания и распознавания музыкальных элементов с помощью удобных сокращений.
# для недействительных заметок:
5. hYPerSonic
hYPerSonic – это фреймворк на языках Python и C. Используется для разработки и эксплуатации конвейеров обработки звука, предназначенных для управления в реальном времени. Эта структура является низкоуровневой, в которой подсчитывается каждый байт, и это также включает объекты для звуковой карты, фильтрует операции с памятью, file – io и осцилляторы. Эта структура работает в операционных системах Linux и OSX.
6. Pydub
Pydub – это библиотека Python, используемая для управления аудио и добавления к нему эффектов. Эта библиотека представляет собой очень простой и легкий, но высокоуровневый интерфейс, основанный на FFmpeg и склонный к jquery. Эта библиотека используется для добавления тегов id3 в аудио, нарезки его и объединения аудиодорожек. Библиотека Pydub поддерживает версии Python 2.6, 2.7, 3.2 и 3.3.
Однако пользователи могут открывать и сохранять файл WAV с помощью библиотеки pydub без каких-либо зависимостей. Но пользователям необходимо установить пакет для воспроизведения звука, если они хотят воспроизводить звук.
Следующий код можно использовать для воспроизведения файла WAV с помощью pydub:
Если пользователь хочет воспроизводить другие форматы аудиофайлов, такие как файлы MP3, им следует установить libav или FFmpeg.
После установки FFmpeg пользователю необходимо внести небольшое изменение в код для воспроизведения файла MP3.
Используя оператор AudioSegment.from_file(имя_файла, тип_файла), пользователи могут воспроизводить любой формат аудиофайла, поддерживаемый ffmpeg.
Библиотека Pydub также позволяет пользователям сохранять аудио в различных форматах файлов. Пользователи также могут рассчитать длину аудиофайлов, использовать кроссфейды в аудио с помощью этой библиотеки.
7. Simpleaudio
Simpleaudio – это кроссплатформенная библиотека. Также используется для воспроизведения файлов WAV без каких-либо зависимостей. Библиотека simpleaudio ожидает, пока файл закончит воспроизведение звука в формате WAV, перед завершением скрипта.
В файле формата WAV сохраняется категоризация битов, которая представляет необработанные аудиоданные, а также хранятся заголовки вместе с метаданными в формате файла обмена ресурсами.
Окончательная запись состоит в том, чтобы сохранять каждый аудиосэмпл, который представляет собой конкретную точку данных, относящуюся к давлению воздуха, как при 44200 выборок в секунду, 16-битное значение для записей компакт-дисков.
Для уменьшения размера файла этого достаточно для хранения нескольких записей, таких как человеческая речь, с более низкой частотой дискретизации, например 8000 выборок в секунду. Однако более высокие звуковые частоты не могут быть представлены достаточно точно.
Некоторые из библиотек и модулей, обсуждаемых в этой статье, воспроизводят и записывают байтовые объекты, а некоторые из них используют массивы NumPy для записи необработанных аудиоданных. Оба напоминают категоризацию точек данных, которые можно воспроизводить с определенной частотой дискретизации для воспроизведения звука.
В массиве NumPy каждый элемент может содержать 16-битное значение, эквивалентное отдельной выборке, а для объекта bytes каждая выборка сохраняется как набор из двух 8-битных значений. Важное различие между этими двумя типами данных заключается в том, что массивы NumPy изменяемы, а объекты байтов неизменны, что делает последние более подходящими для генерации аудио и обработки более сложных сигналов.
Пользователи могут воспроизводить массивы NumPy и байтовые объекты в библиотеке simpleaudio с помощью оператора simpleaudio.play_buffer(). Но перед этим пользователи должны убедиться, что они уже установили библиотеки NumPy и simpleaudio.
Пример: сгенерировать массив Numpy, соответствующий тону 410 Гц.
8. winsound
winsound – это модуль в Python, который используется для доступа к основному механизму воспроизведения звука операционной системы Windows.
В модуле winsound файл WAV можно воспроизвести с помощью всего нескольких строк кода.
Модуль winsound не поддерживает никаких форматов файлов, кроме файлов WAV. Это позволяет пользователям подавать звуковой сигнал своим динамикам, используя выражение winsound.Beep(частота, продолжительность).
9. python-sounddevice
python – sounddevice – это модуль python для кроссплатформенного воспроизведения звука. Этот модуль предоставляет привязки для библиотеки PortAudio и имеет некоторые подходящие функции для воспроизведения и записи массивов NumPy, содержащих аудиосигналы.
Если пользователь хочет воспроизвести файл WAV, он должен установить NumPy и звуковой файл, чтобы открыть формат аудиофайла в файлах WAV в виде массивов NumPy.
Оператор sound_file.read() используется для извлечения необработанных аудиоданных, а также частоты дискретизации файла, которые хранятся в заголовке формата файла обмена ресурсами. Оператор sound_device.wait() используется для того, чтобы убедиться, что сценарий завершается только после завершения воспроизведения звука.
10. playsound
playsound – это модуль Python, с помощью которого пользователи могут воспроизводить звук в одной строке кода. Это кроссплатформенный модуль, который представляет собой единую функцию без каких-либо зависимостей для воспроизведения звуков и аудио.
Модуль playsound используется для файлов, отформатированных в файл WAV и файл MP3, а также может работать с другими форматами файлов.
Заключение:
В этой статье мы обсудили различные типы библиотеки Python и модулей, которые используются для воспроизведения и записи различных типов аудиофайлов и звуков. Здесь мы объяснили различные функции и важность каждой библиотеки и модулей для воспроизведения звуков в проекте разработки и модификации приложений и программного обеспечения.
Как воспроизвести звук в python 3?
Я хотел написать сценарий python для воспроизведения звука (записанного с помощью рекордера windows)!
Я прочитал pygame может сделать эту работу и установил pygame! Но я не знаю, как написать код, который воспроизводит звук с определенного пути! Я должен воспроизвести аудиофайл, расположенный по адресу C:\Users\Asdf\Documents\Audio.wav
Но потом я получаю сообщение об ошибке:
Обратная трассировка (самый недавний призыв последнего): файл «», линия 1, в crash_sound = pygame.mixer.Sound(«crash.wav») AttributeError: ‘module’ объект не имеет атрибут ‘mixer’
Так как же мне написать сценарий для воспроизведения этого файла Audio.wav с помощью pygame?
Я использую версию Python 3.4 64 bit!
3 ответа
Я реализовал локальное уведомление в своем приложении, но мне просто интересно, есть ли способ воспроизвести звук, который не является частью NSMainbundle.Basically в моем приложении, я хочу, чтобы пользователь записал звук, который воспроизводится при генерации локального уведомления, а не.
Я пытаюсь воспроизвести этот звук в моем game. but по какой-то причине он работает, Может ли кто-нибудь объяснить мне, почему? var morning:Sound =new alarmclock (); var transforming:SoundTransform = new SoundTransform(0.5); var morningChannel:SoundChannel = morning.play(0,0,transforming);.
Я эффективно использовал pydub для этой цели. Модуль может быть установлен как
pydub действительно нуждается в установке FFMPEG. Подробности установки pydub и ffmpeg приведены @ https://github.com/jiaaro/pydub
Добавить python к windows 7 PATH
Установка pygame
Сначала вы хотите установить pygame. Вы можете сделать это несколькими способами. Но для установки из исходного кода
Работает pygame
Надеюсь, что это решит проблему для вас
Пример
Воспроизведение звука на windows (без pygame)
Вот простое решение, которое работает на всех платформах без каких-либо зависимостей, кроме одного файла Python.
Первая установка playsound с pip:
Затем импортируйте функцию с тем же именем из модуля и запустите ее. Довольно просто, не так ли?
Мне было интересно, можно ли воспроизвести звук непосредственно на входе из python. Я использую linux, и с этим я использую OSS, ALSA и Pulseaudio
Я смог воспроизвести простой звук этой строки кода: SystemSound.play(SystemSoundType.click); Как я могу воспроизвести настроенный звук? Скажем, короткий mp3
Похожие вопросы:
Мне было интересно, могу ли я в любом случае воспроизвести звук без импорта внешней библиотеки, такой как pygame. Что-то вроде этого: import os import sound mysound = sound.load(mysound.mp3) # gets.
Мне просто нужно воспроизвести простой звук, у меня есть приложение, которое отправляет сообщения, и мне нужно воспроизвести системный звук message sent, когда сообщение будет отправлено.
Я реализовал локальное уведомление в своем приложении, но мне просто интересно, есть ли способ воспроизвести звук, который не является частью NSMainbundle.Basically в моем приложении, я хочу, чтобы.
Я пытаюсь воспроизвести этот звук в моем game. but по какой-то причине он работает, Может ли кто-нибудь объяснить мне, почему? var morning:Sound =new alarmclock (); var transforming:SoundTransform.
Мне было интересно, можно ли воспроизвести звук непосредственно на входе из python. Я использую linux, и с этим я использую OSS, ALSA и Pulseaudio
Я смог воспроизвести простой звук этой строки кода: SystemSound.play(SystemSoundType.click); Как я могу воспроизвести настроенный звук? Скажем, короткий mp3
Мне было интересно, как воспроизвести какой-то звук по умолчанию в c++. Я не хочу загружать какие-либо дополнительные файлы (программы или музыку). Просто играть 2 или 3 ноты, как бип-бип. Как я.
Я делал игру в python году и хотел добавить звук, поэтому я так и сделал. Интересно, есть ли способ воспроизвести звук, но не приостановить rest моего кода? (использовал winsound)
Кто-нибудь знает сценарий о том, как воспроизвести звук, нажав на кнопку? Мой звук автоматически воспроизводится при обнаружении цели. И останавливается, когда цель потеряна. Теперь мне нужен.
Воспроизведение аудио с помощью Python
Как я могу воспроизводить аудио (это было бы похоже на 1 второй звук) из скрипта Python?
было бы лучше, если бы он был независимым от платформы, но сначала он должен работать на Mac.
Я знаю, что могу просто выполнить afplay file.mp3 команда изнутри Python, но возможно ли это сделать в raw Python? Я также был бы лучше, если бы он не полагался на внешние библиотеки.
21 ответов
вы можете найти информацию о Python audio здесь:http://wiki.python.org/moin/Audio/
ваш лучший выбор, вероятно, чтобы использовать pygame / SDL. Это внешняя библиотека, но она имеет большую поддержку на различных платформах.
на pydub мы недавно решил использовать ffplay (через подпроцесс) из набора инструментов ffmpeg, который внутренне использует SDL.
он работает для наших целей-в основном просто упрощает тестирование результатов кода pydub в интерактивном режиме – но у него есть свои недостатки, например, появление новой программы в доке на mac.
я связал реализацию выше, но упрощенная версия следует:
редактировать: pydub теперь использует pyaudio для воспроизведения, когда он установлен, и возвращается к ffplay, чтобы избежать недостатков, о которых я упоминал. Ссылка выше показывает, что реализация также.
посмотри Simpleaudio, которая является относительно недавней и легкой библиотекой для этой цели:
обязательно используйте несжатые 16-битные файлы PCM.
AFAIK, стандартная библиотека имеет только один модуль для воспроизведения аудио:ossaudiodev. К сожалению, это работает только на Linux и FreeBSD.
обновление: есть также winsound, но, очевидно, это также платформы.
для чего-то более независимого от платформы, вам нужно будет использовать внешнюю библиотеку.
моя рекомендация это sounddevice модуль (но будьте осторожны, я автор).
пакет включает в себя предварительно скомпилированный PortAudio библиотека для Mac OS X и Windows, и может быть легко установлен с:
Он может воспроизводить звук из массивов NumPy, но также может использовать простые буферы Python (если NumPy недоступен).
чтобы воспроизвести массив NumPy, это все, что вам нужно (при условии, что звуковые данные имеют частоту дискретизации 44100 Hz):
для более подробной информации, посмотрите на документация.
он не может читать / записывать звуковые файлы, для этого вам понадобится отдельная библиотека.
Если вам нужна портативная аудиотека Python, попробуйте PyAudio. Он, безусловно, имеет MAC-порт.
Pyglet имеет возможность воспроизводить аудио через внешнюю библиотеку под названием AVbin. Pyglet-это оболочка ctypes вокруг собственных системных вызовов на каждой поддерживаемой платформе. К сожалению, я не думаю, что что-либо в стандартной библиотеке будет воспроизводить звук.
Аарон кажется, около 10x сложнее, чем необходимо. Просто сделайте это, если вам нужен только ответ, который работает на OS X:
одно дело. это немедленно возвращается. Поэтому вы можете также сделать это, если хотите, чтобы вызов блокировался до тех пор, пока звук не закончится.
Edit: я взял эту функцию и объединил ее с вариантами для Windows и Linux. Результатом является чистый python, кросс-платформенный модуль без зависимости называются playsound. Я загрузил его в pypi.
затем запустите его так:
можно воспроизводить аудио в OS X без каких-либо сторонних библиотек, используя аналог следующего кода. Необработанные аудиоданные можно вводить с помощью wave_wave.writeframes. Этот код извлекает 4 секунды аудио из входного файла.
попробовать playsound который представляет собой чистый Python, кросс-платформенный, одиночный функциональный модуль без зависимостей для воспроизведения звуков.
установить через pip:
после установки, вы можете использовать его как это:
вы не можете сделать это без нестандартного библиотека.
VLC имеет некоторые хорошие привязки python здесь, для меня это работало лучше, чем pyglet, по крайней мере, на Mac OS:
но он полагается на приложение VLC, к сожалению
попробовать PySoundCard который использует PortAudio для воспроизведения, который доступен на многих платформах. Кроме того, он распознает «профессиональные» звуковые устройства с большим количеством каналов.
вот небольшой пример из Readme:
Pypi список модулей для Python в музыке. Моим любимым было бы языка Jython потому что у него больше ресурсов и библиотек для музыки. В качестве примера кода для воспроизведения одной ноты из учебник:
также на OSX-from так, используя OSX afplay:
UPDATE: Все это делает, это указывает как делать то, чего ОП хотел избежать в первую очередь. Думаю, я разместил это здесь, потому что ОП хотел избежать информации, которую я искал. Выкрикивает.
Если вы находитесь на OSX, вы можете использовать модуль «os» или «подпроцесс» и т. д. вызвать команду OSX «play». Из оболочки OSX это выглядит как
Он начинает играть примерно полсекунды на моей машине.
просто вы можете сделать это с помощью cvlc- Я сделал это так:
/ home/maulo/selfProject / задача.mp3. Это расположение моего mp3-файла. с помощью «—play-and-exit» вы сможете воспроизводить звук снова, не завершая процесс vlc.
Поместите это в верхнюю часть вашего скрипта python, который вы пишете:
Если wav-файл находится в каталоге скрипта python: Если wav-файл не находится в каталоге скрипта python: Если вы хотите узнать больше об игре:
Это самый простой и лучший ИЖ е нашли. Он поддерживает Linux / pulseaudio, Mac / coreaudio и Windows/WASAPI.
чтобы воспроизвести звук уведомления с помощью python, вызовите музыкальный плеер, например vlc. VLC предложил мне использовать его версию командной строки, cvlc, вместо этого.
требуется предустановка vlc на устройстве. Протестировано на Linux (Ubuntu 16.04 LTS); работает Python 3.5.
Playing and Recording Sound in Python
Watch Now This tutorial has a related video course created by the Real Python team. Watch it together with the written tutorial to deepen your understanding: Playing and Recording Sound in Python
If you want to use Python to play or record sound, then you’ve come to the right place! In this tutorial, you’ll learn how to play and record sound in Python using some of the most popular audio libraries. You will learn about the most straight-forward methods for playing and recording sound first, and then you’ll learn about some libraries that offer some more functionality in exchange for a few extra lines of code.
By the end of this tutorial, you’ll know how to:
For a comprehensive list of audio-related Python libraries, have a look at the wiki page on audio in Python.
Free Download: Get a sample chapter from Python Tricks: The Book that shows you Python’s best practices with simple examples you can apply instantly to write more beautiful + Pythonic code.
Playing Audio Files
Below, you’ll see how to play audio files with a selection of Python libraries. A few of these libraries let you play a range of audio formats, including MP3 and NumPy arrays. All of the libraries below let you play WAV files, some with a few more lines of code than others:
playsound is the most straightforward package to use if you simply want to play a WAV or MP3 file. It offers no functionality other than simple playback.
simpleaudio lets you play WAV files and NumPy arrays, and gives you options to check whether a file is still playing.
winsound allows you to play WAV files or beep your speakers, but it works only on Windows.
python-sounddevice and pyaudio provide bindings for the PortAudio library for cross-platform playback of WAV files.
pydub requires pyaudio for audio playback, but with ffmpeg installed, it lets you play a large range of audio formats with only a few lines of code.
Let’s have a look at these libraries for audio playback one by one.
playsound
The documentation of playsound states that it has been tested on WAV and MP3 files, but it may work for other file formats as well.
This library was last updated in June 2017. It seems to work well at the time of writing this article, but it’s not clear whether it will still support newer Python releases.
simpleaudio
simpleaudio is a cross-platform library for playback of (mono and stereo) WAV files with no dependencies. The following code can be used to play a WAV file, and wait for the file to finish playing before terminating the script:
WAV files contain a sequence of bits representing the raw audio data, as well as headers with metadata in RIFF (Resource Interchange File Format) format.
For CD recordings, the industry standard is to store each audio sample (an individual audio datapoint relating to air pressure) as a 16-bit value, at 44100 samples per second.
To reduce file size, it may be sufficient to store some recordings (for example of human speech) at a lower sampling rate, such as 8000 samples per second, although this does mean that higher sound frequencies may not be as accurately represented.
A few of the libraries discussed in this tutorial play and record bytes objects, whereas others use NumPy arrays to store raw audio data.
Both correspond to a sequence of data points that can be played back at a specified sample rate in order to play a sound. For a bytes object, each sample is stored as a set of two 8-bit values, whereas in a NumPy array, each element can contain a 16-bit value corresponding to a single sample.
An important difference between these two data types is that bytes objects are immutable, whereas NumPy arrays are mutable, making the latter more suitable for generating sounds and for more complex signal processing. For more information on how to work with NumPy, have a look at our NumPy tutorials.
For more information on how to use pip for installing packages, have a look at Pipenv: A Guide to the New Python Packaging Tool.
Below you’ll see how to generate a NumPy array corresponding to a 440 Hz tone and play it back using simpleaudio.play_buffer() :
Next, let’s see how you can use winsound to play WAV files on a Windows machine.
winsound
If you use Windows, you can use the built-in winsound module to access its basic sound-playing machinery. Playing a WAV file can be done in a few lines of code:
Next, you’ll learn how to use the python-sounddevice module for cross-platform audio playback.
python-sounddevice
As stated in its documentation, python-sounddevice “provides bindings for the PortAudio library and a few convenience functions to play and record NumPy arrays containing audio signals”. In order to play WAV files, numpy and soundfile need to be installed, to open WAV files as NumPy arrays.
The line containing sf.read() extracts the raw audio data, as well as the sampling rate of the file as stored in its RIFF header, and sounddevice.wait() ensures that the script is only terminated after the sound finishes playing.
Next, we’ll learn how to use pydub to play sound. With the right dependencies installed, it allows you to play a wide range of audio files, and it offers you more options for working with audio than python-soundevice does.
pydub
The following code can be used to play a WAV file with pydub :
With ffmpeg installed, playing back an MP3 file requires only a small change in our earlier code:
Using the AudioSegment.from_file(filename, filetype) construction, you can play any type of audio file that ffmpeg supports. For example, you may play a WMA file using the ollowing:
In addition to playing back sound files, pydub lets you save audio in different file formats (more on this later), slice audio, calculate the length of audio files, fade in or out, and apply cross-fades.
AudioSegment.reverse() creates a copy of the AudioSegment that plays backwards, which the documentation describes as “useful for Pink Floyd, screwing around, and some audio processing algorithms.”
pyaudio
As you may have noticed, playing sounds with pyaudio is a bit more complex than playing sounds with the libraries you’ve seen earlier. This means that it may not be your first choice if you just want to play a sound effect in your Python application.
However, because pyaudio gives you more low-level control, it is possible to get and set parameters for your input and output devices, and to check your CPU load and input or output latency.
It also allows you to play and record audio in callback mode, where a specified callback function is called when new data is required for playback, or available for recording. These options make pyaudio a suitable library to use if your audio needs go beyond simple playback.
Now that you’ve seen how you can use a number of different libraries to play audio, it’s time to see how you can use Python to record audio yourself.
Recording Audio
The python-sounddevice and pyaudio libraries provide ways to record audio with Python. python-sounddevice records to NumPy arrays and pyaudio records to bytes objects. Both of these can be stored as WAV files using the scipy and wave libraries, respectively.
python-sounddevice
python-sounddevice allows you to record audio from your microphone and store it as a NumPy array. This is a handy datatype for sound processing that can be converted to WAV format for storage using the scipy.io.wavfile module. Make sure to install the scipy module for the following example ( pip install scipy ). This automatically installs NumPy as one of its dependencies:
pyaudio
Saving and Converting Audio
You saw earlier that you can use the scipy.io.wavfile module to store NumPy arrays as WAV files. The wavio module similarly lets you convert between WAV files and NumPy arrays. If you want to store your audio in a different file format, pydub and soundfile come in handy, as they allow you to read and write a range of popular file formats (such as MP3, FLAC, WMA and FLV).
wavio
This module depends on numpy and lets you read WAV files as NumPy arrays, and save NumPy arrays as WAV files.
To save a NumPy array as a WAV file, you can use wavio.write() :
In this example, my_np_array is a NumPy array containing audio, fs is the sample rate of the recording (usually 44100 or 44800 Hz), and sampwidth is the sampling width of the audio (the number of bytes per sample, typically 1 or 2 bytes).
soundfile
pydub
pydub lets you save audio in any format that ffmpeg supports, which includes nearly all audio types you might encounter in your daily life. For example, you can convert your WAV file to MP3 with the following code:
Using AudioSegment.from_file() is a more general way of loading audio files. For example, if you want to convert your file back from MP3 to WAV, you can do the following:
This code should work for any audio file format that ffmpeg supports.
Comparison of Audio Libraries
Below is handy table that compares the functionality of the libraries discussed in this tutorial:
The libraries that are included in this tutorial are chosen for their ease of use and popularity. For a more comprehensive list of audio libraries for Python, have a look at the wiki page on audio in Python.
Conclusion: Playing and Recording Sound in Python
In this tutorial, you learned how to use some of the most popular audio libraries to play and record audio in Python. You also saw how to save your audio in a range of different formats.
You are now able to:
You now have the information you need to help you decide which libraries to use to start working with audio in Python. Go forth, and develop some awesome audio applications!
Watch Now This tutorial has a related video course created by the Real Python team. Watch it together with the written tutorial to deepen your understanding: Playing and Recording Sound in Python
Get a short & sweet Python Trick delivered to your inbox every couple of days. No spam ever. Unsubscribe any time. Curated by the Real Python team.
About Joska de Langen
Joska is an Ordina Pythoneer who writes for Real Python.
Each tutorial at Real Python is created by a team of developers so that it meets our high quality standards. The team members who worked on this tutorial are:
Master Real-World Python Skills With Unlimited Access to Real Python
Join us and get access to hundreds of tutorials, hands-on video courses, and a community of expert Pythonistas:
Master Real-World Python Skills
With Unlimited Access to Real Python
Join us and get access to hundreds of tutorials, hands-on video courses, and a community of expert Pythonistas:
Real Python Comment Policy: The most useful comments are those written with the goal of learning from or helping out other readers—after reading the whole article and all the earlier comments. Complaints and insults generally won’t make the cut here.
What’s your #1 takeaway or favorite thing you learned? How are you going to put your newfound skills to use? Leave a comment below and let us know.
Related Tutorial Categories: basics python