Расскажите о себе и сути проекта?
Хотелось сделать транскрибатор и переводчик который работает полностью локально. Совпало с тем, что появился ноут на процессоре м5 и хотелось ещё понять, на сколько комфортно будет работать в таком режиме. Сделал консольную утилиту чтобы проверить.
Видео демо работы:
https://github.com/user-attachments/assets/29b18734-c232-421c-ad80-2cc18e2be400
Несколько примеров что можно делать:
Системное аудио в stdout
caravay-audio
Системное аудио в сырой файл
caravay-audio > recording.f32le
Системное аудио с конвертацией в MP3
caravay-audio \
| ffmpeg -f f32le -ar 16000 -ac 1 -i pipe:0 \
-c:a libmp3lame -b:a 64k recording.mp3
Армянская речь → английский текст. Переводит системное аудио и выводит английский текст по мере обработки.
caravay-audio \
| caravay live --source hye --target eng -
Армянская речь → армянский текст
caravay-audio \
| caravay live --source hye --target hye -
Звуковой файл → текст. Распознать армянскую речь из файла и сохранить текст на армянском. Работает быстрее реалтайм:
caravay transcribe --source hye recording.mp3 > transcript.txt
Получить английский перевод речи из того же файла:
caravay run --source hye --target eng recording.mp3 > translation.txt
Армянский текст → английский текст
caravay translate --source hye --target eng armenian.txt > english.txt
Передать текст через stdin:
printf '%s\n' 'Բարև աշխարհ' \
| caravay translate --source hye --target eng -
Как появилась идея? Что вдохновило?
Я стал работать в армянской компании. Иногда, в силу разных причин, обсуждение проходит на армянском. Я армянский плохо знаю. Чтобы не терять детали сделал этот проект. Теперь могу на лету понимать что происходит. Как синхронный перевод. Попутно ещё вские юзкейсы по переводу можно решать.
Что вошло в прототип и сколько времени на него было потрачено?
На текущий момент потратил около 16 часов. Сделал сам переводчик. Тестировал на аудио файлах. Потом прикрутил захват системного аудио, чтобы можно было использовать любой источник: браузер, зум, гугл мит да что угодно.
Какой технологический стек вы использовали? Почему?
В качестве модели для переводов использую facebook/seamless-m4t-v2-large. Для армянского языка оказалась лучше всего. Тестровал ещё виспер и специальный дотренированный армянский виспер, но они оказался сильно хуже. Модель поддерживает 96 языков. Я пока не делал поддержку всех языков.
Ещё хотелось сделать так, чтобы агенты тоже могли пользоваться. Поэтому консоль и stdin и stdout чтобы можно было встраивать в различные пайпы.
Я тестировал и делал пока только для мака. Чтобы работало на линуксе или винде, нужно их где-то найти и добавить поддержку. Сама модель занимает примерно 9 Гб оперативной памяти.
Как вы запускались и искали первых пользователей?
Я первый пользователь. Вот вам ещё рассказываю. Хочу понять на сколько будет интересно. Кажется что вроде есть спрос на селф хостед и локальные поделки. С другой стороны может оно и нафиг никому не нужно. Пока сделал для себя, а там посмотрим.
С какими самыми неожиданными трудностями пришлось столкнуться?
Не думал, что в маке будет сложно взаимодействовать с системным звуком. Пришлось ещё сделать свой модуль захвата аудио https://github.com/tjvjk/caravay-audio Я на свифте ни разу не писал, но слава нейронкам, это оказалось не проблемой. Эта утилита захватывает системный звук и выдаёт его в stdout как 16 кГц моно pcm.
Ещё момент, что модели вроде facebook/seamless-m4t-v2-large могут работать в нескольких режимах:
- армянское аудио -> английский текст
- армянский текст -> английский текст
- можно комбинировать, армянское аудио -> армянский текс, армянский текст -> английский текст
- армянское аудио -> английское аудио (не использовал этот режим)
Как оказалось прямой перевод из армянкого аудио в английский текст работает хуже чем комбинированный. Так как в комбинированном варианте можно чистить всякий текстовый мусор, повторы, нераспознные артефакты которые портят перевод.
Ещё оказалось, что перевод на языки отличные от английского плохо работает. Например перевод армянского аудио в русский текст работает криво. Похоже тренировали в основном именно перевод в английский.
Сколько потратили и заработали? Есть идеи как это можно монетизировать?
Пока потратил только время. С монетизацией есть момент, что лицензия facebook/seamless-m4t-v2-large не позвляет её использовать в коммерческих целях. Надо будет поискать альтернативы.
Какие планы на будущее?
Если дойдут руки хочу сделать полноценное макос приложение для обычных людей. Как Granola только с локальным распознаванием и хранением файлов.
Нужны ли какие-то советы или помощь Клуба?
Был бы рад услышать идеи как это можно монетизировать.
Например, есть идея оставить распознавание локальным, но хранить данные облачно за деньги. Как это соотносится с идеей приватности? Будет ли это стоп фактором, чтобы пользоваться? Понятно что с шифрованием и поддержкой всяких гдпр. Кому важно такое, напишите пожалуйста.
Или на сколько жизнеспособна идея всё оставлять локально, но продавать красивенькое приложение для обычных людей?
Какой совет вы бы сами могли дать идущим по вашим стопам?
Не бояться писать на языках, которых не знает. Нейронки знают.
