Ir al contenido

Tutorial de reconocimiento de voz en Python: del archivo de audio a la transcripción

Escrito por
Jack Limebear
Publicado
Última actualización

EscucharEscucha este artículo

Incorporar funciones de reconocimiento de voz a una app de Python solía ser complejo. Desarrolladores de Python tenían que programar todo el proceso de transcripción: el preprocesamiento de audio, la extracción de características y la integración del modelo. Además, los equipos de ingeniería lidiaban con la gestión de audio de bajo nivel, una calidad de transcripción limitada y retrasos entre las palabras habladas y los subtítulos en directo. 

Los avances en los modelos de audio y los SDK de reconocimiento de voz han cambiado esto.

En este tutorial de reconocimiento de voz en Python, aprenderás a integrar los modelos de audio de Voz a Texto de ElevenLabs en tu proyecto de Python para crear apps de transcripción listas para uso comercial. 

Resumen

  • Los modelos comerciales de Voz a Texto ofrecen funciones como la diarización de hablantes, marcas de tiempo por palabra y prompting de términos clave, de las que carecen los modelos básicos de reconocimiento de voz. 
  • ElevenAPI incorpora capacidades de reconocimiento de voz a tu código de Python con Scribe v2 y Scribe v2 Realtime. 
  • Desarrolladores pueden instalar skills de ElevenLabs en una plataforma de programación con IA para generar código de Python preciso a partir de la documentación oficial de la API. 
  • Puedes probar gratis la API de ElevenLabs antes de suscribirte a un plan de pago para desarrollo comercial. 
Five steps for Python speech recognition tutorial: setup, transcription, streaming, and enterprise features.

Qué cubre este tutorial de reconocimiento de voz en Python

Este tutorial cubre los requisitos previos, la integración de la API y funciones de transcripción avanzadas para ayudarte a crear una app de reconocimiento de voz en Python para casos de uso empresariales.  

El reconocimiento de voz ha evolucionado mucho en los últimos años, especialmente porque los modelos de lenguaje de gran tamaño y las redes neuronales de aprendizaje profundo han transformado cómo desarrolladores de Python usan SDK de transcripción. Aunque muchos tutoriales muestran cómo crear apps de transcripción básicas, pocos abarcan las funciones que necesita un producto listo para uso comercial.

Hemos creado este tutorial para cubrir esa necesidad. 

Por ejemplo, muchas soluciones de transcripción empresariales requieren estas funciones:

  • Diarización de hablantes: la capacidad de identificar y separar a cada hablante en la transcripción.
  • Marca de tiempo: etiquetar con precisión cada palabra con la hora, el minuto y el segundo relativos en que se pronuncia. 
  • Compatibilidad multilingüe: captura discursos en distintos idiomas dentro de una misma grabación o retransmisión en directo, con tasas bajas de error por palabra. 
  • Prompting de términos clave: asignar palabras especiales, como marcas, nombres de productos y términos técnicos, para evitar errores ortográficos en las transcripciones. 
  • Transcripción de baja latencia: respuesta de voz a texto en milisegundos que impulsa las apps de transcripción en tiempo real. 

Nota: este tutorial va más allá de generar scripts personales sencillos para proyectos de ocio o personales. No incluye la lógica de aplicación construida sobre la integración de la API de Voz a Texto, ya que varía según cada empresa. 

Enterprise transcription needs: diarization, word timestamps, languages, keyterms, and low latency.

Requisitos previos para integrar el reconocimiento de voz en Python 

Hemos diseñado este tutorial en torno a ElevenAPI, una API de ElevenLabs lista para producción que simplifica la interacción con modelos de voz en tu código. Con ElevenAPI, puedes acceder a Scribe v2 y Scribe v2 Realtime, nuestros principales modelos de voz para transcripción por lotes y en directo. 

En lugar de acceder directamente a los modelos de Voz a Texto de ElevenLabs, envías grabaciones de audio, retransmisiones en directo y argumentos mediante llamadas a la API. El modelo de audio convierte los datos de audio en texto. Cuando termina, recibes las transcripciones en el código o a través de un webhook. 

