@clazy13

Хочу сделать из мужского голоса женский с помощью библиотеки FFMPEG(обрабатываю все в тг боте), но вылезает ошибка, что делать?

У меня есть код на aiogram для тг бота что бы изменять мужской голос на женский, но постоянно вылезает ошибка FileNotFoundError: [WinError 2] Не удается найти указанный файл
Уже и в PATH добавил, и пути менял и проверял их, ничего не помогает
Код:
from aiogram import Bot, Dispatcher, types
from aiogram.contrib.fsm_storage.memory import MemoryStorage 
from aiogram.utils import executor
from pydub import AudioSegment
from pydub.playback import play
import pathlib
import os
import ffmpeg

TOKEN_API = 'token'

bot = Bot(TOKEN_API)

dp = Dispatcher(bot, storage=MemoryStorage())

print(ffmpeg.__file__)



os.environ["PATH"] += os.pathsep + 'C:\Programmirovanie\IDE\Microsoft VS Code\bots\myenv\lib\site-packages\ffmpeg'
async def on_startup(_):
    print('Бот запущен')

@dp.message_handler(commands=['start'])
async def start(message: types.Message):
    await message.answer('Привет, пришли голосовое для обработки')



async def change_voice_to_female(input_file, output_file):
    file_path = pathlib.Path('C:/Programmirovanie/IDE/Microsoft VS Code/bots/downloaded_voice.ogg')

    # Загрузка аудиофайла
    AudioSegment.converter = os.getcwd()+ "\\ffmpeg.exe"                    
    AudioSegment.ffprobe   = os.getcwd()+ "\\ffprobe.exe"
    sound = AudioSegment.from_file(pathlib.Path('C:/') / 'Programmirovanie' / 'IDE' /  'Microsoft VS Code' / 'bots' / 'downloaded_voice.ogg', format="mp3")

    # Пример изменения на женский голос (можно настроить параметры для получения подходящего результата)
    result = sound._spawn(sound.raw_data, overrides={
        "frame_rate": int(sound.frame_rate * 0.97),  # Уменьшение скорости
        "channels": 1  # Может потребоваться для преобразования стерео в моно
    })

    
    # Экспорт измененного аудио в файл
    result.export(output_file, format="mp3")
    print(4)

@dp.message_handler(content_types=types.ContentTypes.VOICE)
async def process_voice_message(message: types.Message):
    # Сохранение голосового сообщения для последующего преобразования
    file_id = message.voice.file_id
    file = await bot.get_file(file_id)
    voice_path = file.file_path
    downloaded_file = await bot.download_file(voice_path)
    input_file =  "downloaded_voice.ogg"
    output_file = pathlib.Path('C:/') / 'Users' / 'Alesha' /  'AppData' / 'Roaming' / 'Telegram Desktop' / 'audio_2023-12-01_22-38-34.ogg'

    with open(input_file, 'wb') as f:
        f.write(downloaded_file.getvalue())

    print(input_file)
    # Преобразование голоса
    await change_voice_to_female(input_file, output_file)

    # Отправка измененного голосового сообщения обратно пользователю
    with open(output_file, 'rb') as f:
        modified_voice = types.InputFile(f)
        await bot.send_voice(message.chat.id, voice=modified_voice
    
if __name__ == '__main__':
    executor.start_polling(dp, on_startup=on_startup,skip_updates=True)
  • Вопрос задан
  • 142 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы