Utiliza los endpoints de voz de la API de MKA1 cuando necesites transcripción de voz a texto basada en archivos o de texto a voz.
Para sesiones de voz bidireccionales en tiempo real, usa el Modo de voz avanzado.
Elige el endpoint adecuado
| Caso de uso | Endpoint | Notas |
|---|
| Transcribir un archivo grabado | Transcripción de voz a texto | Sube audio con multipart/form-data |
| Generar un archivo WAV a partir de texto | Texto a voz | Mejor para generación de archivos completos |
| Iniciar la reproducción tan pronto como llegue el audio | Texto a voz en streaming | Mejor para reproducción de baja latencia |
Transcribir audio
Envía un archivo de audio al endpoint de transcripción cuando quieras obtener texto de un archivo grabado.
Si tu aplicación actúa en nombre de un usuario final, también envía X-On-Behalf-Of.
Formatos de audio soportados: FLAC, MP3, MP4, MPEG, MPGA, M4A, OGG, WAV, WebM, PCM.
import { SDK } from '@meetkai/mka1';
import { openAsBlob } from 'node:fs';
const mka1 = new SDK({
bearerAuth: 'Bearer <mka1-api-key>',
});
const result = await mka1.llm.speech.transcribe({
language: 'en',
prompt: 'Este es un pódcast técnico sobre aprendizaje automático.',
temperature: 0.2,
requestBody: {
file: await openAsBlob('episode.wav'),
},
}, { headers: { 'X-On-Behalf-Of': '<end-user-id>' } });
console.log(result.text);
console.log(result.language);
console.log(result.confidence);
La respuesta incluye el texto transcrito, además del idioma detectado y el nivel de confianza:
{
"text": "¡Hola! Estamos emocionados de mostrarte nuestras capacidades nativas de voz.",
"language": "en",
"confidence": 0.8429018476208717
}
Separar hablantes en una transcripción
Si necesitas diarización, activa los datos de hablante en la solicitud de transcripción.
Cuando está activado, la respuesta puede incluir un arreglo speakers con segmentos etiquetados por hablante y metadatos de tiempo.
Para include_speaker_data, sube audio WAV o PCM para transcripción no en streaming. Otros formatos de audio devuelven 400 BAD_REQUEST con el mensaje Speaker diarization currently requires WAV/PCM audio for non-streaming transcription.
const result = await mka1.llm.speech.transcribe({
language: 'en',
includeSpeakerData: true,
prompt: 'Este es un breve fragmento de pódcast sobre novedades de productos de IA.',
temperature: 0.2,
requestBody: {
file: await openAsBlob('panel.wav'),
},
}, { headers: { 'X-On-Behalf-Of': '<end-user-id>' } });
console.log(result.speakers);
Ejemplo de respuesta con separación de hablantes:
{
"text": "Bienvenidos de nuevo al programa. Hoy veremos cómo las APIs de voz encajan en aplicaciones en producción. Lo mantendremos práctico y nos centraremos en latencia, precisión y turnos de hablante.",
"language": "en",
"confidence": 0.91177404,
"speakers": [
{
"speaker": "Speaker-1",
"text": "Bienvenidos de nuevo al programa.",
"confidence": 0.91177404,
"offset_ms": 80,
"duration_ms": 1280
},
{
"speaker": "Speaker-2",
"text": "Hoy veremos cómo las APIs de voz encajan en aplicaciones en producción.",
"confidence": 0.91177404,
"offset_ms": 1540,
"duration_ms": 3380
},
{
"speaker": "Speaker-1",
"text": "Lo mantendremos práctico y nos centraremos en latencia, precisión y turnos de hablante.",
"confidence": 0.91177404,
"offset_ms": 5220,
"duration_ms": 3660
}
]
}
Usa el campo de nivel superior text cuando necesites una transcripción unificada.
Usa speakers cuando necesites subtítulos, gestión de turnos o análisis de hablantes posteriores.
Generar voz
Utiliza el endpoint estándar de texto a voz cuando quieras un archivo WAV completo.
El cuerpo de la respuesta es audio binario y las cabeceras de la respuesta incluyen X-Language-Code.
import { writeFileSync } from 'node:fs';
const result = await mka1.llm.speech.speak({
text: 'Bienvenido a la guía de voz de la API de MKA1.',
language: 'en',
}, { headers: { 'X-On-Behalf-Of': '<end-user-id>' } });
const audioBody = result.body as Blob | Uint8Array;
const audioBuffer = audioBody instanceof Uint8Array
? Buffer.from(audioBody)
: Buffer.from(await audioBody.arrayBuffer());
const languageCode =
result.headers['X-Language-Code'] ?? result.headers['x-language-code'];
writeFileSync('speech.wav', audioBuffer);
console.log(languageCode);
Transmitir voz para menor latencia
Utiliza texto a voz en streaming cuando quieras que la reproducción comience antes de que el archivo de audio esté listo por completo.
Elige mp3 para cargas útiles más pequeñas o pcm para audio sin comprimir.
const result = await mka1.llm.speech.speakStreaming({
text: 'Comienza a reproducir esta respuesta tan pronto como el audio esté listo.',
language: 'en',
format: 'mp3',
}, { headers: { 'X-On-Behalf-Of': '<end-user-id>' } });
const contentType =
result.headers['Content-Type'] ?? result.headers['content-type'];
const languageCode =
result.headers['X-Language-Code'] ?? result.headers['x-language-code'];
console.log(contentType);
console.log(languageCode);
Próximos pasos