0

Генерация / синтез звука на Python?

9

Заголовок: Как в Python сгенерировать простой звук, например, синусоиду?

Описание проблемы:

Привет, сообщество!

Подскажите, возможно ли в Python сгенерировать простой звук, например, синусоиду? Есть ли для этого готовый модуль? Если подобного модуля нет, как можно создать такой звук самостоятельно?

Кроме того, потребуется ли какая-то среда для выполнения Python, чтобы воспроизвести звук, или это можно сделать из терминала, просто вызывая нужные функции?

Если ответ зависит от операционной системы, уточняю: я использую Mac.

Заранее благодарен за помощь!

4 ответ(ов)

0

Я искал то же самое, и в итоге написал такой код, который нормально работает.

import math        # импорт необходимых модулей
import pyaudio     # sudo apt-get install python-pyaudio

PyAudio = pyaudio.PyAudio     # инициализация pyaudio

# См. https://en.wikipedia.org/wiki/Bit_rate#Audio
BITRATE = 16000     # количество кадров в секунду.      

FREQUENCY = 500     # Гц, волны в секунду, 261.63 = нота C4.
LENGTH = 1     # продолжительность звучания в секундах

BITRATE = max(BITRATE, FREQUENCY + 100)

NUMBEROFFRAMES = int(BITRATE * LENGTH)
RESTFRAMES = NUMBEROFFRAMES % BITRATE
WAVEDATA = ''    

# Генерация волн
for x in range(NUMBEROFFRAMES):
    WAVEDATA += chr(int(math.sin(x / ((BITRATE / FREQUENCY) / math.pi)) * 127 + 128))

for x in range(RESTFRAMES): 
    WAVEDATA += chr(128)

p = PyAudio()
stream = p.open(format=p.get_format_from_width(1), 
                channels=1, 
                rate=BITRATE, 
                output=True)

stream.write(WAVEDATA)
stream.stop_stream()
stream.close()
p.terminate()

Этот код создает синусоидальную волну с заданной частотой и воспроизводит ее через динамики. Убедитесь, что у вас установлен модуль pyaudio. Вы можете изменять значения FREQUENCY и LENGTH, чтобы настроить звук по вашему усмотрению.

0

Я знаю, что немного запоздал с этим вопросом, но я хочу поделиться отличным проектом на Python для синтеза и аудио композиции: https://github.com/hecanjog/pippi.

Этот проект все еще активно развивается и существует уже довольно долго.

0

Страница вики Python In Music не была особенно хорошо обновлена, но является хорошей отправной точкой. Вы можете ознакомиться с ней по следующей ссылке: Python In Music.

0

Я нашел эти два репозитория на Python очень полезными, возможно, вам стоит на них взглянуть...

python: Python-Wrapper-for-World-Vocoder

ipython: Spectrograms, MFCCs, and Inversion in Python

[EDIT] Как было отмечено, вот объяснение для двух ссылок.

Ссылка на python может содержать ошибку, но многие пользователи смогли успешно запустить его, так что я не уверен. А вот ipython сработал отлично, так что надеюсь, у вас тоже получится.

Обе ссылки предназначены для обработки аудио в качестве входного сигнала, предпочтительно .wav файлы. Они позволяют извлечь признаки (используйте FFT с размером 512 и шагом 512/8), чтобы получить спектрограммы (вы даже можете их визуализировать). Это 2D-матрица, которую можно использовать для обучения ваших моделей машинного обучения или для любых других целей, используя матрицу, представляющую оригинальное аудио. Если вам интересно, что представляют собой эти векторы, вы также можете восстановить аудио обратно в любой момент.

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь