Как воспроизводить и записывать аудио на Python

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

Давайте установим необходимые библиотеки для этого урока:

pip3 install playsound pyaudio pydub ffmpeg-python

Аудиоплеер

Во-первых, начнем с самого простого модуля звукового сопровождения?, playsound:

from playsound import playsound

playsound("audio_file.mp3")

Да, этот модуль нам нужен и это, в основном, чистый Python, кроссплатформенный, однофункциональный модуль. В документации сказано, что работают расширения WAV и MP3, а также есть и другие форматы аудиозаписи.

Функция playsound() воспроизводит звук аудиофайла и блокирует его до тех пор, пока чтение файла не будет завершено. Можете передать block = False для того, что-бы функция работала асинхронно.

Другой альтернативой является использование библиотеки Pydub:

from pydub import AudioSegment
from pydub.playback import play

# читать файл MP3
song = AudioSegment.from_mp3("audio_file.mp3")
# song = AudioSegment.from_wav("audio_file.wav")
# you can also read from other formats such as MP4
# song = AudioSegment.from_file("audio_file.mp4", "mp4")
play(song)

Примечание: на вашем компьютере должен быть установлен ffmpeg, чтобы использовать функцию AudioSegment.from_file(), которая поддерживает все форматы, поддерживаемые ffmpeg.

Pydub — довольно популярная библиотека, поскольку она предназначена не только для воспроизведения звука, вы можете использовать ее для разных целей, таких как преобразование аудиофайлов, нарезка звука, увеличение или уменьшение громкости, и многое другое, просмотрите их репозиторий для получения дополнительной информации.

Если вы хотите воспроизводить аудио с помощью PyAudio, пройдите по этой ссылке.

Диктофон

Для записи голоса воспользуемся библиотекой PyAudio, так как это наиболее удобный подход:

import pyaudio
import wave

# имя файла для записи
filename = "recorded.wav"
# установить размер блока в 1024 сэмпла
chunk = 1024
# образец формата
FORMAT = pyaudio.paInt16
# моно, если хотите стере измените на 2
channels = 1
# 44100 сэмплов в секунду
sample_rate = 44100
record_seconds = 5
# initialize PyAudio object
p = pyaudio.PyAudio()
# открыть объект потока как ввод и вывод
stream = p.open(format=FORMAT,
                channels=channels,
                rate=sample_rate,
                input=True,
                output=True,
                frames_per_buffer=chunk)
frames = []
print("Recording...")
for i in range(int(44100 / chunk * record_seconds)):
    data = stream.read(chunk)
    # если вы хотите слышать свой голос во время записи
    # stream.write(data)
    frames.append(data)
print("Finished recording.")
# остановить и закрыть поток
stream.stop_stream()
stream.close()
# завершить работу объекта pyaudio
p.terminate()
# сохранить аудиофайл
# открываем файл в режиме 'запись байтов'
wf = wave.open(filename, "wb")
# установить каналы
wf.setnchannels(channels)
# установить формат образца
wf.setsampwidth(p.get_sample_size(FORMAT))
# установить частоту дискретизации
wf.setframerate(sample_rate)
# записываем кадры как байты
wf.writeframes(b"".join(frames))
# закрыть файл
wf.close()

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

Если вы установите input = True в методе p.open(), то сможете использовать stream.read() для записи с микрофона. Кроме того, если вы установите output = True, то сможете использовать stream.write() для воспроизведения через динамик.

Заключение

Хорошо, здесь вы узнали, как воспроизводить аудиофайлы с помощью библиотек playsound, Pydub и PyAudio, а также записывать голос с помощью PyAudio.

Для вас есть большая задача — объединить звук с устройством записи экрана и получите инструмент Python, который одновременно записывает голос и экран. Нужно будет использовать поток, который записывает звук, и другой поток для записи экрана, удачи!

На основе How to Play and Record Audio in Python

Print Friendly, PDF & Email

CC BY-NC 4.0 Как воспроизводить и записывать аудио на Python, опубликовано К ВВ, лицензия — Creative Commons Attribution-NonCommercial 4.0 International.


Респект и уважуха

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