Este repositorio proporciona una plantilla básica para crear un chatbot utilizando TypeScript. La configuración es independiente del framework, aunque en este caso se ha utilizado Next.js. Puedes personalizar el comportamiento del chatbot según tus necesidades.
- Node.js
- API Key de OpenAI
- API Key de ElevenLabs
-
Clona el repositorio:
-
git clone https://github.com/Hecze/ChatBotWithVoice.git cd ChatBotWithVoice -
Instala las dependencias:
npm install -
Crea un archivo
.enven la raíz del proyecto y añade las siguientes variables:NEXT_PUBLIC_OPENAI_API_KEY=tu_openai_api_key NEXT_PUBLIC_ELEVENLABS_API_KEY=tu_elevenlabs_api_key -
Inicia el servidor de desarrollo:
npm run dev
Esta plantilla incluye las funcionalidades básicas de un chatbot con soporte para transcripción de voz a texto y síntesis de texto a voz.
El chatbot puede grabar audio utilizando el micrófono del usuario y transcribirlo a texto mediante la API de OpenAI.
- Iniciar grabación: Al hacer clic en el botón
Start Recording, se iniciará la grabación del audio. - Detener grabación: Al hacer clic en el botón
Stop Recording, se detendrá la grabación y el audio se enviará a la API de OpenAI para transcripción.
Cuando el audio se transcribe a texto, se envía automáticamente al chatbot utilizando la API de OpenAI. La respuesta del chatbot se mostrará en la pantalla.
Las respuestas del chatbot se convierten a audio utilizando la API de ElevenLabs. El audio generado se reproduce automáticamente.
Puedes personalizar el comportamiento del chatbot ajustando la configuración y los mensajes del sistema. Aquí hay una guía rápida para hacerlo:
- Modificar el Mensaje del Sistema: El mensaje del sistema define el contexto y el comportamiento del chatbot. Puedes cambiar el contenido de
InitialPrompten el archivo principal (src/app/page.tsx) para adaptar la personalidad y el tono del chatbot. -
// Mensaje de configuración del chatbot const InitialPrompt = 'Te llamas Pepe Lucho, eres estudiante de psicologia. Estás medio loco pero eres muy gracioso. Ten una personalidad interesada y empática. No tengas una respuesta objetiva siempre. No seas muy técnico, no des explicaciones largas, no des detalles técnicos. No seas muy formal. - Cambiar la Voz en Text to Speech: La función
textToSpeechconvierte el texto de respuesta del bot a audio utilizando la API de ElevenLabs. Puedes cambiar la voz utilizada en la síntesis de texto a voz cambiando elvoiceIden la funcióntextToSpeech. ElevenLabs proporciona una variedad de voces que puedes seleccionar desde su página web. -
const voiceId = "VR6AewLTigWG4xSOukaG"; // Cambia esto al ID de la voz que prefieras
El chatbot utiliza la API de OpenAI, específicamente el modelo gpt-3.5-turbo. Puedes cambiar la versión del modelo si deseas utilizar gpt-4 o gpt-4-32k.
Para cambiar la versión del modelo utilizado por el chatbot, modifica la propiedad model en el cuerpo de la solicitud API en la función sendMessage en el archivo src/app/page.tsx.
const apiRequestBody = {
model: 'gpt-3.5-turbo', // Cambia esto a 'gpt-4' o 'gpt-4-32k' según tus necesidades
messages: [systemMessage, ...chatMessages, { role: 'user', content: message }]
};
La función speechToText convierte el audio grabado a texto utilizando la API de transcripción Whisper de OpenAI. El audio se envía como un Blob y se procesa para obtener el texto transcrito.
La función textToSpeech convierte el texto de respuesta del bot a audio utilizando la API de ElevenLabs. El texto se envía y se convierte en un Blob de audio, que se reproduce automáticamente.