Конвертировать аудиосообщение из Telegram (формат OGG в кодеке OPUS) в WAV

Рейтинг: 0Ответов: 1Опубликовано: 24.07.2023

Краткая цель такова - при помощи библиотеки telebot скачать аудиосообщение от пользователя и cконвертировать его в формат .wav. Никак не получается сконвертировать при помощи популярных библиотек. ffmpeg выдает такую ошибку:

  File "C:\Users\Illarion\AppData\Local\Programs\Python\Python311\Lib\subprocess.py", line 1538, in _execute_child
    hp, ht, pid, tid = _winapi.CreateProcess(executable, args,
                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
FileNotFoundError: [WinError 2] Не удается найти указанный файл

А библиотека soundfile выдает такое:

File "C:\Users\Illarion\AppData\Local\Programs\Python\Python311\Lib\site-packages\soundfile.py", line 1455, in _error_check
    raise RuntimeError(prefix + _ffi.string(err_str).decode('utf-8', 'replace'))
RuntimeError: Error opening 'test1.ogg': File contains data in an unimplemented format

Ответы

▲ 0

Проблема решена, просто установил в каталог программы ffmpeg и прописал в коде путь к ffmpeg.exe: введите сюда описание изображения

Код для ковертации таков:

def convert_audio(filename, filepath):
try:        
    file_path_wav = f'voices/{filename}.wav'
    # Формируем команду для конвертирования аудио в WAV с декодированием в PCM
    command = [FFMPEG_PATH, "-i", filepath, "-vn", "-acodec", "pcm_s16le", "-ar", "44100", "-ac", "2", file_path_wav]

    # Выполняем команду с помощью subprocess
    subprocess.run(command, check=True)
    return file_path_wav
except subprocess.CalledProcessError as e:
    print("Ошибка при конвертировании аудио:", e)