wujingjing
2025-04-09 28706df7da34b8854cdce96ad89c035eaded6ea9
src/components/chat/components/playBar/hook/useDigitalHuman.ts
@@ -59,6 +59,16 @@
   };
   let isWaitingSpeak = false;
   const speakContent = (content: string) => {
      // 打断之前的已收到xxx
      duix.break();
      isWaitingSpeak = false;
      duix.speak({
         content,
      });
   };
   const initDuix = () => {
      const sign = duixConfig.sign; // sign由服务端生成
      const conversationId = duixConfig.conversationId; // duix平台会话id
@@ -71,7 +81,7 @@
      duix.on('intialSucccess', () => {
         console.info('intialSucccess');
         // 此时初始化成功,可调用start
         duix.start({ conversationId, openAsr: true }).then((res) => {
         duix.start({ conversationId, openAsr: true,wipeGreen:true }).then((res) => {
            console.info('start', res);
         });
      });
@@ -98,7 +108,9 @@
         console.info('speakStart', data);
      });
      duix.on('speakEnd', (data) => {
         if (!isWaitingSpeak) {
         isReceiveRes.value = false;
         }
      });
      duix.on('speakSection', (data) => {
         console.info('speakSection', data);
@@ -108,7 +120,6 @@
      });
      duix.on('asrResult', (data) => {
         console.info('asrResult', data);
         if (isReceiveRes.value) {
            return;
         }
@@ -116,10 +127,10 @@
         let hasResult = false;
         isReceiveRes.value = true;
         try {
            // isWaitingSpeak = true;
            // duix.speak({
            //    content: '已收到您的问题,正在思考中...请稍等',
            // });
            isWaitingSpeak = true;
            duix.speak({
               content: '已收到您的问题,正在思考中...请稍等',
            });
            questionStreamByPost(
               {
                  question: data,
@@ -132,26 +143,16 @@
                  if (chunkRes.mode === 'result' && chunkRes.value?.answer_type === 'knowledge') {
                     const plainText = getPlainText(chunkRes.value);
                     hasResult = true;
                     duix.speak({
                        content: plainText,
                     });
                  }
                  if (!chunkRes.value?.json_ok && chunkRes.value?.err_code === 'MESSAGE') {
                     speakContent(plainText);
                  } else if (!chunkRes.value?.json_ok && chunkRes.value?.err_code === 'MESSAGE') {
                     if (hasResult) return;
                     hasResult = true;
                     isWaitingSpeak = false;
                     duix.speak({
                        content: chunkRes.value.json_msg,
                     });
                     speakContent(chunkRes.value.json_msg);
                  }
                  if (chunkRes.mode === 'finish') {
                     if (!hasResult) {
                        isWaitingSpeak = false;
                        duix.speak({
                           content: '暂时无法口头描述你所说的问题',
                        });
                        speakContent('暂时无法口头描述你所说的问题');
                     } else {
                        hasResult = false;
                     }