Para empezar, sigue estos pasos de preparación. 

  1. Regístrate en ElevenLabs.
  2. Crea tu clave de API.
  3. Graba una conversación y súbela a un almacenamiento de acceso público. 

Cuando estés listo, pasa a la siguiente sección. 

Configura tu entorno 

Antes de integrar los modelos de ElevenLabs, configura tu entorno de Python para proteger tu clave de API de ElevenLabs. Como con todas las claves de API, recomendamos guardarla como variable de entorno (un secreto gestionado) en el archivo .env. 

ELEVENLABS_API_KEY=<your_api_key_here>

Al hacer una llamada a la API, envías la variable de entorno. Así evitas exponer accidentalmente la clave de API al hacer solicitudes a la API a través de una red pública. 

A continuación, ejecuta un comando de Bash para instalar elevenlabs, el SDK de ElevenLabs, en tu entorno de Python. El SDK te permite acceder a diversos modelos de voz. En este caso, puedes elegir entre Scribe v2 y Scribe v2 Realtime.

pip install elevenlabs
pip install python-dotenv

También tendrás que instalar python-dotenv, que permite a tu código de Python acceder a las variables de entorno almacenadas en el archivo .env. 

Escribe tu primer script de transcripción 


Una vez configurado el entorno de Python, puedes transcribir el archivo de audio con ElevenLabs Scribe v2. 

ElevenLabs Scribe v2 es un modelo de reconocimiento de voz líder del sector que te permite transcribir archivos de audio a gran escala. Detecta fonemas con gran precisión incluso cuando la grabación contiene ruido de fondo considerable. Para transcribir audio, envías la grabación al modelo mediante la API de ElevenLabs y recuperas la transcripción completada. 

A continuación tienes un fragmento de código de Python que convierte un archivo de audio en una transcripción con marcas de tiempo y diarización. 

# example.py
import os
from dotenv import load_dotenv
from io import BytesIO
import requests
from elevenlabs.client import ElevenLabs

load_dotenv()

elevenlabs = ElevenLabs(
  api_key=os.getenv("ELEVENLABS_API_KEY"),
)

audio_url = (
    "https://storage.googleapis.com/eleven-public-cdn/audio/marketing/nicole.mp3"
)
response = requests.get(audio_url)
audio_data = BytesIO(response.content)

transcription = elevenlabs.speech_to_text.convert(
    file=audio_data,
    model_id="scribe_v2", # Model to use
    tag_audio_events=True, # Tag audio events like laughter, applause, etc.
    language_code="eng", # Language of the audio file. If set to None, the model will detect the language automatically.
    diarize=True, # Whether to annotate who is speaking
)

print(transcription)

El código carga las bibliotecas necesarias, que proporcionan las funciones que necesita. También carga en el entorno del programa las variables de entorno que declaraste. 

Después, crea un cliente de ElevenLabs con la clave de API almacenada en la variable de entorno. A continuación, descarga el archivo de audio y lo convierte en datos binarios. 

Cuando tengas los datos de audio sin procesar, envíalos a la API de ElevenLabs junto con varios parámetros.

  • model_id indica el modelo de voz a texto que quieres usar. Como envías un archivo de audio, Scribe v2 es la mejor opción.
  • tag_audio_events te permite destacar segmentos sin habla, como risas, pasos y otros ruidos de fondo.
  • language_code representa el idioma de las conversaciones del archivo de grabación. Cuando se establece en None, el modelo detectará el idioma automáticamente. 
  • diarize indica si quieres que el modelo identifique y separe a distintos hablantes según sus características vocales.

Por último, ejecuta el código y verás el audio transcrito en la terminal. 

Speech-to-text API parameters: model, audio events, language, and speaker diarization.

Reconocimiento de voz en streaming en Python

El ejemplo anterior cubre la transcripción por lotes, adecuada para archivos pregrabados. Sin embargo, ElevenLabs también ofrece API que te permiten crear reconocimiento de voz en streaming. A diferencia del procesamiento por lotes, este modo ejecuta el reconocimiento de voz en tiempo real para generar transcripciones a medida que se desarrolla la conversación. 

