Skip to content

atimilson/ApiTalk

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 

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-22T12: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

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors