Neuron v3 支持全面支持多模态(输入与输出)
通常纯 AI 音频服务不支持工具和对话等完整的代理能力。因此,您可以将这些组件作为独立服务在代理工作流程中使用,或者因为它们实现了 AIProviderInterface 接口,可以在代理内部使用。在这种情况下,您可以受益于代理工作流程功能,如中间件和护栏。
这些组件对于创建本地语音助手以实现免提与模型交互非常有帮助。典型的流程包括捕获音频,使用单独的语音转文本(STT)服务将其转录为文本,将文本发送到代理进行处理,然后使用文本转语音(TTS)来朗读响应。
非常适合创建本地语音助手,实现免提(hands-free)与模型的交互。典型流程是:
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
{
protectedfunction provider(): AIProviderInterface
{
returnnew OpenAITextToSpeech(
key: 'OPENAI_API_KEY',
model: 'gpt-4o-mini-tts',
voice: 'alloy',
);
}
}
// 运行 Agent
$message = MyAgent::make()
->chat(new UserMessage("Hi!"))
->getMessage();
// 获取消息中的音频部分(base64 格式)
$audioBase64 = $message->getAudio()->getContent();
// 保存音频文件
file_put_contents(__DIR__ . '/assets/speech.mp3', base64_decode($audioBase64));
$provider = new OpenAITextToSpeech(
key: 'OPENAI_API_KEY',
model: 'gpt-4o-mini-tts',
voice: 'alloy',
);
// 从文本生成语音
$message = $provider->chat(new UserMessage("Hi, I'm the creator of Neuron AI framework!"));
// 获取消息中的音频部分(base64 格式)
$audioBase64 = $message->getAudio()->getContent();
// 保存音频文件
file_put_contents(__DIR__ . '/assets/speech.mp3', base64_decode($audioBase64));
use NeuronAI\Providers\OpenAI\Audio\OpenAITextToSpeech;
$provider = new OpenAITextToSpeech(
key: 'OPENAI_API_KEY',
model: 'gpt-4o-mini-tts',
voice: 'alloy',
);
// 从文本生成语音
$message = $provider->chat(new UserMessage("Hi, I'm the creator of Neuron AI framework!"));
// 获取消息中的音频部分(base64 格式)
$audioBase64 = $message->getAudio();
// 保存音频文件
file_put_contents(__DIR__ . '/assets/speech.mp3', base64_decode($audioBase64));
use NeuronAI\Providers\OpenAI\Audio\OpenAISpeechToText;
$provider = new OpenAISpeechToText(
key: 'OPENAI_API_KEY',
model: 'gpt-4o-transcribe',
);
// 转录音频
$message = $provider->chat(
new UserMessage([
new TextContent('This audio is about a math lesson. Take care of the technical words.'),
new AudioContent(__DIR__ . '/assets/intro.mp3', SourceType::URL)
])
);
// 打印从音频文件中提取的文本
echo $message->getContent();
use NeuronAI\Providers\ElevenLabs\ElevenLabsTextToSpeech;
$provider = new ElevenLabsTextToSpeech(
key: 'ELEVENLABS_API_KEY', // 注意:这里应使用 ElevenLabs 的 key,而不是 OpenAI
// model 和 voice 参数根据 ElevenLabs 实际支持调整(示例中可能沿用 OpenAI 风格,但实际以官方为准)
model: 'eleven_multilingual_v2', // 示例,实际参数请参考 ElevenLabs 文档
voice: 'Rachel', // 示例 voice ID
);
// 从文本生成语音
$message = $provider->chat(new UserMessage("Hi, I'm the creator of Neuron AI framework!"));
// 获取消息中的音频部分(base64 格式)
$audioBase64 = $message->getAudio();
// 保存音频文件(注意原文中这里有拼写错误 asserts,应为 assets)
file_put_contents(__DIR__ . '/assets/speech.mp3', base64_decode($audioBase64));
use NeuronAI\Providers\ElevenLabs\ElevenLabsSpeechToText; // 注意:文档中写的是 OpenAI\Audio\ElevenLabsSpeechToText,可能为笔误
$provider = new ElevenLabsSpeechToText(
key: 'ELEVENLABS_API_KEY',
model: 'whisper-1', // 示例,ElevenLabs 实际可能使用不同模型
);
// 转录音频
$message = $provider->chat(
new UserMessage(
new AudioContent(__DIR__ . '/assets/intro.mp3', SourceType::URL)
)
);
// 打印从音频文件中提取的文本
echo $message->getContent();
https://docs.neuron-ai.dev/providers/audio