Para ello, conectas tu código de Python con el modelo Scribe v2 Realtime mediante la API de WebSocket. 

Scribe v2 Realtime ofrece una arquitectura diseñada para streaming, con una latencia de transcripción inferior a 150 ms. Puedes usar Scribe v2 Realtime para crear aplicaciones como agentes para reuniones, herramientas de accesibilidad y automatización activada por voz. El modelo devuelve una transcripción parcial mientras procesa el flujo de audio. Solo devuelve la transcripción final cuando el código confirma un segmento de audio, de forma automática o manual. 

Según tu fuente de audio y el tipo de aplicación, puedes integrar el reconocimiento de voz con la API de ElevenLabs del lado del servidor o del cliente. 

Tanto el streaming del lado del cliente como el del servidor te permiten usar un workflow asíncrono. En lugar de consultar continuamente la API, usa WebSockets para gestionar los resultados. En tu código, debes crear controladores que reciban transcripciones parciales y finalizadas. 

Scribe v2 transcribes prerecorded files; Realtime streams live audio with under-150 ms latency.

Más allá: diarización, marcas de tiempo y vocabulario personalizado 

Además del reconocimiento automático de voz, los modelos de Voz a Texto de ElevenLabs admiten diarización, marcas de tiempo y vocabulario personalizado. 

  • Diarización: solo la transcripción por lotes admite la diarización de hablantes. Activa la diarización estableciendo el argumento diarize. Sin embargo, la transcripción multicanal, un modo dentro de la transcripción por lotes, no admite diarización.
  • Marcas de tiempo: al realizar una transcripción por lotes, puedes elegir entre marcas de tiempo a nivel de palabra o de carácter. Para ello, establece el parámetro timestamps_granularity al usar el método convert.  
  • Vocabulario personalizado: tanto la transcripción en tiempo real como por lotes admiten prompting de términos clave. Esta función orienta el modelo hacia la transcripción de términos clave específicos que incluyas en una lista. Scribe v2 Realtime admite hasta 50 términos clave, mientras que Scribe v2 admite 1000. 

Usar la skill de ElevenLabs en asistentes de programación con IA 

Los asistentes de programación con IA aceleran el desarrollo. Si utilizas herramientas como Claude Code, Cursor, Codex u otras herramientas similares de programación con IA, puedes añadir skills de ElevenLabs en el entorno de programación. 

Solo tienes que ejecutar este comando en la terminal de tu plataforma:

 npx skills add elevenlabs/skills --skill speech-to-text 

El agente de programación con IA descargará la skill de voz a texto desde el repositorio de GitHub de ElevenLabs y la instalará en el directorio local de skills. Así puedes generar automáticamente código de Python para el reconocimiento de voz a partir de la documentación oficial de ElevenLabs, en lugar de escribir desde cero toda la integración de la API. 

Una vez instalada, puedes generar código de Python para reconocimiento de voz simplemente describiendo de forma conversacional lo que debe hacer. A partir de la descripción, el asistente de programación genera automáticamente código usando la skill de voz a texto, con el modelo y los parámetros correctos.

Por ejemplo, si escribes «Crea un fragmento de Python para reconocimiento de voz que transcriba con diarización y marcas de tiempo por palabra» en Codex, obtendrás un fragmento similar al siguiente. 

Chat showing Python code for ElevenLabs speech transcription with speaker diarization and word timestamps.

Empieza con ElevenAPI para reconocimiento de voz

ElevenAPI te permite acceder a modelos avanzados de Voz a Texto para crear apps de reconocimiento de voz en Python.

Al usar ElevenAPI, evitas escribir código de integración desde cero, algo que retrasa la innovación de producto. En su lugar, usas SDK que ofrecen servicios de Voz a Texto con requisitos de nivel comercial, como prompting de términos clave, diarización y marcas de tiempo. 

Obtén tu clave de API de ElevenLabs ahora y consulta nuestra documentación oficial para descubrir cómo funciona la API. 

Preguntas frecuentes

Artículos relacionados

Crea con el audio IA de la más alta calidad