1. Resumen de los modelos de voz

1.1. Introducción a los Modelos TTS y STT de OpenAI

Modelo de Texto a Voz (TTS)

El modelo TTS de OpenAI puede convertir datos de texto en salida de voz. Este proceso implica análisis de texto, aplicación de algoritmos de síntesis de voz y ajustes de calidad de sonido. Permite que la computadora lea cualquier texto escrito, haciendo que el contenido sea más comprensible y accesible. TTS es una tecnología importante para personas con discapacidad visual, conductores o cualquier persona que prefiera recibir información a través de la escucha.

Modelo de Voz a Texto (STT)

Correspondiendo al TTS, el modelo STT puede convertir información de voz en texto escrito. Al procesar la entrada de audio original, el sistema STT primero realiza la detección de voz, seguida de la extracción de características. Luego mapea la señal de audio al vocabulario usando modelos acústicos y de lenguaje, generando finalmente la salida de texto. La tecnología STT se utiliza ampliamente en reconocimiento de voz, transcripción de reuniones y generación de subtítulos en tiempo real.

1.2. Escenarios de Aplicación

  • Lectura en voz alta de blogs
  • Generación de voz multilingüe

3. API de Texto a Voz

3.1. Inicio rápido

En esta sección, demostraremos cómo convertir rápidamente texto en voz utilizando el comando curl y un cliente Python. Ya sea que seas un desarrollador o un usuario no técnico, puedes generar archivos de voz fácilmente simplemente enviando una solicitud a la API.

Envío de solicitudes usando Curl

Para generar voz utilizando la herramienta de línea de comandos curl, sigue estos pasos:

  1. Asegúrate de que curl esté instalado en tu sistema y de que tengas una clave de API válida de OpenAI.
  2. Usa el siguiente comando curl para convertir texto en voz:
curl https://api.openai.com/v1/audio/speech \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "tts-1",
    "input": "¡Hoy es un gran día para construir productos que a la gente le encante!",
    "voice": "alloy"
  }' \
  --output discurso.mp3

En el comando anterior, $OPENAI_API_KEY representa tu clave de API, el campo input es el texto que deseas convertir, el campo model especifica el modelo de voz a utilizar y el parámetro voice selecciona la voz. Aquí elegimos la voz sintética de metal alloy. La opción final --output especifica el nombre y el formato del archivo de salida.

Uso del Cliente Python

Si prefieres utilizar el lenguaje de programación Python, puedes usar el siguiente ejemplo de código:

from openai import OpenAI

cliente = OpenAI()

respuesta = cliente.audio.speech.create(
    model="tts-1",
    voice="alloy",
    input="¡Hoy es un gran día para construir productos que a la gente le encante!"
)

respuesta.stream_to_file("salida.mp3")

En este fragmento de código, primero importamos la biblioteca openai y creamos una instancia del cliente de OpenAI. Luego, utilizamos el método audio.speech.create para enviar una solicitud, especificando el modelo, la voz y el texto a convertir. Finalmente, usamos el método stream_to_file para guardar el flujo de voz generado en un archivo.

3.2. Elección de la Calidad de Audio y la Voz

Seleccionar la calidad de audio y la voz adecuadas para tu proyecto es un paso crucial para garantizar la mejor experiencia de usuario. Nuestra API ofrece dos opciones de modelos de calidad de audio: tts-1 y tts-1-hd.

  • tts-1: Proporciona menor latencia, adecuado para aplicaciones en tiempo real, pero con calidad de audio relativamente menor.
  • tts-1-hd: Ofrece salida de audio de mayor calidad, adecuada para necesidades de generación de voz de alta calidad no en tiempo real.

Además, la API de TTS de OpenAI ofrece varias opciones de voz:

  • Alloy
  • Echo
  • Fable
  • Onyx
  • Nova
  • Shimmer

Dependiendo de los requisitos del proyecto y del público objetivo, puedes probar diferentes muestras de voz para elegir la voz más adecuada. Considera factores como el estilo de habla, la velocidad de habla y la entonación para encontrar una voz que transmita emociones y profesionalismo apropiados.

3.3. Formatos de Salida y Idiomas Soportados

