Python Academy
48.6K subscribers
1.13K photos
2 videos
385 links
Python Academy — один канал вместо тысячи учебников

Чат канала: @python_academy_chat

Сотрудничество: @zubar89

Канал включён в перечень РКН: https://rkn.link/TVu
Download Telegram
Чтение аудио-файлов в массив numpy

Одним из основных действий в начале аудиоанализа конечно же является чтение аудио-файла и выгрузка его звукового временного ряда в виде массива numpy. Для этих целей хорошо подходит модуль scipy.io.wavfile, входящий в состав библиотеки scipy и предоставляющий функции для чтения и записи wav файлов.

Для чтения используем функцию read, которая возвращает частоту дискретизации и массив numpy со значениями звукового давления для каждого кадра. Т.к. файлы формата wav могут состоять из одного(моно) либо из двух(стерео) каналов, то и массив numpy будет, соответственно, являться одномерным либо двумерным (по подмассиву на каждый канал).

В качестве примера также добавили построение в matplotlib графика сигнала по полученным значениям.

#scipy #audio
👍23🔥9
Конвертируем файлы в аудио-формате

В Python мы можем решить задачу конвертации из одного аудио-формата в другой как всегда множеством способов. Наиболее приятным решением, как по мне, является использование модуля pydub, который представляет собой интерфейс-надстройку над ffmpeg.
pydub позволяет загружать, редактировать и сохранять аудио-файлы в любом формате, поддерживаемом ffmpeg.

Для загрузки файла нам нужно выбрать функцию from_ c соответствующим форматом в названии из класса AudioSegment. Также можно воспользоваться наиболее общей функцией from_file, передав путь к файлу и его формат.

Для экспорта файла с нужным форматом, в который мы хотели его сконвертировать, используем функцию export у полученного после загрузки файла объекта класса AudioSegment.

#audio #pydub
👍41🔥12
Получение аудиопотока с микрофона

Библиотека PyAudio предоставляет возможности для записи аудиопотока с различных устройств.

PyAudio работает посредством кросс-платформенной библиотеки PortAudio (поэтому необходимо заранее установить пакет разработки portaudio19-dev).

В приведенном примере мы создаем объект класса PyAudio и открываем поток с рядом констант для настройки аудиопотока, поступающего с микрофона (для выбора другого устройства нужно передать его номер в качестве аргумента input_device_index).

Данный объект потока позволяет считывать с устройства с помощью метода stream.read(). Полученную информацию мы можем использовать для дальнейшего анализа и модификации.

В примере же мы просто считываем 10 секунд, после чего записываем их в аудио-файл wav.

#pyaudio #audio
👍33😱6🔥4
Воспроизводим аудиофайлы

Для этого воспользуемся кроссплатформенным пакетом playsound, который легко устанавливается через pip.

Он содержит в себе лишь одну полезную функцию для воспроизведения аудиофайла: playsound('path/to/file.mp3')

В качестве параметра функции можно указать путь к .mp3 или .wav файлу, или вообще его url.

#audio
👍35
Получаем метаданные из аудиофайла

Для извлечения метаданных из аудиофайлов, а также их редактирования есть очень удобный модуль mutagen. Модуль позволяет получить всю основную информацию об аудиофайле: длину, битрейт, исполнителя и так далее.

Модуль поддерживает форматы метаданных APEv2 и ID3v2, анализируя все кадры ID3v2.4 (посмотреть все нужные теги ID3v2 можно тут).

#audio #mutagen
🔥25👍19👎3
Воспроизводим аудиофайлы

Для этого воспользуемся кроссплатформенным пакетом playsound, который легко устанавливается через pip.

Он содержит в себе лишь одну полезную функцию для воспроизведения аудиофайла: playsound('path/to/file.mp3')

В качестве параметра функции можно указать путь к .mp3 или .wav файлу, или вообще его url.

#audio
18👍8🔥3👎2
Конвертируем файлы в аудио-формате

В Python мы можем решить задачу конвертации из одного аудио-формата в другой как всегда множеством способов. Наиболее приятным решением, как по мне, является использование модуля pydub, который представляет собой интерфейс-надстройку над ffmpeg.
pydub позволяет загружать, редактировать и сохранять аудио-файлы в любом формате, поддерживаемом ffmpeg.

Для загрузки файла нам нужно выбрать функцию from_ c соответствующим форматом в названии из класса AudioSegment. Также можно воспользоваться наиболее общей функцией from_file, передав путь к файлу и его формат.

Для экспорта файла с нужным форматом, в который мы хотели его сконвертировать, используем функцию export у полученного после загрузки файла объекта класса AudioSegment.

#audio #pydub
👍122👎1
Получаем метаданные из аудиофайла

Для извлечения метаданных из аудиофайлов, а также их редактирования есть очень удобный модуль mutagen. Модуль позволяет получить всю основную информацию об аудиофайле: длину, битрейт, исполнителя и так далее.

Модуль поддерживает форматы метаданных APEv2 и ID3v2, анализируя все кадры ID3v2.4 (посмотреть все нужные теги ID3v2 можно тут).

#audio #mutagen
👍111🔥1
Получение аудиопотока с микрофона

Библиотека PyAudio предоставляет возможности для записи аудиопотока с различных устройств.

PyAudio работает посредством кросс-платформенной библиотеки PortAudio (поэтому необходимо заранее установить пакет разработки portaudio19-dev).

В приведенном примере мы создаем объект класса PyAudio и открываем поток с рядом констант для настройки аудиопотока, поступающего с микрофона (для выбора другого устройства нужно передать его номер в качестве аргумента input_device_index).

Данный объект потока позволяет считывать с устройства с помощью метода stream.read(). Полученную информацию мы можем использовать для дальнейшего анализа и модификации.

В примере же мы просто считываем 10 секунд, после чего записываем их в аудио-файл wav.

#pyaudio #audio
👍14🔥52
Получение аудиопотока с микрофона

Библиотека PyAudio предоставляет возможности для записи аудиопотока с различных устройств.

PyAudio работает посредством кросс-платформенной библиотеки PortAudio (поэтому необходимо заранее установить пакет разработки portaudio19-dev).

В приведенном примере мы создаем объект класса PyAudio и открываем поток с рядом констант для настройки аудиопотока, поступающего с микрофона (для выбора другого устройства нужно передать его номер в качестве аргумента input_device_index).

Данный объект потока позволяет считывать с устройства с помощью метода stream.read(). Полученную информацию мы можем использовать для дальнейшего анализа и модификации.

В примере же мы просто считываем 10 секунд, после чего записываем их в аудио-файл wav.

#pyaudio #audio
👍103🔥1