API REST que recebe arquivos de áudio de aplicativos Expo e converte em texto usando Google Cloud Speech API e OpenAI Whisper.
- ✅ Conversão de áudio para texto
- ✅ Suporte a múltiplos formatos: WAV, MP3, M4A, OGG
- ✅ Integração com Google Cloud Speech API
- ✅ Integração com OpenAI Whisper
- ✅ API REST simples e intuitiva
- ✅ Suporte a múltiplos idiomas (pt-BR, en-US, es-ES)
- ✅ Compatível com aplicativos Expo
- Node.js 16+
- npm ou yarn
- FFmpeg instalado no sistema
- Conta Google Cloud (opcional)
- API Key OpenAI (opcional)
- Clone o repositório:
git clone <seu-repositorio>
cd ApiTalk- Instale as dependências:
npm install- Configure as variáveis de ambiente:
# Copie o arquivo de exemplo
cp .env.example .env
# Edite o arquivo .env com suas configurações- Configure os serviços de Speech-to-Text (pelo menos um):
- Crie um projeto no Google Cloud Console
- Ative a Speech-to-Text API
- Crie uma service account e baixe o arquivo JSON
- Configure o caminho no .env:
GOOGLE_APPLICATION_CREDENTIALS=path/to/service-account.json
- Obtenha sua API key em https://platform.openai.com/
- Configure no .env:
OPENAI_API_KEY=your_api_key
- Inicie o servidor de desenvolvimento:
npm run dev- O servidor estará disponível em:
http://localhost:3000
Converte áudio em texto.
Parâmetros:
audio(file): Arquivo de áudio (WAV, MP3, M4A, OGG)language(string, opcional): Idioma para transcrição (pt-BR, en-US, es-ES)service(string, opcional): Serviço preferido (google, openai, auto)
Exemplo de uso com curl:
curl -X POST \
-F "audio=@exemplo.wav" \
-F "language=pt-BR" \
http://localhost:3000/api/v1/audio/transcribeResposta de sucesso:
{
"success": true,
"data": {
"transcription": "Texto transcrito do áudio",
"confidence": 0.95,
"language": "pt-BR",
"service": "google",
"fileInfo": {
"size": 1024000,
"format": "wav",
"name": "exemplo.wav"
},
"processingTime": 2500,
"processedAt": "2025-09-22T12:00:00.000Z"
}
}Verifica a saúde da API.
Lista os serviços disponíveis.
Exemplo de código para usar a API em um app Expo:
import { Audio } from 'expo-av';
// Função para transcrever áudio
async function transcribeAudio(audioUri) {
const formData = new FormData();
formData.append('audio', {
uri: audioUri,
type: 'audio/m4a',
name: 'recording.m4a',
});
const response = await fetch('http://localhost:3000/api/v1/audio/transcribe', {
method: 'POST',
body: formData,
headers: {
'Content-Type': 'multipart/form-data',
},
});
return response.json();
}ApiTalk/
├── src/
│ ├── controllers/ # Controladores da API
│ ├── services/ # Serviços de conversão de áudio
│ ├── middlewares/ # Middlewares personalizados
│ ├── utils/ # Utilitários e helpers
│ ├── config/ # Configurações da aplicação
│ └── routes/ # Definições de rotas
├── uploads/ # Diretório temporário para uploads
├── .cursor/rules/ # Regras do Cursor
├── package.json # Dependências e scripts
└── server.js # Ponto de entrada da aplicação
npm start- Inicia o servidor em produçãonpm run dev- Inicia o servidor com nodemon (desenvolvimento)
Crie um arquivo .env na raiz do projeto:
# Configurações do Servidor
PORT=3000
NODE_ENV=development
# Serviços de Speech-to-Text
GOOGLE_APPLICATION_CREDENTIALS=path/to/service-account.json
OPENAI_API_KEY=your_openai_api_key
# Configurações de Upload
MAX_FILE_SIZE=26214400
UPLOAD_DIR=./uploads
# CORS
ALLOWED_ORIGINS=http://localhost:19006,exp://localhost:19000A API retorna erros estruturados:
{
"success": false,
"error": {
"code": "INVALID_AUDIO_FORMAT",
"message": "Formato de áudio não suportado",
"details": "Formatos aceitos: WAV, MP3, M4A, OGG"
}
}ISC
Contribuições são bem-vindas! Abra uma issue ou envie um pull request.