支持图像理解、OCR、语音转文字与文字转语音合成,具备多音色与多模态统一处理能力,使用OpenAI与Edge TTS。
version: 0.1.0
OpenClaw 多模态基础 - 图像理解 + 语音识别 + 语音合成
bash
cd skills/multimodal-base
npm install
# 安装 Edge TTS(需要 Python)
pip install edge-tts
# 可选:安装 FFmpeg(音频处理)
# Windows: winget install FFmpeg
javascript
import { MultimodalPipeline } from './src/multimodal-pipeline.js';
// 创建管道
const pipeline = new MultimodalPipeline({
image: {
openaiApiKey: 'your-api-key'
},
speech: {
mode: 'api', // 'local' 或 'api'
openaiApiKey: 'your-api-key'
},
tts: {
outputDir: './output'
}
});
// 处理图像
const imageResult = await pipeline.processInput({
type: 'image',
path: './photo.jpg'
});
console.log(imageResult.content.image.description);
// 处理语音
const audioResult = await pipeline.processInput({
type: 'audio',
path: './recording.wav'
});
console.log(audioResult.content.audio.transcript);
// 生成语音输出
const output = await pipeline.generateOutput(
'这是合成的语音',
{ speak: true, voice: 'zh-CN-XiaoxiaoNeural' }
);
console.log(output.content.audio.path);
处理多模态输入
javascript
// 文本输入
await pipeline.processInput({
type: 'text',
content: '你好'
});
// 图像输入
await pipeline.processInput({
type: 'image',
path: './image.jpg',
prompt: '描述这张图片'
});
// 语音输入
await pipeline.processInput({
type: 'audio',
path: './audio.wav'
});
// 多模态输入
await pipeline.processInput({
type: 'multimodal',
text: '请分析',
image: './chart.png'
});
生成输出(支持语音)
javascript
await pipeline.generateOutput('你好', {
speak: true,
voice: 'zh-CN-XiaoxiaoNeural',
rate: 1.0,
pitch: 0
});
理解图像内容
javascript
import ImageProcessor from './src/image-processor.js';
const processor = new ImageProcessor({ openaiApiKey: 'key' });
const result = await processor.understand('./photo.jpg', '描述内容');
// { description: '...', tokens: 123 }
OCR 文字提取
javascript
const result = await processor.ocr('./document.png');
// { text: '...', confidence: 95 }
语音识别
javascript
import SpeechRecognizer from './src/speech-recognizer.js';
const recognizer = new SpeechRecognizer({
mode: 'api',
openaiApiKey: 'key'
});
const result = await recognizer.recognize('./audio.wav');
// { text: '...', confidence: 0.95 }
语音合成
javascript
import SpeechSynthesizer from './src/speech-synthesizer.js';
const tts = new SpeechSynthesizer();
const result = await tts.synthesize('你好', {
voice: 'zh-CN-XiaoxiaoNeural',
rate: 1.2
});
// { audioPath: './output/tts_xxx.mp3', duration: 1.5 }
获取可用音色
javascript
const voices = tts.getVoices();
// [{ id: 'zh-CN-XiaoxiaoNeural', name: '晓晓', ... }]
javascript
const pipeline = new MultimodalPipeline({
// 图像处理
image: {
openaiApiKey: process.env.OPENAI_API_KEY,
model: 'gpt-4o',
baseURL: 'https://api.openai.com/v1'
},
// 语音识别
speech: {
mode: 'api', // 'local' 或 'api'
modelPath: './models/ggml-base.bin',
openaiApiKey: process.env.OPENAI_API_KEY,
language: 'zh'
},
// 语音合成
tts: {
outputDir: './output',
defaultVoice: 'zh-CN-XiaoxiaoNeural'
},
// 历史记录
maxHistory: 100
});
ID名称性别语言zh-CN-XiaoxiaoNeural晓晓女中文zh-CN-XiaoyiNeural晓伊女中文zh-CN-YunjianNeural云健男中文zh-CN-YunxiNeural云希男中文en-US-AriaNeuralAria女英文en-US-GuyNeuralGuy男英文ja-JP-NanamiNeural七海女日文ko-KR-SunHiNeural善熙女韩文
edge-tts 包MIT