JC_Hangzhou 2024-04-12 16:34 采纳率: 50%
浏览 20
已结题

数字人像素流送无法获取浏览器麦克风权限

希望将UE5蓝图开发的数字虚拟人,通过像素流置于Web浏览器进行语音问答。实际像素流送到浏览器上,无法调取浏览器的语音权限,具体表现为语音问答没有收入,请问这种情况该如何处理?

  • 写回答

3条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-04-12 16:34
    关注

    引自免费微信小程序:皆我百晓生

    为了在 UE5 蓝图中实现数字人与 Web 浏览器之间的语音交互,你需要遵循以下步骤来解决浏览器麦克风权限的问题:

    1. 设置跨域访问: 由于同源策略的限制,一个页面(例如:Web 浏览器)只能访问来自相同源(协议、域名、端口)的数据。确保你的服务器设置了正确的CORS(Cross-Origin Resource Sharing)头,允许Web浏览器向你的服务器发送请求。

      // 在你的服务器端代码中设置CORS头
      app.use(function(req, res, next) {
        res.setHeader('Access-Control-Allow-Origin', '*'); // 允许所有来源访问
        res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS');
        res.setHeader('Access-Control-Allow-Headers', 'Content-Type');
        next();
      });
      
    2. 启用WebRTC: 为了实现实时音频流传输,你需要使用WebRTC技术。在UE5中,可以通过第三方插件(如SimpleRTCMediaStack)或者自定义模块来集成WebRTC功能。

    3. 创建WebRTC连接: 在UE5蓝图中,你需要创建一个WebRTC连接到你的后端服务器,然后从后端服务器转发语音数据到Web浏览器。这通常涉及以下步骤:

      • 初始化WebRTC连接。
      • 获取浏览器的本地媒体流(包括音频和视频)。
      • 创建offer/answer交换,用于建立对等网络连接。
      • 将offer/answer信息通过WebSocket或其他通信方式发送给后端服务器。
      • 后端服务器转发这些信息给其他客户端(在这种情况下是数字人)。
    4. 处理浏览器的权限请求: 当你尝试获取浏览器的麦克风权限时,会弹出一个提示窗口。用户必须手动允许这个权限。在JavaScript中,你可以这样请求权限:

      navigator.mediaDevices.getUserMedia({ audio: true })
        .then(function(stream) {
          // 得到了媒体流,可以开始处理音频数据了
        })
        .catch(function(error) {
          console.error('Error getting user media:', error);
        });
      
    5. 处理音频数据: 在得到音频流之后,你可以监听stream.getAudioTracks()[0].ondataavailable事件,从中获取音频数据。然后,把这些数据编码成适合WebRTC的格式(如Opus),并发送给服务器。

    6. 在服务器端转发音频数据: 服务器接收到音频数据后,将其转发给数字人所在的客户端。

    7. 在数字人客户端处理音频数据: 数字人客户端接收到来自服务器的音频数据,解码后进行语音识别,并根据识别结果生成相应的反馈。

    8. 发送反馈回浏览器: 反馈同样通过WebRTC或WebSocket发送回浏览器,然后在Web页面中播放出来。

    由于UE5主要是游戏引擎,可能不支持所有的WebRTC功能,因此你可能需要结合JavaScript和Node.js等技术来完成整个流程。此外,确保所有涉及到的安全性和隐私问题都得到了妥善处理,比如加密数据传输,以及遵守相关的隐私政策。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 6月4日
  • 已采纳回答 5月27日
  • 创建了问题 4月12日

悬赏问题

  • ¥15 用visualstudio2022创建vue项目后无法启动
  • ¥15 x趋于0时tanx-sinx极限可以拆开算吗
  • ¥500 把面具戴到人脸上,请大家贡献智慧
  • ¥15 任意一个散点图自己下载其js脚本文件并做成独立的案例页面,不要作在线的,要离线状态。
  • ¥15 各位 帮我看看如何写代码,打出来的图形要和如下图呈现的一样,急
  • ¥30 c#打开word开启修订并实时显示批注
  • ¥15 如何解决ldsc的这条报错/index error
  • ¥15 VS2022+WDK驱动开发环境
  • ¥30 关于#java#的问题,请各位专家解答!
  • ¥30 vue+element根据数据循环生成多个table,如何实现最后一列 平均分合并