> For the complete documentation index, see [llms.txt](https://docs.neuron-ai.dev/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.neuron-ai.dev/neuron-v3-es/proveedores/audio.md).

# Audio

Normalmente, los servicios de audio de IA pura no admiten capacidades agénticas completas como herramientas y conversación. Por lo tanto, puedes usar estos componentes como servicios independientes en un flujo de trabajo agéntico, o usarlos dentro de un agente, ya que implementan la `AIProviderInterface` interfaz. En este caso puedes beneficiarte de funciones del flujo de trabajo agéntico como middleware y guardrails.

Estos componentes pueden ser útiles para crear asistentes de voz locales para una interacción manos libres con los modelos. El flujo típico implica capturar audio, transcribirlo a texto con un servicio separado de Speech-To-Text (STT), enviar ese texto a un agente para su procesamiento y luego usar Text-to-Speech (TTS) para leer la respuesta.

### Como proveedor de agente

```php
namespace App\Neuron;

use NeuronAI\Agent\Agent;
use NeuronAI\Chat\Messages\UserMessage;
use NeuronAI\Providers\AIProviderInterface;
use NeuronAI\Providers\OpenAI\Audio\OpenAITextToSpeech;

class MyAgent extends Agent
{
    protected function provider(): AIProviderInterface
    {
        return new OpenAITextToSpeech(
            key: 'OPENAI_API_KEY',
            model: 'gpt-4o-mini-tts',
            voice: 'alloy',
        );
    }
}

// Ejecutar el agente
$message = MyAgent::make()
    ->chat(new UserMessage("¡Hola!"))
    ->getMessage();

// Recuperar la parte de audio del mensaje (está en formato base64)
$audioBase64 = $message->getAudio()->getContent();

// Guardar el archivo de audio
file_put_contents(__DIR__.'/assets/speech.mp3', base64_decode($audioBase64));
```

### Uso directo

```php
$provider = new OpenAITextToSpeech(
    key: 'OPENAI_API_KEY',
    model: 'gpt-4o-mini-tts',
    voice: 'alloy',
);

// Generar voz a partir de texto
$message = $provider->chat(new UserMessage("Hola, ¡soy el creador del framework Neuron AI!"));

// Recuperar la parte de audio del mensaje (está en formato base64)
$audioBase64 = $message->getAudio()->getContent();

// Guardar el archivo de audio
file_put_contents(__DIR__.'/assets/speech.mp3', base64_decode($audioBase64));
```

## Audio de OpenAI

### Texto a voz

```php
use NeuronAI\Providers\OpenAI\Audio\OpenAITextToSpeech;

$provider = new OpenAITextToSpeech(
    key: 'OPENAI_API_KEY',
    model: 'gpt-4o-mini-tts',
    voice: 'alloy',
);

// Generar voz a partir de texto
$message = $provider->chat(new UserMessage("Hola, ¡soy el creador del framework Neuron AI!"));

// Recuperar la parte de audio del mensaje (está en formato base64)
$audioBase64 = $message->getAudio();

// Guardar el archivo de audio
file_put_contents(__DIR__.'/assets/speech.mp3', base64_decode($audioBase64));
```

### Voz a texto

```php
use NeuronAI\Providers\OpenAI\Audio\OpenAISpeechToText;

$provider = new OpenAISpeechToText(
    key: 'OPENAI_API_KEY',
    model: 'gpt-4o-transcribe',
);

// Transcribir el audio
$message = $provider->chat(
    new UserMessage([
        new TextContent('Este audio trata sobre una lección de matemáticas. Cuida los términos técnicos.'),
        new AudioContent(__DIR__ . '/assets/intro.mp3', SourceType::URL)
    ])
);

// Imprimir el texto obtenido del archivo de audio
echo $message->getContent();
```

## ElevenLabs

### Texto a voz

```php
use NeuronAI\Providers\ElevenLabs\ElevenLabsTextToSpeech;

$provider = new ElevenLabsTextToSpeech(
    key: 'ELEVENLABS_API_KEY',
    model: 'eleven_multilingual_v2',
    voice: 'alloy',
);

// Generar voz a partir de texto
$message = $provider->chat(new UserMessage("Hola, ¡soy Valerio de Italia!"));

// Recuperar la parte de audio del mensaje (está en formato base64)
$audioBase64 = $message->getAudio();

// Guardar el archivo de audio
file_put_contents(__DIR__.'/asserts/speech.mp3', base64_decode($audioBase64));
```

### Voz a texto

```php
use NeuronAI\Providers\ElevenLabs\ElevenLabsSpeechToText;

$provider = new ElevenLabsSpeechToText(
    key: 'ELEVENLABS_API_KEY',
    model: 'scribe_v2',
);

// Transcribir el audio
$message = $provider->chat(
    new UserMessage(
        new AudioContent(__DIR__ . '/assets/intro.mp3', SourceType::URL)
    )
);

// Imprimir el texto obtenido del archivo de audio
echo $message->getContent();
```

## ZAI

### Voz a texto

```php
use NeuronAI\Providers\ZAI\Audio\ZAITranscription;

$provider = new ZAITranscription(
    key: 'ZAI_API_KEY',
    model: 'glm-asr-2512',
);

// Transcribir el audio
$message = $provider->chat(
    new UserMessage(
        new AudioContent(__DIR__ . '/assets/intro.mp3', SourceType::URL)
    )
);

// Imprimir el texto obtenido del archivo de audio
echo $message->getContent();
```
