earllm-build
Ajuda seu agente a criar e manter um aplicativo Android. Ele conecta fones de ouvido Bluetooth a um modelo de linguagem grande (LLM) usando voz.
O que ela faz
Este é um projeto de aplicativo Android que conecta seus fones de ouvido Bluetooth a um modelo de linguagem grande (LLM) para processar sua voz. Ele permite que você fale com o LLM através dos fones e receba as respostas de volta.
Quando usar
- ✓Quando você quiser desenvolver ou modificar o aplicativo EarLLM One.
- ✓Se você estiver trabalhando com áudio via Bluetooth em um app Android.
- ✓Ao integrar reconhecimento de voz e LLMs em um aplicativo móvel.
Exemplo do que pedir para a IA
“Como posso adicionar suporte para um novo tipo de fone de ouvido Bluetooth no aplicativo EarLLM One?”
Quer saber mais? Abra as seções abaixo.
Como usar
O jeito mais fácil: copie a mensagem abaixo e cole no Claude, ChatGPT, Cursor ou outra IA. Ela lê a skill e segue as instruções.
Link da skill
Mensagem pronta para colar
Como funciona
O aplicativo usa Kotlin e Jetpack Compose para criar a interface. Ele captura áudio dos fones, converte a fala em texto, envia para um LLM e reproduz a resposta falada de volta.
Instalação
Jeito mais fácil: copie o link da skill e cole no Claude, ChatGPT ou Cursor pedindo para seguir as instruções.
No terminal (Claude Code, Codex, Cursor), na pasta do projeto:
npx skills add sickn33/agentic-awesome-skills --skill earllm-buildOu baixe só o arquivo:
curl -L https://raw.githubusercontent.com/sickn33/agentic-awesome-skills/main/plugins/agentic-awesome-skills-claude/skills/earllm-build/SKILL.md -o SKILL.mdConteúdo técnico (SKILL.md)
Tradução do texto original do autor no GitHub. Os comandos e códigos estão como no original.
EarLLM One — Construir e Manter
Visão Geral
Construa, mantenha e expanda o projeto EarLLM One para Android — um aplicativo Kotlin/Compose que conecta fones de ouvido Bluetooth a um LLM através de um pipeline de voz.
Quando Usar Esta Habilidade
- Quando o usuário mencionar "earllm" ou tópicos relacionados
- Quando o usuário mencionar "earbudllm" ou tópicos relacionados
- Quando o usuário mencionar "earbud app" ou tópicos relacionados
- Quando o usuário mencionar "voice pipeline kotlin" ou tópicos relacionados
- Quando o usuário mencionar "bluetooth audio android" ou tópicos relacionados
- Quando o usuário mencionar "sco microphone" ou tópicos relacionados
Não Use Esta Habilidade Quando
- A tarefa não estiver relacionada à construção do earllm
- Uma ferramenta mais simples e específica puder lidar com a solicitação
- O usuário precisar de assistência de propósito geral sem conhecimento de domínio
Como Funciona
EarLLM One é um aplicativo Android multimódulo (Kotlin + Jetpack Compose) que captura voz de fones de ouvido Bluetooth, a transcreve, envia para um LLM e reproduz a resposta de volta.
Localização do Projeto
C:\Users\renat\earbudllm
Gráfico de Dependência de Módulos
app ──→ voice ──→ audio ──→ core-logging
│ │
├──→ bluetooth ──→ core-logging
└──→ llm ──→ core-logging
Módulos e Arquivos Chave
| Módulo | Propósito | Arquivos Chave |
|---|---|---|
| core-logging | Logging estruturado, rastreamento de desempenho | EarLogger.kt, PerformanceTracker.kt |
| bluetooth | Descoberta de BT, pareamento, perfis A2DP/HFP | BluetoothController.kt, BluetoothState.kt, BluetoothPermissions.kt |
| audio | Roteamento de áudio (SCO/BLE), captura, botões do headset | AudioRouteController.kt, VoiceCaptureController.kt, HeadsetButtonController.kt |
| voice | STT (SpeechRecognizer + Vosk stub), TTS, pipeline | SpeechToTextController.kt, TextToSpeechController.kt, VoicePipeline.kt |
| llm | Interface LLM, stub, cliente compatível com OpenAI | LlmClient.kt, StubLlmClient.kt, RealLlmClient.kt, SecureTokenStore.kt |
| app | UI, ViewModel, Service, Configurações, todas as telas | MainViewModel.kt, EarLlmForegroundService.kt, 6 telas Compose |
Configuração de Build
- SDK: minSdk 26, targetSdk 34, compileSdk 34
- Ferramentas de Build: AGP 8.2.2, Kotlin 1.9.22, Gradle 8.5
- Compose BOM: 2024.02.00
- Dependências Chave: OkHttp, AndroidX Security (EncryptedSharedPreferences), DataStore, Media
Hardware Alvo
| Dispositivo | Modelo | Detalhes Chave |
|---|---|---|
| Telefone | Samsung Galaxy S24 Ultra | Android 14, One UI 6.1, Snapdragon 8 Gen 3 |
| Fones de ouvido | Xiaomi Redmi Buds 6 Pro | BT 5.3, A2DP/HFP/AVRCP, ANC, LDAC |
Fatos Técnicos Críticos
Estes são fatos verificados a partir de documentação oficial e testes de dispositivo. Trate-os como verdade absoluta ao tomar decisões:
Bluetooth SCO é limitado a entrada mono de 8kHz na maioria dos dispositivos. Alguns suportam mSBC de 16kHz. BLE Audio (Android 12+,
TYPE_BLE_HEADSET = 26) suporta até estéreo de 32kHz. Sempre prefira BLE Audio quando disponível.startBluetoothSco()foi depreciado desde o Android 12 (API 31). UseAudioManager.setCommunicationDevice(AudioDeviceInfo)eclearCommunicationDevice()em vez disso. O projeto já implementa ambos os caminhos emAudioRouteController.kt.Samsung One UI 7/8 tem um bug conhecido de corrupção HFP onde a reprodução A2DP corrompe o link SCO. O aplicativo lida com isso com detecção de silêncio e fallback automático para o microfone integrado do telefone.
Os controles de toque do Redmi Buds 6 Pro devem ser definidos como "Padrão" (Reproduzir/Pausar) no aplicativo companheiro Xiaomi Earbuds. Se definidos como ANC ou funções personalizadas, os eventos são tratados internamente pelos fones de ouvido e nunca chegam ao Android.
Android 14+ requer a permissão
FOREGROUND_SERVICE_MICROPHONEeforegroundServiceType="microphone"na declaração do serviço.RECORD_AUDIOdeve ser concedido antes destartForeground().A fonte de áudio
VOICE_COMMUNICATIONhabilita AEC (Cancelamento de Eco Acústico), que é crítico para evitar que a saída de áudio TTS retorne para a entrada do microfone STT. Nunca altere esta fonte sem entender as implicações do eco.Nunca reproduza TTS (A2DP) enquanto grava simultaneamente via SCO. A sequência correta é: parar a reprodução → mudar para HFP → gravar → mudar para A2DP → reproduzir resposta.
Fluxo de Dados
Toque no botão do headset
→ MediaSession (HeadsetButtonController)
→ TapAction.RECORD_TOGGLE
→ VoicePipeline.toggleRecording()
→ VoiceCaptureController captura PCM (16kHz mono)
→ stopRecording() retorna ByteArray
→ SpeechToTextController.transcribe(pcmData)
…
Perguntas frequentes
Qual a qualidade do áudio capturado pelos fones?
O áudio via Bluetooth SCO é limitado a 8kHz mono, mas BLE Audio pode suportar até 32kHz estéreo. O aplicativo tenta usar a melhor opção disponível.
O aplicativo funciona com qualquer fone Bluetooth?
Ele é projetado para fones que suportam perfis como A2DP e HFP. O aplicativo tenta detectar fones comuns com base no nome.
Como o aplicativo lida com o eco entre a fala do fone e o microfone?
Ele usa a fonte de áudio `VOICE_COMMUNICATION` que ativa o cancelamento de eco (AEC) e segue uma sequência específica para gravar e reproduzir áudio sem interferência.
Detalhes
Descrição original do autor
Build, maintain, and extend the EarLLM One Android project — a Kotlin/Compose app that connects Bluetooth earbuds to an LLM via voice pipeline.
Popularidade
- Estrelas no GitHub
- 48 mil
- Posição no ranking
- #2891
- Licença
- MIT
- Atualizada em
- 15/10/2026
Comentários
- …
Mais skills deste repositório
00-andruia-consultant
Ajuda seu agente a iniciar ou melhorar projetos de IA. Ele analisa código, sugere ferramentas e cria planos de ação em espanhol.
sickn33/agentic-awesome-skills
007
Faz seu agente realizar auditorias de segurança e modelagem de ameaças. É útil para proteger projetos contra ataques e vulnerabilidades.
sickn33/agentic-awesome-skills
10-andruia-skill-smith
Ajuda seu agente a criar ou melhorar ferramentas de IA. Ele define como as ferramentas funcionam, escreve a documentação e valida a estrutura.
sickn33/agentic-awesome-skills
20-andruia-niche-intelligence
Faz seu agente criar um resumo sobre um setor específico. É útil para entender o contexto, regras, padrões de uso e riscos de um projeto, usando fontes confiáveis.
sickn33/agentic-awesome-skills
Skills parecidas
bengali-nlp
Faz seu agente processar textos em bengali. Ajuda a entender e trabalhar com a língua, normalizando o texto e lidando com suas características únicas.
affaan-m/ECC
prompt-caching-strategy
Ajuda seu agente a otimizar o uso de prompts para modelos de linguagem. Ele analisa como os prompts são feitos para encontrar maneiras de reduzir custos e tornar as respostas mais rápidas, reutilizando informações sempre que possível.
affaan-m/ECC
prompt-optimizer
Faz seu agente analisar e melhorar os prompts que você escreve. Ele sugere como adicionar informações ou mudar a forma para que o modelo de IA entenda melhor e dê a resposta desejada.
affaan-m/ECC