June 26, 2023

Наложение звука

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

import numpy as np
import scipy.io.wavfile as wav

# загрузить два звуковых файла
rate1, sound1 = wav.read("sound1.wav")
rate2, sound2 = wav.read("sound2.wav")

# настроить относительную громкость
sound1 = sound1.astype(np.float32) / 32767.0 # привести звук1 в диапазон от -1 до 1
sound2 = sound2.astype(np.float32) / 32767.0 # привести звук2 в диапазон от -1 до 1
sound1 *= 0.5 # уменьшить громкость звука 1 в 2 раза
sound2 *= 0.8 # увеличить громкость звука 2 на 20%

# выровнять длину звуковых файлов
min_len = min(len(sound1), len(sound2))
sound1 = sound1[:min_len]
sound2 = sound2[:min_len]

# наложить звуки (сложить массивы)
sound = np.add(sound1, sound2)

# сохранить наложенный звуковой файл
wav.write("combined.wav", rate1, sound.astype(np.int16))

Этот код загружает два звуковых файла, приводит каждый звук в диапазон от -1 до 1, настраивает относительную громкость, выравнивает длины звуковых файлов и затем настраивает их сумму (наложение) путем сложения массивов numpy. Наложенный звук сохраняется в файл "combined.wav".