Introdução geral
O realtime-transcription-fastrtc é um projeto de código aberto voltado para a conversão de fala em texto em tempo real. Ele usa a tecnologia FastRTC para processar fluxos de áudio de baixa latência, combinada com a tecnologia local Sussurro para obter um reconhecimento de fala eficiente. O projeto é mantido pelo desenvolvedor sofi444 e hospedado no GitHub. O código é totalmente aberto e permite que os usuários o modifiquem livremente. Os usuários podem implantá-lo via navegador ou localmente, e a interface é compatível com os modos Gradio e FastAPI, que são fáceis de operar. Ele é adequado para registros de reuniões, legendas ao vivo e outros cenários para atender às necessidades de indivíduos e desenvolvedores. O projeto enfatiza o suporte leve e em vários idiomas, a operação estável e a facilidade de expansão.
Lista de funções
- Transcrição de voz em tempo real: converta instantaneamente a voz em texto por meio do microfone com baixa latência de até milissegundos.
- Detecção de atividade de voz (VAD): identifica automaticamente o início e o fim da fala para otimizar o processo de transcrição.
- Suporte a vários idiomas: inglês, chinês e outros idiomas, com base no modelo Whisper.
- Opções de interface dupla: interface intuitiva Gradio e interface personalizável FastAPI.
- Execuções de modelos locais: usando os modelos Whisper, a transcrição off-line é suportada sem a necessidade de uma conexão constante com a Internet.
- Ajuste de parâmetros: suporta a configuração de fluxos de áudio, limites de VAD e tamanhos de lote de modelos.
- Implementação flexível: pode ser executado localmente ou implementado por meio de plataformas como o Hugging Face Spaces.
- Feedback de erros: fornece indicação clara de falha de conexão ou erro de configuração para facilitar a depuração.
Usando a Ajuda
Processo de instalação
Para usar o realtime-transcription-fastrtc, você precisa preparar seu ambiente Python e as dependências relacionadas. Abaixo estão as etapas detalhadas para garantir que os usuários possam instalá-lo e executá-lo sem problemas.
- Verificação dos requisitos do sistema
- Versão do Python: >= 3.10.
- montagem
ffmpeg
usado para processamento de áudio. - Hardware recomendado: GPUs (por exemplo, MPS ou CUDA) para acelerar a inferência do modelo; as CPUs também podem ser executadas, mas são mais lentas.
- armazém de clones
Execute o seguinte comando no terminal para obter o código do projeto:git clone https://github.com/sofi444/realtime-transcription-fastrtc cd realtime-transcription-fastrtc
- Configuração de um ambiente virtual
Para evitar conflitos de dependência, crie um ambiente virtual Python. Há duas maneiras oficialmente recomendadas de fazer isso:
Modo 1: Uso de raios ultravioleta (recomendado)
Em primeiro lugar, instaleuv
(Ref.https://docs.astral.sh/uv/
) e, em seguida, executar:uv venv --python 3.11 source .venv/bin/activate # Windows 用户运行 .venv\Scripts\activate uv pip install -r requirements.txt
Maneira 2: usar o pip
python -m venv .venv source .venv/bin/activate # Windows 用户运行 .venv\Scripts\activate pip install --upgrade pip pip install -r requirements.txt
- Instalar o ffmpeg
Instalação de acordo com o sistema operacionalffmpeg
::
macOS::brew install ffmpeg
Linux (Ubuntu/Debian)::
sudo apt update sudo apt install ffmpeg
Windows (computador)::
- download
ffmpeg
Executável (dehttps://ffmpeg.org/download.html
). - Adicione-o à variável de ambiente do sistema ou coloque-o no diretório raiz do projeto.
- download
- Configuração de variáveis de ambiente
No diretório raiz do projeto, crie o arquivo.env
adicione o seguinte:UI_MODE=fastapi APP_MODE=local SERVER_NAME=localhost PORT=7860 MODEL_ID=openai/whisper-large-v3-turbo
UI_MODE
: Definido comogradio
Usando a interface do Gradio, definafastapi
Usar uma interface HTML personalizada (padrão).APP_MODE
A execução local é definida comolocal
A implantação da nuvem está definida comodeployed
.MODEL_ID
Whisper: Especifica o modelo Whisper, padrãoopenai/whisper-large-v3-turbo
.SERVER_NAME
Endereço do servidor, padrãolocalhost
.PORT
Número da porta, padrão7860
.
- Projetos em andamento
Execute o programa principal:python main.py
O terminal exibe um URL (por exemplo
http://localhost:7860
A porta pode ser diferente no modo Gradio, portanto, preste atenção aos avisos do terminal.
Funções principais
Transcrição de voz em tempo real
- Iniciar a transcriçãoClique no botão "Start Recording" (Iniciar gravação) para autorizar o navegador a acessar o microfone. O sistema detectará automaticamente a voz e exibirá o texto.
- Exibir resultadosTexto transcrito: O texto transcrito é exibido em tempo real na caixa de texto da interface, rolando automaticamente para o conteúdo mais recente.
- Suspensão da transcriçãoClique no botão "Stop" (Parar) para pausar a entrada de voz.
- tomar nota dePara garantir baixa latência, o projeto tem como padrão um tamanho de lote de 1, ou seja, cada clipe de áudio recebido é imediatamente transcrito.
Detecção de atividade de voz (VAD)
- O VAD distingue automaticamente entre voz e silêncio para melhorar a eficiência da transcrição. Parâmetros ajustáveis (consulte a documentação do FastRTC)
https://fastrtc.org
):audio_chunk_duration
Duração do clipe de áudio: comprimento do clipe de áudio, padrão 0,6 segundos.started_talking_threshold
Limite de início de voz: Limite de início de voz, padrão 0,2 segundos.speech_pad_ms
Preenchimento silencioso, padrão 400 milissegundos.
- Modificação: Editar
main.py
ou passar parâmetros por meio de variáveis de ambiente.
Comutação de interface
- Interface do GradioInterface de usuário: Ideal para testes rápidos, a interface contém um botão de registro e uma área de exibição de texto. Configurações
UI_MODE=gradio
Execute-o em seguida para acessar o endereço solicitado pelo terminal. - Interface FastAPISuporte à personalização e é adequado para desenvolvedores. Modificar
index.html
Os estilos ou recursos podem ser ajustados. ConfiguraçõesUI_MODE=fastapi
Após a execução, visitehttp://localhost:8000
.
Operação da função em destaque
Modelos locais da Whisper
- Modelo padrão:
openai/whisper-large-v3-turbo
O sistema é leve, multilíngue e tem excelente desempenho. - Alteração de modelos: configurações
MODEL_ID
Por exemploopenai/whisper-small
(para dispositivos de perfil baixo). Suporte para outros modelos de ASR Hugging Face (https://huggingface.co/models?pipeline_tag=automatic-speech-recognition
). - Configuração do idioma: a tradução padrão é o inglês; quando precisar transcrever outros idiomas, defina-o no código.
language
parâmetros (por exemplolanguage=zh
(denota chinês). - Otimização da execução: a primeira execução aquecerá o modelo para reduzir a latência. A aceleração da GPU é recomendada.
Suporte a vários idiomas
- Suporte para inglês, chinês, espanhol e outros idiomas, dependendo do modelo.
- Configuração: Na seção
main.py
configurartranscribe
tarefa e especificar o idioma de destino. - Exemplo: transcrição de discurso em chinês, configuração
language=zh
Verifique se a entrada do microfone está livre.
Implementação na nuvem
- Espaços para abraçar o rosto: Configurações
APP_MODE=deployed
Para configurar o servidor Turn (consultehttps://fastrtc.org/deployment/
). Faça upload do código e execute-o conforme solicitado pela plataforma. - Outras plataformasSe você não estiver conectado à WebRTC, não poderá usar o servidor: Você precisa configurar manualmente o WebRTC e o ambiente do servidor para garantir que as portas estejam abertas.
Tratamento de erros
- erro comum::
- "Failed to connect" (Falha na conexão): verifique a configuração da rede ou do WebRTC.
- "Modelo não encontrado": confirmado
MODEL_ID
Correto e o modelo foi baixado. - "ffmpeg not found": certifique-se de que o
ffmpeg
Instalado e no caminho do sistema.
- ajustar os componentes durante o testeLogs do terminal: visualize os logs do terminal em tempo de execução para registrar a taxa de amostragem de áudio, o status de carregamento do modelo, etc.
advertência
- softwareGPU recomendada para inferência em tempo real, suporte a MPS
whisper-large-v3-turbo
. - navegador (software)Recomendamos o uso do Chrome ou do Firefox para garantir que o WebRTC esteja funcionando corretamente.
- precisão da falaSujeito à qualidade do microfone e ao ambiente, recomendado para uso em ambientes silenciosos.
cenário do aplicativo
- procedimentos
Em reuniões remotas ou no local, transcreva as discussões em tempo real para gerar transcrições. As equipes podem exportar e agrupar diretamente, eliminando a necessidade de anotações manuais. - legendagem ao vivo
Adicione legendas em tempo real às transmissões ao vivo para melhorar a acessibilidade do conteúdo. Os âncoras podem trabalhar rapidamente com a interface do Gradio e os espectadores veem o texto instantaneamente. - aprendizado de idiomas
Transcreva a pronúncia como texto para verificar a precisão quando os alunos praticam um idioma estrangeiro. Oferece suporte a vários idiomas, adequado para inglês, chinês e outros cenários de aprendizado. - capacidade de desenvolvimento
Os desenvolvedores podem integrar projetos em outros aplicativos para testar a funcionalidade de WebRTC ou ASR. O código aberto oferece suporte ao desenvolvimento secundário.
QA
- Preciso fazer networking?
Não é necessária conexão com a Internet para a operação local, os modelos podem ser baixados e usados off-line. A implantação na nuvem requer suporte de rede para WebRTC. - Quais são os idiomas suportados?
O inglês é suportado por padrão. Configuraçõeslanguage
Os parâmetros podem suportar chinês, espanhol, etc., dependendo do modelo do Whisper. - Como melhorar a precisão da transcrição?
Use um microfone de alta qualidade, mantenha um ambiente silencioso e escolha um modelo grande (como umwhisper-large-v3-turbo
). - Posso personalizar a interface?
Sim, editável no modo FastAPI!index.html
Ajustar estilos ou adicionar recursos. - Por que a transcrição está atrasada?
Pode ser devido à falta de desempenho do hardware ou a problemas de rede. A GPU é recomendada, verifique a configuração do WebRTC.