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
File size: 2,883 Bytes
f1e4744 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | #!/bin/zsh
# 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))"
|