Как записать звук в конец wav файла в python?

Пользователь

от fred , в категории: Python , месяц назад

Как записать звук в конец wav файла в python?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

Пользователь

от josie , месяц назад

@fred 

Для записи звука в конец wav файла в Python можно воспользоваться библиотекой wave. Вот пример кода, который демонстрирует этот процесс:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
import wave

def append_audio_to_wav(file_path, audio_data, sample_width, sample_rate):
    # Открываем исходный wav файл для чтения
    source = wave.open(file_path, 'rb')

    # Получаем параметры исходного файла
    channels = source.getnchannels()
    frames = source.getnframes()
    source_sample_width = source.getsampwidth()
    source_sample_rate = source.getframerate()

    # Получаем данные звука из исходного файла
    source_data = source.readframes(frames)

    # Открываем итоговый wav файл для записи
    destination = wave.open(file_path, 'wb')

    # Устанавливаем параметры для итогового файла
    destination.setnchannels(channels)
    destination.setsampwidth(sample_width)
    destination.setframerate(sample_rate)

    # Записываем исходные данные в итоговый файл
    destination.writeframes(source_data)

    # Записываем новые данные звука в итоговый файл
    destination.writeframes(audio_data)

    # Закрываем исходный и итоговый файлы
    source.close()
    destination.close()

# Пример использования функции
file_path = 'audio.wav'  # Путь к wav файлу
audio_data = b''  # Данные нового звука в формате bytes
sample_width = 2  # Ширина образца звука в байтах (пример: 2 байта = 16 бит)
sample_rate = 44100  # Частота дискретизации звука в герцах

append_audio_to_wav(file_path, audio_data, sample_width, sample_rate)


Здесь функция append_audio_to_wav принимает следующие параметры:

  • file_path - строка, содержащая путь к исходному и итоговому wav файлам.
  • audio_data - данные нового звука в формате bytes.
  • sample_width - ширина образца звука в байтах (например, 2 байта для 16-битного звука).
  • sample_rate - частота дискретизации нового звука в герцах.


Пример кода предполагает, что исходный wav файл существует и имеет те же параметры (количество каналов, ширина образца, частота дискретизации) как и новый звук, который вы хотите добавить. Вы можете изменить эту логику, если необходимо.