
# 常见问题
#### 数字人智能交互Web SDK安装包里为什么有图片资源？
数字人智能交互Web SDK里面包含图片资源，是因为智能交互的动效、背景可能需要图片资源才能展示更好的效果。所以数字人智能交互Web SDK为了方便用户集成使用，会同时包含UI相关资源。
 #### speechRecognized和semanticRecognized通知的流式返回有什么差异？
差异如下所示：
- [speechRecognized](https://support.huaweicloud.com/api-metastudio/metastudio_08_0011.html#metastudio_08_0011__section271305852612)的流式返回是覆盖式返回。后一条通知中的text字段值包含前一条通知的内容。例如：第一条通知的text值为"你吃"，第二条新识别了"饭了么"，则第二条text值为"你吃饭了么"。
- [semanticRecognized](https://support.huaweicloud.com/api-metastudio/metastudio_08_0011.html#metastudio_08_0011__section18490535558)的流式返回是分段式返回。后一条通知中的text字段值与前一条通知的内容是上下衔接关系。例如：第一条通知的text为"你吃"，第二条新返回了"饭了么"，则第二条text值为"饭了么"，需要将两条通知的text值拼接在一起才是完整的内容。
 
#### 文本问答的用法
智能交互默认是语音问答，如需使用文本问答，需要切换模式。可以通过下述2种方式处理：
- 在开始对话时设置。使用[startChat](https://support.huaweicloud.com/api-metastudio/metastudio_08_0010.html#metastudio_08_0010__section27858142719)接口开启对话时，设置成文本问答模式，如下所示：
  ```
  const { result } = await HwICSUiSdk.startChat({ interactionMode: 'TEXT' });
  ```
  
- 在对话过程中设置。如果已经调用startChat，且处于语音问答模式下，则可以调用[interactionModeSwitch](https://support.huaweicloud.com/api-metastudio/metastudio_08_0010.html#metastudio_08_0010__section1851092215536)接口修改为文本问答模式，如下所示：
  ```
  const { result } = await HwICSUiSdk.interactionModeSwitch({ interactionMode: 'TEXT' });
  ```
  
切换至文本问答模式后，就可以通过接口[sendTextQuestion](https://support.huaweicloud.com/api-metastudio/metastudio_08_0010.html#metastudio_08_0010__section09411581745)进行文本问答了。
#### 数字人主动播报与文本问答的区别是什么？
智能交互同时支持数字人主动播报和文本问答两种能力，两者都是通过文字驱动数字人讲话。
区别如下所示：
- 主动播报：主动播报是直接将[sendDrivenText](https://support.huaweicloud.com/api-metastudio/metastudio_08_0010.html#metastudio_08_0010__section089082215562)接口传入的文本作为数字人播报内容，来驱动数字人讲话。
- 文本问答：文本问答是使用[sendTextQuestion](https://support.huaweicloud.com/api-metastudio/metastudio_08_0010.html#metastudio_08_0010__section09411581745)接口输入文本问题，将大模型返回内容作为数字人播报内容，而不是直接播报问题。
 
#### 为什么要定制语音唤醒模型？
根据唤醒词定制的唤醒模型，可以提升唤醒词的准确率。
#### 能否直接在本地修改唤醒词？
不行。模型和唤醒词是绑定的，不支持本地修改唤醒词。
#### 集成WebSDK的网页加载时自动调用create接口创建数字人，但是后续的数字人播报为啥没有声音？
原因请参考[媒体和Web Audio API 的自动播放指南](https://developer.mozilla.org/zh-CN/docs/Web/Media/Autoplay_guide#自动播放和阻止自动播放)，所以出现数字人没声音的问题时，建议按照下述步骤排查并做出相应处理。
1. 添加按钮点击触发[create](https://support.huaweicloud.com/api-metastudio/metastudio_08_0010.html#metastudio_08_0010__section2207826163312)接口后，测试是否有声音。如果有声音，就是浏览器的安全策略导致，需要引导用户在[create](https://support.huaweicloud.com/api-metastudio/metastudio_08_0010.html#metastudio_08_0010__section2207826163312)之前点击页面。
2. 检查扬声器设备是否正常。
3. 如果有增删扬声器设备的行为，请刷新或重新打开挂载数字人的页面后重试。如果还不行，请参考第二条，检查设备是否正常。
 
#### 自定义聊天按钮如何对应数字人聊天状态？
数字人聊天过程中，有如下状态：
- 休眠，收到[enterSleep](https://support.huaweicloud.com/api-metastudio/metastudio_08_0011.html#metastudio_08_0011__section11118134634114)通知。
- 等待识别，收到[enterActive](https://support.huaweicloud.com/api-metastudio/metastudio_08_0011.html#metastudio_08_0011__section16771235647)通知。
- 识别中，第一次收到[speechRecognized](https://support.huaweicloud.com/api-metastudio/metastudio_08_0011.html#metastudio_08_0011__section271305852612)通知。
- 思考中，收到通知[speechRecognized](https://support.huaweicloud.com/api-metastudio/metastudio_08_0011.html#metastudio_08_0011__section271305852612)中的参数"isLast"值为"true"。
- 回答中，第一次收到[semanticRecognized](https://support.huaweicloud.com/api-metastudio/metastudio_08_0011.html#metastudio_08_0011__section18490535558)通知。
- 回答结束，收到[speakingStop](https://support.huaweicloud.com/api-metastudio/metastudio_08_0011.html#metastudio_08_0011__section1327017912301)通知。
上述提供的数字人聊天状态对应关系，仅为数字人智能交互Web SDK提供的样例，用户可以根据实际场景自行处理。
#### 数字人智能交互Web SDK显示默认的按钮以及字体大小比演示页面大怎么解决？
数字人智能交互Web SDK的CSS样式是基于两种尺寸1920\*1080（PC版）和1080\*1920（移动版、大屏版）进行最优布局的，CSS文件里面宽高的单位都是px。所以在移动端等屏幕尺寸较小的设备上，SDK内置字体大小、按钮大小均会比例展示失衡，字会比较大。因此提供如下两种解决方案：
1. 不使用数字人智能交互Web SDK内置的默认按钮和聊天列表等组件，通过SDK提供的接口和通知自行开发对应的操作UI界面；
2. 使用对应编译工具中类似px2rem功能的插件，将数字人智能交互Web SDK自带CSS文件中的px转为rem，在根节点上面通过控制font-size属性来调整字体、按钮等的相对尺寸。
 
#### 为什么使用接口addEventListeners注册回调有时候不生效？
部分用户按照下面方式注册回调，发现回调注册没生效。
```
HwICSUiSdk.create({
  serverAddress: 'metastudio-api.cn-north-4.myhuaweicloud.com',
  onceCode: 'aaa',
  robotId: 'aaa',
  containerId: 'ics-sdk',
});
HwICSUiSdk.addEventListeners({
  error: (icsError) => {
    console.error('icsError', icsError);
  },
  jobInfoChange: (jobInfo) => {
    console.info('jobInfoChange', jobInfo);
  } 
});
```
这是因为create接口里面，有异步重置回调的操作，如果不进行接口调用时序控制的话，addEventListeners接口会先于create中重置回调的逻辑执行，这就导致刚注册上的回调又被重置了，重置的效果就是清空了。那么怎么进行有效的回调注册呢？有以下两种方式（推荐方式一）：
- 方式一：在create接口中直接注册，如下所示：
  ```
  HwICSUiSdk.create({
    serverAddress: 'metastudio-api.cn-north-4.myhuaweicloud.com',
    onceCode: 'aaa',
    robotId: 'aaa',
    containerId: 'ics-sdk',
    eventListeners: {
      error: (icsError) => {
        console.error('icsError', icsError);
      },
      jobInfoChange: (jobInfo) => {
        console.info('jobInfoChange', jobInfo);
      }
    }
  });
  ```
  
- 方式二：控制接口调用的时序，在create接口执行结束后再注册，如下所示：
  ```
  async function init(){
    await HwICSUiSdk.create({
      serverAddress: 'metastudio-api.cn-north-4.myhuaweicloud.com',
      onceCode: 'aaa',
      robotId: 'aaa',
      containerId: 'ics-sdk',
    });
    HwICSUiSdk.addEventListeners({
      error: (icsError) => {
        console.error('icsError', icsError);
      },
      jobInfoChange: (jobInfo) => {
        console.info('jobInfoChange', jobInfo);
      } 
    });
  }
  init();
  ```
  
 
#### 如果控制台开启静默退出时长，无对话一段时间后为什么会报错999000002，并重新开始交互？
因为3.3.1之前的数字人智能交互Web SDK版本不支持控制台开启静默退出时长，所以会报错999000002。可参考下述方案处理：
- 在MetaStudio控制台关闭静默退出时长，详细操作请参见[对话配置](https://support.huaweicloud.com/usermanual-metastudio/metastudio_05_0115.html#section2)。
- 将数字人智能交互Web SDK版本升级至3.3.1或以上版本。
 
#### 发现数字人语速与字幕逐字显示速度不一样怎么办？
可以在控制台通过微调数字人语速进行适配，操作方法详见智能交互[对话配置](https://support.huaweicloud.com/usermanual-metastudio/metastudio_05_0115.html#section2)页签对声音的语速配置。
#### 支持使用http协议进行数字人交互吗？
默认不支持，因为浏览器默认会限制http协议的不安全网站的麦克风权限，包括访问全局变量navigator.mediaDevices的权限。
如果是通过localhost方式访问页面，不会受到浏览器的这个限制，但是其他IP或者域名方式访问页面，就会受到限制。可通过修改浏览器配置的方式来支持HTTP协议进行数字人交互，下面以chrome为例进行说明。
在浏览器中打开"chrome://flags"，启用"Insecure origins treated as secure"，并添加您的网页IP或域名，然后重启浏览器即可。
![](https://support.huaweicloud.com/api-metastudio/zh-cn_image_0000002530644129.png)
