GLOBAL WORK • Mundu osoan Bidalketa · Bezeroak eta proiektuak
🌐 % 100 urrunekoa ⚡ 24 / 7

Ahotseko IA agenteak: Whisper + Kokoro TTS ekoizpenean

2026ko abuztuaren 18a - Euskolabs

Euskolab-en daukagu Charly, ahots laguntzaile hibrido bat, Telegram, web eta APIan 24 / 7 eragile dituena. Hau da gida teknikoa nola eraiki genuen erabiltzeko Azkarragoa ahots-ezagutzerako eta Kokoro TTS sintesirako, lineaz kanpo.

Sistemaren arkitektura

Audio entrada → Whisper (STT) → LLM (razonamiento) → Kokoro (TTS) → Audio salida
                          ↓
                    Ollama (fallback local)
                          ↓
                    Gemini (cloud)

Fluxua sinplea da: erabiltzaileak hitz egiten du, Whisper transcribe, LLM-ak erantzuna sortzen du, Kokoro ahotsez sintetizatzen du. Latentzia osoa 2-4 segundokoa da hardware estandarrean.

Azkarragoa - Ahots-ezagutzea

Azkarrago-Whisper Whisper-en birinplementazio optimizatua da CTranslate2 erabiliz. Jatorrizko Whisper-a baino 4x azkarragoa da zehaztasun berarekin.

from faster_whisper import WhisperModel

model = WhisperModel("base", device="cpu", compute_type="int8")

def transcribe(audio_path):
    segments, info = model.transcribe(audio_path, language="es")
    text = " ".join([s.text for s in segments])
    return text.strip()

Modeloa erabiltzen dugu base pUZaren kasuan, abiadura/doitasun orekarik onena eskaintzen duelako. GPU inguruneetarako, large-v3 ia zehaztasun osoa ematen du.

Kokoro TTS - Ahots naturalaren sintesia

Kokoro iturburu irekiko TTS motorra da, kalitate natural izugarria duena. Hainbat ahots eta hizkuntza onartzen ditu.

import kokoro

# Inicializar con voz por defecto
tts = kokoro.KokoroTTS(model_path="kokoro.pt", voice="em_alex")

def speak(text, output_path="/tmp/response.wav"):
    tts.generate(text, output_path)
    return output_path

Ahotsa em_alex charlyk ekoizpenean erabiltzen duena da, naturala, garbia, erritmo onean. 10 segundoko audio-sorkuntzak 2 segundo baino gutxiago behar ditu PUZean.

LLM atzeko hodeiarekin → lokala

Agentearen burmuinak modu bikoitza erabiltzen du: Gemini hodeian gehienezko edukiera lortzeko eta Olama LLAMA lokalarekin pribatutasunerako eta lineaz kanpo lan egiteko.

import google.generativeai as genai
import ollama

def generate_response(prompt, context=""):
    try:
        # Cloud first — máxima capacidad
        model = genai.GenerativeModel("gemini-pro")
        response = model.generate_content(f"{context}\n\nUser: {prompt}")
        return response.text
    except Exception:
        # Fallback local — privacidad y offline
        response = ollama.chat(
            model="llama3",
            messages=[{"role": "user", "content": f"{context}\n\n{prompt}"}]
        )
        return response["message"]["content"]

Atzerapena automatikoa da: Gemini APIak huts egiten badu (maiztasun-muga, sareko erorketa, etab.), sistemak Ollama lokala erabiltzen du erabiltzaileak etenik gabe.

Integrazioa n8n-ekin

Agentea negozio-prozesuekin konektatzen da n8n webhooks bidez:

import httpx

async def execute_workflow(action, params):
    webhook_url = f"http://n8n:5678/webhook/{action}"
    async with httpx.AsyncClient() as client:
        response = await client.post(webhook_url, json=params)
        return response.json()

Horrek aukera ematen dio agenteari benetako ekintzak egiteko: fakturak sortzeko, mezu elektronikoak bidaltzeko, CRM eguneratzeko, etab.

Benetako hedapena

Charly VPS batean doa Dockerrekin. Whisper eta Kokororen ereduak memorian kargatzen dira hasten direnean. Olama beste zerbitzu bat da. Latentzia osoa:

FaseaDenbora
Whisper (transcription)~ 0,5
LLM (erantzunen belaunaldia)~ 1-2s
Kokoro (ahotsaren sintesia)~ 1-2s
Atzera eta aurrera~ 2-4

Ondorioak

Zure AAko agentea nahi duzu ahots batez? Eskatu diagnostikoa euskolabs. com.

← Itzuli blogera

↑