Pular para o conteúdo
Skillpedia
Prompts e LLMs48 mil · #2891

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

https://github.com/sickn33/agentic-awesome-skills/blob/main/plugins/agentic-awesome-skills-claude/skills/earllm-build/SKILL.md

Mensagem pronta para colar

Use esta skill para me ajudar: https://github.com/sickn33/agentic-awesome-skills/blob/main/plugins/agentic-awesome-skills-claude/skills/earllm-build/SKILL.md Leia o arquivo SKILL.md desse link e siga as instruções dele na minha tarefa.
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-build

Ou 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.md
Conteú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:

  1. 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.

  2. startBluetoothSco() foi depreciado desde o Android 12 (API 31). Use AudioManager.setCommunicationDevice(AudioDeviceInfo) e clearCommunicationDevice() em vez disso. O projeto já implementa ambos os caminhos em AudioRouteController.kt.

  3. 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.

  4. 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.

  5. Android 14+ requer a permissão FOREGROUND_SERVICE_MICROPHONE e foregroundServiceType="microphone" na declaração do serviço. RECORD_AUDIO deve ser concedido antes de startForeground().

  6. A fonte de áudio VOICE_COMMUNICATION habilita 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.

  7. 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.

repo: sickn33/agentic-awesome-skills

Popularidade

Estrelas no GitHub
48 mil
Posição no ranking
#2891
Licença
MIT
Atualizada em
15/10/2026

Essa skill é útil?

0

Entre para votar.

Comentários

  • …

Mais skills deste repositório

Skills parecidas