Skip to content

Latest commit

 

History

History
69 lines (47 loc) · 7.13 KB

PROJECT.md

File metadata and controls

69 lines (47 loc) · 7.13 KB

Обзор проекта

Приложение будет работать на Tauri https://v2.tauri.app/start/ (Rust + веб-технологии), что позволяет создавать кроссплатформенные нативные приложения для macOS и Windows. Пользователь вводит ссылку на YouTube-видео, выбирает исходный и целевой языки, а приложение:

  • Скачивает аудио и видео с помощью утилиты yt-dlp (https://github.com/yt-dlp/yt-dlp).
  • Распознаёт речь из аудио с помощью модели Whisper, сохраняя результат в формате VTT.
  • Переводит текст субтитров через OpenAI API (с разбивкой на временные метки для повышения качества перевода).
  • Генерирует озвучку переведённого текста с помощью text-to-speech (например, OpenAI TTS или другой подходящей утилиты).
  • Интегрирует переведённую аудиодорожку и субтитры в исходное видео с помощью ffmpeg.
  • Автоматически управляет утилитами: скачивает и обновляет yt-dlp и ffmpeg при необходимости.

Архитектура и компоненты

  1. Пользовательский интерфейс (UI):

    • Разработка интерфейса с использованием веб-технологий (HTML/CSS/JS) на Vue 3 и Vite в рамках Tauri.
    • Поля для ввода ссылки, выбора языков, указания папки для сохранения и отображения прогресса.
  2. Бэкэнд на Rust:

    • Основная логика управления процессами (запуск внешних утилит, вызов API и т.д.).
    • Модуль для проверки и загрузки обновлений yt-dlp и ffmpeg. Можно использовать HTTP-запросы к официальным репозиториям для получения информации о последних версиях.
    • Асинхронное выполнение команд и последовательное обновление статуса, который передается в UI.
  3. Внешние утилиты:

    • yt-dlp: для скачивания аудио и видео. Его можно запускать через стандартный механизм запуска внешних процессов в Rust.
    • ffmpeg: для объединения видео с новой аудиодорожкой и субтитрами.
    • Whisper: для распознавания речи. Можно либо использовать локально установленную версию, либо вызвать через Docker-контейнер, если есть такая возможность.
    • OpenAI API: для перевода текста и, возможно, для text-to-speech (если модель TTS от OpenAI соответствует требованиям).
  4. Обработка и конвертация:

    • Извлечение аудио: после скачивания аудио через yt-dlp.
    • Распознавание: передача аудио в Whisper для получения исходных субтитров (VTT).
    • Перевод: разбиение субтитров на логичные фрагменты (по временным меткам) и отправка их в OpenAI API для перевода.
    • Генерация озвучки: текст-to-speech синтез переведенного текста с сохранением аудиофайла.
    • Финальная сборка: использование ffmpeg для интеграции нового аудио и субтитров в исходное видео.

Особенности реализации

  • Автоматическое обновление утилит:
    Приложение должно проверять версии yt-dlp и ffmpeg при запуске. Если обнаруживается новая версия, приложение должно скачивать и заменять устаревшую утилиту. Это можно реализовать через запросы к GitHub API или официальным сайтам проектов.

  • Асинхронная обработка и логирование:
    Разбиение процесса на этапы с асинхронными вызовами позволяет отображать прогресс выполнения (например, "скачивание аудио...", "распознавание речи...", "перевод...", "генерация озвучки...", "сборка финального файла...").

  • Обработка ошибок:
    Надежное управление ошибками на каждом этапе — от проблем с сетью до ошибок при вызове внешних утилит — обеспечит стабильность работы приложения.

  • Оптимизация перевода:
    Разбиение субтитров по временным меткам и отправка их частями в OpenAI API позволит добиться более качественного перевода, а также уменьшить нагрузку на API и снизить затраты.


Возможные улучшения и перспективы

  • Пользовательские настройки:
    Возможность выбора дополнительных параметров, таких как качество видео, параметры TTS (например, выбор голоса), а также настройки по форматированию субтитров.

  • Локальное распознавание и перевод:
    Для пользователей, заботящихся о конфиденциальности или не имеющих стабильного интернета, можно рассмотреть локальную обработку (например, запуск локального сервера для Whisper).

  • Интеграция с облачными сервисами:
    Если потребуется масштабирование, можно интегрировать облачные функции для обработки видео, что особенно актуально для больших файлов.

Пример кода для реализации многих функций можно взять из репозитория https://github.com/thewh1teagle/vibe