Skip to content

Navigation Menu

Sign in
Sign up

Latest commit

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

ApiTalk - API de Conversão de Áudio para Texto

API REST que recebe arquivos de áudio de aplicativos Expo e converte em texto usando Google Cloud Speech API e OpenAI Whisper.

🚀 Funcionalidades

  • ✅ 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

📋 Pré-requisitos

  • Node.js 16+
  • npm ou yarn
  • FFmpeg instalado no sistema
  • Conta Google Cloud (opcional)
  • API Key OpenAI (opcional)

⚙️ Instalação

  1. Clone o repositório:
git clone <seu-repositorio>
cd ApiTalk
  1. Instale as dependências:
npm install
  1. Configure as variáveis de ambiente:
# Copie o arquivo de exemplo
cp .env.example .env
# Edite o arquivo .env com suas configurações
  1. Configure os serviços de Speech-to-Text (pelo menos um):

Google Cloud Speech API:

  • 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

OpenAI Whisper:

🚀 Como usar

  1. Inicie o servidor de desenvolvimento:
npm run dev
  1. O servidor estará disponível em: http://localhost:3000

📡 Endpoints da API

POST /api/v1/audio/transcribe

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/transcribe

Resposta 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月22日T12:00:00.000Z"
 }
}

GET /api/v1/health

Verifica a saúde da API.

GET /api/v1/audio/services

Lista os serviços disponíveis.

📱 Integração com Expo

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();
}

🛠️ Estrutura do Projeto

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

🔧 Scripts Disponíveis

  • npm start - Inicia o servidor em produção
  • npm run dev - Inicia o servidor com nodemon (desenvolvimento)

📝 Variáveis de Ambiente

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:19000

🚨 Tratamento de Erros

A 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"
 }
}

📄 Licença

ISC

🤝 Contribuição

Contribuições são bem-vindas! Abra uma issue ou envie um pull request.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

AltStyle によって変換されたページ (->オリジナル) /