Introducci贸n a Node.js
Introducci贸n Node.js
Instalaci贸n y configuraci贸n del entorno de Node.js
Primer proyecto con Node.js
Quiz: Introducci贸n a Node.js
M贸dulos y gesti贸n de paquetes
Tipos de M贸dulos en Node.js
Gesti贸n de Paquetes con NPM
Creaci贸n de un Paquetes con NPM
Publicaci贸n de Paquetes con NPM
Quiz: M贸dulos y gesti贸n de paquetes
M贸dulos nativos en Node.js
Introducci贸n al M贸dulo FS de Node.js
Leer y escribir archivos en Node.js
M贸dulo fs: Implementar transcripci贸n de audio con OpenAI
M贸dulo Console: info, warn, error, table
M贸dulo Console: group, assert, clear, trace
M贸dulo OS: informaci贸n del sistema operativo en Node.js
M贸dulo Crypto: cifrado y seguridad en Node.js
M贸dulo Process: manejo de procesos en Node.js
Timers: setTimeout, setInterval en Node.js
Streams: manejo de datos en tiempo real en Node.js
Buffers: manipulaci贸n de datos binarios en Node.js
Quiz: M贸dulos nativos en Node.js
Servidores con Node.js
HTTP: fundamentos de servidores en Node.js
Servidor nativo y streaming de video en Node.js
No tienes acceso a esta clase
隆Contin煤a aprendiendo! 脷nete y comienza a potenciar tu carrera
La manipulaci贸n de archivos es una habilidad fundamental para cualquier desarrollador de Node.js. En este art铆culo, exploraremos c贸mo crear un script robusto que se comunica con la API de OpenAI para transcribir archivos de audio utilizando el modelo Whisper. Este proceso no solo demuestra el poder del m贸dulo File System (FS) de Node.js, sino que tambi茅n ilustra c贸mo interactuar con APIs externas para crear aplicaciones pr谩cticas y 煤tiles.
Antes de sumergirnos en el c贸digo, es importante entender que estaremos construyendo un script que realizar谩 las siguientes tareas:
Para comenzar, necesitar谩s registrarte en OpenAI y obtener una API key. Esta clave es esencial para autenticar tus solicitudes a la API de Whisper.
Para nuestro script, necesitaremos dos m贸dulos principales:
const fs = require('fs');
const path = require('path');
El m贸dulo FS (File System) nos permite leer y escribir archivos, mientras que el m贸dulo Path nos proporciona utilidades para manejar rutas de archivos y directorios de forma independiente al sistema operativo. Esto es crucial para garantizar que nuestro script funcione correctamente en diferentes plataformas como Windows, macOS o Linux.
Nuestra funci贸n principal ser谩 as铆ncrona y recibir谩 dos par谩metros: la ruta del archivo de audio y la API key de OpenAI.
async function transcriptAudio(audioFilePath, apiKey) {
try {
// Verificar si el archivo existe
if (!fs.existsSync(audioFilePath)) {
throw new Error('El archivo de audio no existe o no tienes un archivo de audio');
}
// Leer el archivo de audio
const audioFile = fs.readFileSync(audioFilePath);
// Crear FormData para la solicitud
const formData = new FormData();
// Crear un blob con el contenido del archivo
const blob = new Blob([audioFile]);
// A帽adir el archivo y el modelo a FormData
formData.append('file', blob, audioFilePath);
formData.append('model', 'whisper-1');
// Realizar la solicitud a la API de Whisper
const response = await fetch('https://api.openai.com/v1/audio/transcriptions', {
method: 'POST',
headers: {
'Authorization': `Bearer ${apiKey}`
},
body: formData
});
// Verificar si la respuesta es correcta
if (!response.ok) {
const errorData = await response.json();
throw new Error(`Error en la API: ${JSON.stringify(errorData)}`);
}
// Obtener los datos de la respuesta
const data = await response.json();
const transcription = data.text;
// Crear la ruta para el archivo de salida
const outputFilePath = path.join(
path.dirname(audioFilePath),
path.basename(audioFilePath, path.extname(audioFilePath)) + '_transcription.txt'
);
// Guardar la transcripci贸n en un archivo
fs.writeFileSync(outputFilePath, transcription);
console.log(`Transcripci贸n guardada en ${outputFilePath}`);
return transcription;
} catch (error) {
console.error('Error durante la transcripci贸n:', error.message);
}
}
Antes de proceder con la transcripci贸n, es crucial verificar si el archivo de audio existe:
if (!fs.existsSync(audioFilePath)) {
throw new Error('El archivo de audio no existe o no tienes un archivo de audio');
}
Esta verificaci贸n nos permite manejar errores de manera elegante y proporcionar informaci贸n 煤til al usuario.
Para enviar el archivo de audio a la API de Whisper, necesitamos formatear los datos correctamente:
const audioFile = fs.readFileSync(audioFilePath);
const formData = new FormData();
const blob = new Blob([audioFile]);
formData.append('file', blob, audioFilePath);
formData.append('model', 'whisper-1');
Primero, leemos el archivo de audio utilizando fs.readFileSync()
. Luego, creamos un objeto FormData
y un Blob
con el contenido del archivo. Finalmente, a帽adimos el archivo y especificamos el modelo de Whisper que queremos utilizar.
La solicitud a la API se realiza utilizando fetch
:
const response = await fetch('https://api.openai.com/v1/audio/transcriptions', {
method: 'POST',
headers: {
'Authorization': `Bearer ${apiKey}`
},
body: formData
});
Es importante incluir la API key en el encabezado de autorizaci贸n y enviar el FormData
como cuerpo de la solicitud.
Una vez que recibimos la transcripci贸n de la API, la guardamos en un archivo de texto:
const outputFilePath = path.join(
path.dirname(audioFilePath),
path.basename(audioFilePath, path.extname(audioFilePath)) + '_transcription.txt'
);
fs.writeFileSync(outputFilePath, transcription);
Utilizamos el m贸dulo path
para construir una ruta de archivo que sea independiente del sistema operativo. La transcripci贸n se guarda en un archivo con el mismo nombre que el archivo de audio original, pero con el sufijo "_transcription.txt".
El manejo de errores es una parte crucial de cualquier aplicaci贸n robusta. En nuestro script, utilizamos un bloque try-catch
para capturar y manejar cualquier error que pueda ocurrir durante el proceso de transcripci贸n:
try {
// C贸digo para la transcripci贸n
} catch (error) {
console.error('Error durante la transcripci贸n:', error.message);
}
Tambi茅n incluimos verificaciones espec铆ficas para manejar errores de la API:
if (!response.ok) {
const errorData = await response.json();
throw new Error(`Error en la API: ${JSON.stringify(errorData)}`);
}
El m贸dulo path
es esencial para garantizar que nuestro script funcione correctamente en diferentes sistemas operativos. Proporciona m茅todos para trabajar con rutas de archivos de manera consistente:
path.dirname()
: Obtiene el directorio de una ruta de archivo.path.basename()
: Obtiene el nombre base de un archivo (sin la ruta).path.extname()
: Obtiene la extensi贸n de un archivo.path.join()
: Une segmentos de ruta en una sola ruta.Estos m茅todos nos permiten construir rutas de archivo que funcionar谩n correctamente en Windows, macOS y Linux.
La combinaci贸n del m贸dulo File System (FS) y el m贸dulo Path nos proporciona herramientas poderosas para trabajar con archivos en Node.js. En este art铆culo, hemos visto c贸mo utilizar estas herramientas para crear un script que transcribe archivos de audio utilizando la API de Whisper de OpenAI. Este ejemplo demuestra c贸mo los conceptos b谩sicos de Node.js pueden aplicarse para crear aplicaciones pr谩cticas y 煤tiles. 驴Has utilizado alguna vez estas t茅cnicas en tus proyectos? Comparte tu experiencia en los comentarios.
Aportes 2
Preguntas 0
驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?