Skip to content

Conversation

@fantomcheg
Copy link

 1 │## 🎤 Добавлена поддержка живых голосов Яндекса
 2 │
 3 │### Что сделано:
 4 │- ✅ Добавлен параметр `useLivelyVoice` (поле 18) в protobuf структуру
 5 │- ✅ Обновлена `VideoTranslationRequest` согласно официальной спецификации из
   │[vot.js](https://github.com/FOSWLY/vot.js)
 6 │- ✅ Добавлен CLI аргумент `--voice-style` (live/tts)
 7 │- ✅ По умолчанию используются живые голоса (более качественная озвучка)
 8 │- ✅ Обновлена документация (README.md, README-EN.md) с примерами
 9 │- ✅ Протестировано: файлы с разными параметрами имеют разные MD5 суммы
10 │
11 │### 📖 Использование:
12 │
13 │**С живыми голосами (по умолчанию):**

vot-cli --output="." "https://youtu.be/VIDEO_ID"

 1 │
 2 │**С явным указанием живых голосов:**

vot-cli --output="." --voice-style=live "https://youtu.be/VIDEO_ID"

 1 │
 2 │**Со стандартным TTS:**

vot-cli --output="." --voice-style=tts "https://youtu.be/VIDEO_ID"

 1 │
 2 │### 🧪 Тестирование:
 3 │
 4 │Протестировано на нескольких видео:
 5 │- Файлы с `--voice-style=live` и `--voice-style=tts` имеют разные MD5 суммы
 6 │- Живые голоса звучат более естественно и выразительно
 7 │- Обратная совместимость сохранена
 8 │
 9 │### 🔧 Технические детали:
10 │
11 │Изменения основаны на анализе исходного кода
   │[vot.js](https://github.com/FOSWLY/vot.js/blob/main/packages/shared/src/protos/yandex.proto), где параметр
   │`useLivelyVoice` определён как поле 18 типа `bool` в protobuf структуре `VideoTranslationRequest`.
12 │
13 │### 📝 Изменённые файлы:
14 │- `src/yandexProtobuf.js` - обновлена protobuf структура
15 │- `src/yandexRequests.js` - добавлен параметр useLiveVoices
16 │- `src/translateVideo.js` - передача параметра
17 │- `src/index.js` - CLI аргумент --voice-style
18 │- `README.md` и `README-EN.md` - документация
19 │
20 │---
21 │
22 │Это исправление решает проблему, когда пользователи получали только стандартную TTS озвучку. Теперь по умолчанию
   │используются более качественные живые голоса от Яндекса.

ilyhalight and others added 30 commits March 10, 2024 03:38
json subtitles to srt  format
Удалил Jest , обновил функции из VOT.
Обновление функций
add link on google colab version
…──────────────────────────────�[0m

       �[38;2;131;148;150m│ �[0m�[1mSTDIN�[0m
�[38;2;131;148;150m───────┼────────────────────────────────────────────────────────────────────────�[0m
�[38;2;131;148;150m   1�[0m   �[38;2;131;148;150m│�[0m �[38;2;248;248;242mAdd support for Yandex live voices (useLivelyVoice)�[0m
�[38;2;131;148;150m   2�[0m   �[38;2;131;148;150m│�[0m
�[38;2;131;148;150m   3�[0m   �[38;2;131;148;150m│�[0m �[38;2;248;248;242m- Added useLivelyVoice parameter (field 18) to protobuf structure�[0m
�[38;2;131;148;150m   4�[0m   �[38;2;131;148;150m│�[0m �[38;2;248;248;242m- Updated VideoTranslationRequest with correct field names based on vot.js�[0m
�[38;2;131;148;150m   5�[0m   �[38;2;131;148;150m│�[0m �[38;2;248;248;242m- Added --voice-style CLI argument (live/tts)�[0m
�[38;2;131;148;150m   6�[0m   �[38;2;131;148;150m│�[0m �[38;2;248;248;242m- Live voices are now used by default�[0m
�[38;2;131;148;150m   7�[0m   �[38;2;131;148;150m│�[0m �[38;2;248;248;242m- Updated documentation (README.md, README-EN.md) with examples�[0m
�[38;2;131;148;150m   8�[0m   �[38;2;131;148;150m│�[0m �[38;2;248;248;242m- Tested and verified: different audio files for live vs tts�[0m
�[38;2;131;148;150m   9�[0m   �[38;2;131;148;150m│�[0m
�[38;2;131;148;150m  10�[0m   �[38;2;131;148;150m│�[0m �[38;2;248;248;242mFixes the issue where only standard TTS voices were available.�[0m
�[38;2;131;148;150m  11�[0m   �[38;2;131;148;150m│�[0m �[38;2;248;248;242mNow users can get higher-quality live voices by default or choose�[0m
�[38;2;131;148;150m  12�[0m   �[38;2;131;148;150m│�[0m �[38;2;248;248;242mstandard TTS with --voice-style=tts parameter.�[0m
�[38;2;131;148;150m───────┴────────────────────────────────────────────────────────────────────────�[0m
- Added getVideoTitle.js utility using yt-dlp
- Audio files now named after video title by default
- Makes it easier to find files in file manager
- Falls back to videoId if title unavailable
- Updated documentation
…──────────────────────────────�[0m

       �[38;2;131;148;150m│ �[0m�[1mSTDIN�[0m
�[38;2;131;148;150m───────┼────────────────────────────────────────────────────────────────────────�[0m
�[38;2;131;148;150m   1�[0m   �[38;2;131;148;150m│�[0m �[38;2;248;248;242mRead version automatically from package.json�[0m
�[38;2;131;148;150m   2�[0m   �[38;2;131;148;150m│�[0m
�[38;2;131;148;150m   3�[0m   �[38;2;131;148;150m│�[0m �[38;2;248;248;242m- Replace hardcoded version string with dynamic reading from package.json�[0m
�[38;2;131;148;150m   4�[0m   �[38;2;131;148;150m│�[0m �[38;2;248;248;242m- Add necessary imports for ES modules path handling�[0m
�[38;2;131;148;150m   5�[0m   �[38;2;131;148;150m│�[0m �[38;2;248;248;242m- Ensures version is always in sync with package.json�[0m
�[38;2;131;148;150m───────┴────────────────────────────────────────────────────────────────────────�[0m
🐛 Bug Fixes:
- Add 60s timeout for Yandex API requests (fixes ECONNRESET)
- Fix infinite translation wait loop (max 10 attempts / 5 minutes)
- Add timeouts for yt-dlp (10m) and ffmpeg (15m)
- Improve error messages (ECONNRESET → "Try using proxy")

✨ New Features:
- Real video duration detection via yt-dlp
- Full proxy support in yt-dlp (params + env variables)
- Progress indicator for retry attempts (attempt 3/10)
- Beautiful UI with emojis and detailed progress info

🎨 UI/UX Improvements:
- Beautiful startup banner with credits
- Detailed 3-step merge process visualization
- File sizes and progress at each step
- Colored output with emojis for better UX
- Credits to original author @ToilOfficial

📝 Documentation:
- Add IMPROVEMENTS.md with detailed changelog
- Add SUMMARY.md with work summary
- Add UI-IMPROVEMENTS.md with UI details
- Add test-improvements.sh for automated testing

🧪 Testing:
- Tested on short videos (19s)
- Tested on long videos (24m)
- Verified live voices and TTS modes
- Verified automatic file naming

📦 Technical Changes:
- Add logERROR.txt to .gitignore
- Create getVideoDuration.js utility
- Improve error handling throughout
- Add detailed console output

Fixes FOSWLY#60

Co-authored-by: AI Assistant
Thanks to @ToilOfficial (Ilya) for original vot-cli
@fantomcheg fantomcheg force-pushed the feature/add-live-voices-support branch from 557c05b to 1f186c0 Compare November 28, 2025 07:34
- Added comprehensive troubleshooting guide (500+ lines)
- Documented version conflict issue (/usr/bin vs nvm)
- Added solutions for all known errors
- Updated README.md with troubleshooting link
@fantomcheg fantomcheg force-pushed the feature/add-live-voices-support branch from fc31c72 to 0758233 Compare November 28, 2025 08:08
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants