Напиши на Python программу, использующую трансформацию Фурье для изменения тональности wave файла.
python
import numpy as np
from scipy.io import wavfile
# Открытие аудиофайла
samplerate, data = wavfile.read('input.wav')
# Удаление одного канала, если аудиофайл имеет два
if data.ndim > 1:
data = data[:, 0]
# Создание нового файла для записи
out = wavfile.open('output.wav', 'wb')
out.setparams((1, data.dtype, samplerate))
# Разбиение сигнала на кусочки длиной 1024 с отложением на 512
chunks = np.array_split(data, len(data) / 512)
# Изменение ярлыков каждого кусочка
for chunk in chunks:
# Применение преобразования Фурье
spectrum = np.fft.fft(chunk)
# Коэффициент изменения тональности (чем больше, тем выше)
scale = 1.5
# Изменение ярлыков
spectrum *= scale
# Применение обратного преобразования Фурье
transformed = np.fft.ifft(spectrum)
# Запись измененных кусочков в новый файл
out.writeframes(transformed.astype(data.dtype).tostring())
# Закрытие файлов
out.close()
Эта программа изменяет тональность аудиофайла, увеличивая или уменьшая его высоту на определенный коэффициент `scale`. Помимо изменения тональности, можно экспериментировать с другими параметрами, такими как длина и отложение кусочков, чтобы получить желаемый результат.
Для использования этой программы сохраните ее в файле `change_pitch.py` и убедитесь, что у вас установлены требуемые зависимости: `numpy` и `scipy`. Затем запустите программу с помощью команды `python change_pitch.py`, аудиофайл `input.wav` будет преобразован в аудиофайл `output.wav` с измененной тональностью.
Учтите, что приведенный код работает только с файлами в формате WAV. Если у вас есть файлы в других форматах, вам может потребоваться предварительно сконвертировать их в формат WAV.Нажимая «Регистрация» или «Войти через Google», вы соглашаетесь с Публичной офертой, даете Согласие на обработку персональных данных, а также подтверждаете что вам есть 18 лет
Нажимая «Регистрация» или «Войти через Google», вы соглашаетесь с Публичной офертой, даете Согласие на обработку персональных данных, а также подтверждаете что вам есть 18 лет