Tutorial 11: ¿Qué es Whisper AI y Cómo Funciona?
Tutorial 11: ¿Qué es Whisper AI y Cómo Funciona?
¡Hola y bienvenido de nuevo!
En esta lección vamos a explorar qué es Whisper AI, cómo funciona y cómo podemos aprovecharlo en nuestra aplicación. Esto nos ayudará a entender mejor la tecnología que estamos utilizando y todas sus posibilidades.
📋 Contenido del Tutorial
Introducción a Whisper AI
Capacidades de Whisper AI
Casos de uso prácticos
La API de Whisper AI
Arquitectura de Whisper
Comparativa con otros ASR
Implementación en nuestra aplicación
Próximos pasos
🤖 1. Introducción a Whisper AI
¿Qué es Whisper AI?
Whisper AI es un sistema de reconocimiento automático del habla (ASR - Automatic Speech Recognition) desarrollado por OpenAI, la misma empresa que creó ChatGPT.
Características principales
| Característica | Detalle |
|---|---|
| Entrenamiento | 680,000+ horas de datos multilingües |
| Idiomas | Soporte para más de 100 idiomas |
| Tecnología | Red neuronal transformer de código abierto |
| Precisión | Competitiva con sistemas comerciales |
| Acceso | Gratuito y de código abierto |
¿Cómo se entrenó Whisper?
1. Recopilación de datos ↓ 2. 680,000 horas de audio multilingüe ↓ 3. Datos de la web (públicos) ↓ 4. Modelo transformer entrenado ↓ 5. Capacidad de transcripción y traducción
Ventajas de Whisper
| Ventaja | Explicación |
|---|---|
| Multilingüe | Funciona en más de 100 idiomas |
| Robusto | Funciona bien con acentos y ruido |
| Precisión | Comparable a sistemas comerciales |
| Traducción | Puede traducir a inglés automáticamente |
| Código abierto | Gratuito y modificable |
| Local | Se puede ejecutar sin conexión a internet |
🎯 2. Capacidades de Whisper AI
Lo que puede hacer Whisper
🎙️ Transcripción de Audio
# Ejemplo de transcripción simple Audio: "Hello and welcome to my channel" Texto: "Hello and welcome to my channel"
🌍 Traducción Automática
# Ejemplo de traducción Audio (Español): "Hola, ¿cómo estás?" Texto (Inglés): "Hello, how are you?"
📝 Generación de Subtítulos
# Subtítulos con marcas de tiempo 00:00:00.000 --> 00:00:05.000 Hello and welcome 00:00:05.000 --> 00:00:10.000 To my YouTube channel
Idiomas soportados
| Idioma | Código | Precisión |
|---|---|---|
| Español | es | Muy alta |
| Inglés | en | Excelente |
| Francés | fr | Muy alta |
| Alemán | de | Muy alta |
| Chino | zh | Alta |
| Japonés | ja | Alta |
| Ruso | ru | Alta |
| + 90 idiomas más | - | Variable |
Formatos de audio soportados
| Formato | Extensión | Uso común |
|---|---|---|
| MP3 | .mp3 | Audio comprimido |
| MP4 | .mp4 | Video comprimido |
| WAV | .wav | Audio sin comprimir |
| WEBM | .webm | Video web |
| M4A | .m4a | Audio avanzado |
| FLAC | .flac | Audio sin pérdida |
💼 3. Casos de uso prácticos
Periodismo y Medios
// Una periodista usa Whisper para transcribir entrevistas const entrevista = "audio/entrevista_espanol.mp3"; const transcripcion = await whisper.transcribe(entrevista); // Resultado: Texto completo de la entrevista en español
Beneficios:
✅ Sin necesidad de traductor
✅ Rápido y preciso
✅ Buscable y editable
Educación
# Un estudiante transcribe clases lecture_audio = "clase_historia.mp3" notes = whisper.transcribe(lecture_audio) # Resultado: Notas completas de la clase
Beneficios:
✅ Enfoque en la clase, no en tomar notas
✅ Revisión posterior del contenido
✅ Accesibilidad para estudiantes con discapacidad
Podcasting
// Un podcaster crea subtítulos automáticos podcast = "episodio_100.mp3" subtitles = whisper.transcribe(podcast, output="srt") // Resultado: Archivo .srt para subtítulos
Beneficios:
✅ Mayor alcance de audiencia
✅ Contenido accesible
✅ Mejor SEO
Negocios
# Una empresa transcribe llamadas de clientes calls = ["llamada_1.mp3", "llamada_2.mp3"] for call in calls: transcription = whisper.transcribe(call) analyze_sentiment(transcription)
Beneficios:
✅ Mejor entendimiento del cliente
✅ Análisis de sentimiento
✅ Mejora de productos y servicios
Aplicaciones para discapacidad
// Ayuda para personas con discapacidad auditiva real_time_audio = get_microphone_input(); text = whisper.transcribe(real_time_audio); display_subtitles(text);
Beneficios:
✅ Comunicación más efectiva
✅ Inclusión
✅ Accesibilidad
🔌 4. La API de Whisper AI
Endpoints de la API
1. Transcriptions (Transcripciones)
POST /v1/audio/transcriptions Host: api.openai.com Authorization: Bearer YOUR_API_KEY Content-Type: multipart/form-data { "audio": "@audio.mp3", "language": "es", "response_format": "json" }
Respuesta:
{ "id": "1234567890", "text": "Hola y bienvenido a mi canal de YouTube", "language": "es" }
2. Translations (Traducciones)
POST /v1/audio/translations Host: api.openai.com Authorization: Bearer YOUR_API_KEY Content-Type: multipart/form-data { "audio": "@audio_espanol.mp3" }
Respuesta:
{ "id": "1234567890", "text": "Hello and welcome to my YouTube channel" }
Parámetros de la API
| Parámetro | Descripción | Ejemplo |
|---|---|---|
audio | Archivo de audio a procesar | @audio.mp3 |
language | Idioma del audio | es, en, fr |
response_format | Formato de respuesta | json, text, srt, vtt |
temperature | Creatividad del modelo | 0.0 - 1.0 |
prompt | Guía para la transcripción | Texto opcional |
Ejemplo de código Python
import openai # Configurar la API key openai.api_key = "YOUR_API_KEY" # Transcribir un archivo de audio def transcribe_audio(file_path): with open(file_path, "rb") as audio_file: transcript = openai.Audio.transcribe( model="whisper-1", file=audio_file, language="es" ) return transcript["text"] # Usar la función texto = transcribe_audio("mi_video.mp4") print(texto)
Ejemplo de código JavaScript (Node.js)
const fs = require('fs'); const { Configuration, OpenAIApi } = require('openai'); const configuration = new Configuration({ apiKey: 'YOUR_API_KEY' }); const openai = new OpenAIApi(configuration); async function transcribeAudio(filePath) { const audioFile = fs.createReadStream(filePath); const response = await openai.createTranscription( audioFile, 'whisper-1', undefined, 'json', 0, 'es' ); return response.data.text; } // Usar la función transcribeAudio('mi_video.mp4') .then(text => console.log(text));
🏗️ 5. Arquitectura de Whisper
Estructura del modelo
┌─────────────────────────────────────────────┐ │ WHISPER AI MODEL │ ├─────────────────────────────────────────────┤ │ │ │ ┌──────────────────────────────────┐ │ │ │ Audio Input (MP3, WAV) │ │ │ └──────────────────────────────────┘ │ │ ↓ │ │ ┌──────────────────────────────────┐ │ │ │ Feature Extraction (Spectro) │ │ │ └──────────────────────────────────┘ │ │ ↓ │ │ ┌──────────────────────────────────┐ │ │ │ Transformer Encoder │ │ │ │ (680k horas de entrenamiento) │ │ │ └──────────────────────────────────┘ │ │ ↓ │ │ ┌──────────────────────────────────┐ │ │ │ Transformer Decoder │ │ │ └──────────────────────────────────┘ │ │ ↓ │ │ ┌──────────────────────────────────┐ │ │ │ Text Output (Transcripción) │ │ │ └──────────────────────────────────┘ │ │ │ └─────────────────────────────────────────────┘
Tamaños de modelo
| Modelo | Parámetros | Tamaño | Velocidad | Precisión |
|---|---|---|---|---|
| Tiny | 39M | 39 MB | Muy rápida | Baja |
| Base | 74M | 74 MB | Rápida | Buena |
| Small | 244M | 244 MB | Moderada | Muy buena |
| Medium | 769M | 769 MB | Lenta | Alta |
| Large | 1.5B | 1.5 GB | Muy lenta | Excelente |
Procesamiento de audio
# Flujo de procesamiento de audio def process_audio(audio_file): # 1. Cargar el audio audio = load_audio(audio_file) # 2. Extraer características (espectrograma) features = extract_features(audio) # 3. Pasar por el modelo predictions = model(features) # 4. Decodificar a texto text = decode_predictions(predictions) return text
📊 6. Comparativa con otros ASR
Whisper vs Competencia
| Característica | Whisper | Google Cloud | AWS Transcribe | Azure Speech |
|---|---|---|---|---|
| Precio | Gratis (local) | Pago | Pago | Pago |
| Idiomas | 100+ | 125+ | 100+ | 100+ |
| Precisión | Muy alta | Muy alta | Alta | Muy alta |
| Código abierto | ✅ | ❌ | ❌ | ❌ |
| Offline | ✅ | ❌ | ❌ | ❌ |
| Traducción | ✅ | ✅ | ✅ | ✅ |
| Subtítulos | ✅ | ✅ | ✅ | ✅ |
Ventajas de Whisper
| Ventaja | Explicación |
|---|---|
| Gratuito | No requiere suscripción ni pago por uso |
| Privacidad | Los datos no salen de tu servidor |
| Flexibilidad | Puedes modificar el código |
| Sin dependencias | No necesitas conexión a internet |
| Multilingüe | Soporte para la mayoría de idiomas |
Limitaciones de Whisper
| Limitación | Explicación |
|---|---|
| Hardware | Requiere CPU/GPU potente para modelos grandes |
| Tiempo | Procesamiento más lento que servicios en la nube |
| Mantenimiento | Tú eres responsable del servidor |
| Actualizaciones | Dependes de la comunidad de OpenAI |
💻 7. Implementación en nuestra aplicación
Estructura actual del proyecto
whisper/ ├── backend/ │ ├── init.php │ └── classes/ │ ├── DB.php │ └── Whisper.php ├── files/ # Archivos subidos ├── frontend/ │ ├── css/ │ ├── images/ │ └── js/ ├── index.php └── view.php
Cómo vamos a usar Whisper
// En la clase Whisper (futuro método) public function transcribe($filePath) { // 1. Verificar que el archivo existe if (!file_exists($filePath)) { return false; } // 2. Ejecutar el comando Whisper $command = "whisper " . escapeshellarg($filePath) . " --model small" . " --language Spanish" . " 2>&1"; // 3. Capturar la salida exec($command, $output, $returnCode); // 4. Procesar el resultado if ($returnCode === 0) { // Leer el archivo de transcripción generado $txtFile = str_replace('.mp4', '.txt', $filePath); if (file_exists($txtFile)) { return file_get_contents($txtFile); } } return false; }
Integración con la base de datos
// Guardar la transcripción en la base de datos public function saveTranscription($fileId, $content) { $sql = "UPDATE files SET content = :content WHERE ID = :id"; $stmt = $this->DB->prepare($sql); return $stmt->execute([ ':content' => $content, ':id' => $fileId ]); }
Ejemplo de flujo completo
1. Usuario sube un video (video.mp4) ↓ 2. PHP guarda el archivo en files/ ↓ 3. PHP guarda la información en la base de datos ↓ 4. PHP ejecuta Whisper en el archivo ↓ 5. Whisper genera: video.txt y video.srt ↓ 6. PHP lee el archivo .txt ↓ 7. PHP guarda el texto en la base de datos ↓ 8. El usuario ve la transcripción en la página
🎯 8. Próximos pasos
Lo que hemos aprendido
✅ Qué es Whisper AI y sus capacidades
✅ Casos de uso prácticos
✅ La API de Whisper AI
✅ Arquitectura del modelo
✅ Comparativa con otros ASR
✅ Cómo implementarlo en nuestra aplicación
Lo que viene en la próxima lección
En la siguiente lección vamos a:
Ejecutar Whisper desde PHP
Procesar el resultado de la transcripción
Guardar la transcripción en la base de datos
Mostrar el resultado al usuario
Avance del código de la próxima lección
public function transcribe($filePath) { // Generar nombres de archivo $baseName = pathinfo($filePath, PATHINFO_FILENAME); $txtFile = dirname($filePath) . '/' . $baseName . '.txt'; // Ejecutar Whisper $command = "whisper " . escapeshellarg($filePath) . " --model small" . " --language Spanish" . " --output_dir " . escapeshellarg(dirname($filePath)); exec($command, $output, $returnCode); // Leer el resultado if (file_exists($txtFile)) { return file_get_contents($txtFile); } return false; }
📖 9. Recursos adicionales
Documentación oficial
| Recurso | Enlace |
|---|---|
| OpenAI Whisper | github.com/openai/whisper |
| Documentación API | platform.openai.com/docs/guides/speech-to-text |
| Paper de investigación | arxiv.org/abs/2212.04356 |
| Modelos preentrenados | huggingface.co/openai/whisper |
Tutoriales recomendados
Python: Cómo usar Whisper con Python
JavaScript: Integrar Whisper en aplicaciones web
Docker: Ejecutar Whisper en contenedores
GPU: Acelerar Whisper con GPU
❓ Preguntas frecuentes
¿Whisper es gratuito?
Sí, Whisper es de código abierto y gratuito
Puedes usarlo sin pagar nada
¿Necesito conexión a internet?
No, Whisper funciona completamente offline
Los datos nunca salen de tu servidor
¿Qué idiomas soporta?
Más de 100 idiomas incluyendo español, inglés, francés, etc.
¿Qué precisión tiene?
Muy alta, comparable a sistemas comerciales como Google Cloud
¿Puedo traducir automáticamente?
Sí, Whisper puede traducir a inglés automáticamente
¿Qué tan rápido es?
Depende del modelo y hardware, pero es bastante rápido en CPU modernas
🎓 Ejercicio práctico
Ejercicio 1: Probar Whisper en la terminal
# Instalar Whisper pip install openai-whisper # Probar con un archivo de ejemplo whisper audio_ejemplo.mp3 --model small --language Spanish
Ejercicio 2: Crear un script de prueba
# test_whisper.py import whisper model = whisper.load_model("small") result = model.transcribe("mi_audio.mp3", language="Spanish") print(result["text"])
Ejercicio 3: Explorar diferentes modelos
# Probar diferentes modelos whisper audio.mp3 --model tiny # Rápido pero menos preciso whisper audio.mp3 --model small # Equilibrio whisper audio.mp3 --model large # Precisión máxima
¡Excelente trabajo! Ahora entiendes qué es Whisper AI y cómo funciona. En la próxima lección, integraremos Whisper con nuestra aplicación PHP para transcribir archivos automáticamente.
Comentarios
Publicar un comentario