La API de TTS de OpenAI se configura de forma predeterminada para el formato de salida MP3, pero también admite varios otros formatos de audio:

  • Opus: Adecuado para transmisión e internet y comunicación, con baja latencia.
  • AAC: Utilizado para compresión de audio digital, preferido por plataformas como YouTube, Android e iOS.
  • FLAC: Formato de compresión de audio sin pérdidas utilizado por entusiastas del audio para archivar.

En cuanto al soporte de idiomas, la API sigue principalmente el modelo Whisper, proporcionando una amplia gama de opciones de idiomas para admitir muchos idiomas nacionales.

3.4. Funcionalidad de transmisión de audio en tiempo real

Para satisfacer las necesidades de las aplicaciones en tiempo real, nuestra API proporciona soporte para la transmisión de audio en tiempo real. A continuación se muestra un ejemplo en Python para implementar la transmisión de audio en tiempo real:

from openai import OpenAI

cliente = OpenAI()

respuesta = cliente.audio.speech.create(
    model="tts-1",
    voice="alloy",
    input="¡Hola mundo! Esto es una prueba de transmisión.",
)

respuesta.stream_to_file("output.mp3")

4. API de conversión de voz a texto

4.1. Inicio rápido

En esta sección, principalmente presentaremos la funcionalidad de la API de OpenAI para la conversión de voz a texto.

Primero, necesitas tener una clave de API válida de OpenAI y preparar un archivo de audio.

Puedes usar el comando curl para enviar una solicitud POST que contenga el archivo de audio. Reemplaza OPENAI_API_KEY con tu clave de API y establece la ruta de archivo correcta.

curl --request POST \
  --url https://api.openai.com/v1/audio/transcriptions \
  --header 'Authorization: Bearer OPENAI_API_KEY' \
  --header 'Content-Type: multipart/form-data' \
  --form file=@/ruta/hacia/tu/archivo_de_audio.mp3 \
  --form model=whisper-1

Al ejecutar el comando anterior, recibirás una respuesta formateada en JSON que contiene la información del texto transcrito.

Por ejemplo:

{
  "texto": "Imagina la idea más salvaje que hayas tenido, y tienes curiosidad sobre cómo podría escalar a algo que sea 100, 1,000 veces más grande..."
}

4.2. Formatos y tamaños de archivo admitidos

Esta API admite varios formatos comunes de archivos de audio para cumplir con diferentes necesidades en diferentes escenarios. Los formatos de archivo admitidos incluyen, entre otros, mp3, mp4, mpeg, mpga, m4a, wav, webm, etc. Esto permite a los usuarios procesar fácilmente archivos de audio de diversas fuentes.

En cuanto al tamaño del archivo, la API actual tiene un límite de no más de 25MB. Esto significa que si tu archivo de audio es más grande que 25MB, deberás dividirlo en varios segmentos más pequeños que 25MB, o utilizar un formato de compresión más eficiente. Por ejemplo, los formatos mp3 y opus suelen ofrecer compresión eficiente, reduciendo el tamaño del archivo sin sacrificar demasiada calidad de audio.

Si te encuentras con un archivo mayor a 25MB, puedes considerar utilizar la biblioteca PyDub en Python para segmentar tu audio:

from pydub import AudioSegment

archivo_de_audio = AudioSegment.from_file("tu_archivo_de_audio_grande.mp3")

intervalo = 10 * 60 * 1000  # 10 minutos

segmentos = make_chunks(archivo_de_audio, intervalo)

for i, segmento in enumerate(segmentos):
    nombre_segmento = f"audio_segmento{i}.mp3"
    segmento.export(nombre_segmento, format="mp3")

En el código anterior, la función make_chunks dividirá un archivo de audio grande en múltiples segmentos de audio con un intervalo de tiempo de 10 minutos. Estos segmentos están todos dentro del límite de tamaño de archivo requerido por la API y pueden ser subidos por separado a la API de OpenAI para su transcripción.

Ten en cuenta que aunque PyDub nos proporciona una manera fácil de manejar archivos de audio, se recomienda prestar especial atención a la seguridad y estabilidad de cualquier software de terceros al usarlo. OpenAI no proporciona garantías para software de terceros.