Automatic Speech Recognition
WhisperKit
Core ML
Portuguese
Spanish
English
macos
apple-silicon
swift
live-captions
subtitles
speech-recognition
machine-translation
on-device
local-first
ollama
Instructions to use Veronyka/livecaption with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- WhisperKit
How to use Veronyka/livecaption with WhisperKit:
# Install CLI with Homebrew on macOS device brew install whisperkit-cli # View all available inference options whisperkit-cli transcribe --help # Download and run inference using whisper base model whisperkit-cli transcribe --audio-path /path/to/audio.mp3 # Or use your preferred model variant whisperkit-cli transcribe --model "large-v3" --model-prefix "distil" --audio-path /path/to/audio.mp3 --verbose
- Notebooks
- Google Colab
- Kaggle
Download scripts/gen_test_audio.sh from Veronyka/livecaption: direct link, hf CLI and curl.
- Browser
- Download file 2.88 kB
-
https://huggingface.co/Veronyka/livecaption/resolve/main/scripts/gen_test_audio.sh
- Command line
-
hf download hf://Veronyka/livecaption/scripts/gen_test_audio.sh
-
curl -L -o gen_test_audio.sh https://huggingface.co/Veronyka/livecaption/resolve/main/scripts/gen_test_audio.sh
2.88 kB
| # Gera tests/live_pt.f32 (16 kHz mono float32) com fala em pt-BR e pausas variadas, para o teste de resistência. | |
| set -e | |
| cd "$(dirname "$0")/.." | |
| cat > tests/live_pt.txt <<'TXT' | |
| Boa noite pessoal, bem-vindos à live de hoje. [[slnc 700]] Hoje a gente vai conversar sobre como construir sistemas que rodam no seu próprio computador, sem depender de nenhuma empresa grande. [[slnc 1300]] | |
| Eu comecei esse projeto porque estava cansada de pagar assinatura para tudo e ainda perder o controle dos meus dados. [[slnc 500]] Então resolvi montar uma legenda ao vivo que funciona completamente offline. [[slnc 1500]] | |
| O modelo de transcrição reconhece a minha voz em português, e depois outro modelo traduz o texto para o espanhol enquanto eu continuo falando. [[slnc 900]] | |
| Parece simples, mas o difícil é manter tudo rápido durante uma hora inteira, sem o computador esquentar e sem a legenda ficar cada vez mais atrasada. [[slnc 1200]] | |
| Por isso eu medi tudo, o consumo de processador, a memória, a temperatura e o tempo que cada frase leva para aparecer na tela. [[slnc 600]] Se o atraso começar a crescer, alguma coisa está errada no sistema. [[slnc 1400]] | |
| Uma das primeiras lições foi que não adianta traduzir um parágrafo inteiro de uma vez. [[slnc 400]] É melhor traduzir frase por frase, assim o espectador vê o texto aparecendo aos poucos. [[slnc 1000]] | |
| Outra lição é que o computador só consegue fazer uma tradução por vez, então se você pedir várias ao mesmo tempo, todas ficam lentas. [[slnc 1600]] | |
| Vamos dar uma pausa agora para olhar o chat. [[slnc 1800]] Pessoal, se vocês estiverem me ouvindo, mandem um oi aí embaixo, e não esqueçam de responder a pesquisa que está na descrição. [[slnc 1200]] | |
| Voltando ao assunto, eu também quero falar sobre privacidade, porque tudo que eu falo aqui fica na minha máquina e não vai para nenhum servidor de terceiros. [[slnc 800]] | |
| Isso é importante para quem trabalha com informações sensíveis, como organizações da sociedade civil, jornalistas e defensores de direitos humanos. [[slnc 1500]] | |
| Agora vou falar mais rápido para testar o sistema sob pressão, porque numa live de verdade a gente nem sempre faz pausas, a gente empolga e fala sem parar, mudando de assunto no meio da frase, e o sistema precisa acompanhar sem travar e sem acumular atraso nenhum. [[slnc 1300]] | |
| Prontinho, respirei. [[slnc 600]] Então é isso, o objetivo é que qualquer pessoa consiga rodar esse sistema no próprio computador, entender como ele funciona e trocar os modelos quando aparecerem opções melhores. [[slnc 2000]] | |
| TXT | |
| say -v Luciana -r 175 -f tests/live_pt.txt -o tests/live_pt.aiff | |
| ffmpeg -y -loglevel error -i tests/live_pt.aiff -ac 1 -ar 16000 -f f32le tests/live_pt.f32 | |
| rm tests/live_pt.aiff | |
| python3 -I -c "import os;print('duração: %.0f s' % (os.path.getsize('tests/live_pt.f32')/4/16000))" | |