Appearance
VoiceToon JSON 形象初始化说明
初始化属性
| 属性名 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
| appId | string | ✅ | 智能体开放平台应用 ID 鉴权说明 | |
| appAuthToken | string | ✅ | SDK 接入 token 鉴权说明 | |
| animateUrl | string | ✅ | - | 动画数据地址,本地资源请使用 file:// 协议 |
| idleFrames | array | ✅ | - | 空闲帧定义,允许多个; e.g. [[0, 10], [10, 20]] |
| talkFrames | array | ✅ | - | 讲述帧定义,允许多个; e.g. [[0, 10], [10, 20]] |
| thinkFrames | array | ✅ | - | 思考帧定义,允许多个; e.g. [[0, 10], [10, 20]] |
| idleTime | number | 3000 | 空闲帧启动时间,指定时间无动作则自动播放空闲帧 | |
| talkRules | object | - | 朗读读音纠错规则 查看详情 |
talkRules
提示
若您需要使用智能体页面的读音规则请对接 获取机器人文字发音配置接口
| 属性名 | 类型 | 是否必填 | 示例格式 | 说明 |
|---|---|---|---|---|
| phoneticRules | Array | 否 | [{ scene: "丽水市", pronunciation: "li2 shui3 shi4" }] | 拼音标注规则 |
| regexRules | Array | 否 | [{"scene": "文档编码:(\d+)\/ks", flag:"g", "pronunciation": "$1-ks"}] | 正则替换规则 |
| textRules | Array | 否 | [{ "scene": "丽水市", "pronunciation": "丽水", flag: "g" }] | 文本替换规则 |
实例方法
| 方法签名 | 说明 |
|---|---|
talk(text:string, options?:{ intercept?:boolean = true }) => void | 触发语音朗读, intercept = false 时允许连续多次调用而不打断前序朗读 |
on(event: string, callback: function) => void | 监听事件 |
once(event: string, callback: function) => void | 监听事件(仅监听一次,触发后自动取消监听) |
off(event: string, callback?: function) => void | 关闭事件监听 |
setLocale(locale:string) => void | 切换多语言设置 |
setVolume(volume:number, duration?:number) => void | 设置音量,第一个参数为音量(0-1),第二个参数为淡入淡出过渡时间(ms) |
setSpeed(volume:number) => void | 设置语音倍速,值为 0.5-2.5,设置后下次调用 talk 生效 |
playThinkingAnimation() => void | 随机播放一个思考动画(需要动画拥有thinkFrames) |
stopAnimation() => void | 停止动画播放 |
playAnimationBySegment(animation: String | Array, options: { loop?: boolean }) => void | 播放指定动画 |
pause() => void | 暂停语音 |
resume() => void | 恢复语音(不能恢复被 intercept中断的语音) |
intercept() => void | 中断语音 |
destroy() => void | 销毁形象 |
事件
| 事件名称 | 回调签名 | 说明 |
|---|---|---|
| analysis | (isMute: boolean, data: Float32Array[]) => void | 音频时点分析事件,第一个参数为当前是否静音,第二个参数为的音频数据采样 |
| speakControl | (status: boolean) => void | 语音控制开关状态变更 |
| talkStart | (e: Event) => void | 语音播放时触发 |
| talkEnd | (e: Event) => void | 语音播放结束时触发 |
| loadProgress | (percent: number) => void | 形象加载进度变化 |
| loadComplete | (percent: number) => void | 形象加载完成 |
| wakeup | () => void | 语音唤醒成功 |
| asrStart | (status: boolean) => void | 语音识别开启 |
| asrStop | (status: boolean) => void | 语音识别关闭 |
| animationStart | (animationName: String | Array) => void | 开始播放动画 |
| animationEnd | (animationName: String | Array) => void | 停止播放动画(被打断的动画不会触发该事件) |
| asrControl | (status: boolean) => void | 点击形象上的 ASR 控制开关时返回 ASR 启用状态 |
| asrResult | (text: string) => void | ASR 语音识别成功 |
| asrError | (error: Error) => void | ASR 语音识别触发异常 |
| localeChange | (locale: string) => void | 多语言切换时触发,提供当前使用的新语言 |
| error | (error: string) => void | 运行时异常捕获 |
示例代码
javascript
const VoiceToonBotForJSON = VoiceToonBot.VoiceToonBotForJSON;
const options = {
appId: "your_app_id",
appAuthToken: "your_app_auth_token",
animateUrl:
"https://robot-static.chaoxing.com/robot-res/voicetoonbot/202401231940.json",
idleFrames: [[1, 17]],
talkFrames: [[71, 150]],
idleTime: 3000,
};
try {
const bot = new VoiceToonBotForJSON(options);
} catch (error) {
// 初始化异常捕获
}
bot.on("error", (error) => {
// 运行时异常捕获
});
bot.on("loadComplete", () => {
console.log("加载成功做点什么");
});