开发者社区> 问答> 正文

阿里语音AI实时语音识别中websocket的指令和事件怎么用呀?

阿里语音AI实时语音识别中websocket的指令和事件怎么用呀,问题一:有没有demo?JavaScript vue项目。问题二:这个没有写过,不会啊,求帮助,node的也可以。

展开
收起
jdki652dnjsbo 2023-05-16 12:25:32 407 1
3 条回答
写回答
取消 提交回答
  • 针对问题一的回答:这个没有示例 您可以根据我们的ws协议文档自行实现 参考:https://help.aliyun.com/document_detail/324262.html?spm=a2c4g.84424.0.0.7cf75398vtfnr0 针对问题二的回答:https://help.aliyun.com/document_detail/410564.html?spm=a2c4g.412206.0.0.41067d63U732Ff这个是node.js。--此回答整理自钉群“阿里语音AI【6群】”

    2023-05-16 15:18:11
    赞同 展开评论 打赏
  • CSDN全栈领域优质创作者,万粉博主;InfoQ签约博主;华为云享专家;华为Iot专家;亚马逊人工智能自动驾驶(大众组)吉尼斯世界纪录获得者

    阿里语音AI实时语音识别中使用WebSocket进行通信的方式有两种:

    1. 客户端向服务端发送指令和事件

    在客户端代码中,可以通过WebSocket对象的send()方法向服务端发送指令和事件。其中,指令可以是一些控制命令,比如开始识别、停止识别等;事件可以是一些结果通知,比如识别完成、识别出错等。具体使用方法可以参考以下示例代码:

    const socket = new WebSocket('wss://api.ai.aliyun.com/nlp/v1/service');
    socket.onopen = function() {
      console.log('连接成功');
    };
    socket.onmessage = function(event) {
      const result = JSON.parse(event.data);
      console.log(result.result[0].words[0]); // 输出识别结果
    };
    socket.onclose = function() {
      console.log('连接关闭');
    };
    // 发送指令
    socket.send('start');
    // 发送事件
    socket.send('recognition_finished', { result: 'hello' });
    
    1. 服务端向客户端发送指令和事件

    在服务端代码中,可以通过WebSocket对象的send()方法向客户端发送指令和事件。具体使用方法可以参考以下示例代码:

    @Configuration
    public class WebSocketConfig implements WebSocketConfigurer {
      @Override
      public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
        registry.addHandler(new WebSocketHandler(), "/ws").setAllowedOrigins("*");
      }
    }
    
    @Component
    public class WebSocketHandler extends TextWebSocketHandler {
      private Map<String, List<TextWebSocketFrame>> outputQueue = new ConcurrentHashMap<>();
      private Map<String, Boolean> exitFlag = new ConcurrentHashMap<>();
    
      @Override
      public void handleTextMessage(WebSocketSession session, TextMessage message) throws Exception {
        super.handleTextMessage(session, message);
        Object[] args = message.getPayload().split("\\|");
        String cmd = (String) args[0];
        if (cmd.equals("start")) { // 发送指令
          List<TextWebSocketFrame> frames = new ArrayList<>();
          String result = recognizer.start(); // 执行识别任务并获取结果帧列表
          int count = frames.size();
          for (int i = 0; i < count; i++) {
            TextWebSocketFrame frame = new TextWebSocketFrame(result.substring(i * 100, (i + 1) * 100)); // 将结果拼接成文本帧并添加到帧列表中
            frames.add(frame);
          }
          TextWebSocketFrame frame = new TextWebSocketFrame("{\"cmd\":\"stop\"}"); // 发送停止指令帧
          frames.add(frame); // 将停止指令帧添加到帧列表中
          ByteBuffer buffer = ByteBuffer.wrap(serialize(frames)); // 将帧列表序列化为字节数组并包装成ByteBuffer对象
          session.sendMessage(buffer); // 将字节数组发送给客户端
        } else if (cmd.equals("recognition_finished")) { // 发送事件(识别完成)
          String resultJson = recognizer.finish(); // 从识别器中获取识别结果JSON字符串
          TextWebSocketFrame frame = new TextWebSocketFrame(resultJson); // 将识别结果JSON字符串转换为文本帧并添加到帧列表中
          ByteBuffer buffer = ByteBuffer.wrap(serialize(frame)); // 将帧列表序列化为字节数组并包装成ByteBuffer对象
          session.sendMessage(buffer); // 将字节数组发送给客户端
        } else if (exitFlag.containsKey(cmd)) { // 如果已经退出,则直接忽略消息
          TextWebSocketFrame frame = new TextWebSocketFrame("{\"error\":\"already_exit\"}"); // 防止误操作,将错误信息添加到帧列表中并发送给客户端
          ByteBuffer buffer = ByteBuffer.wrap(serialize(frame)); // 将帧列表序列化为字节数组并包装成ByteBuffer对象
          session.sendMessage(buffer); // 将字节数组发送给客户端
    2023-05-16 14:10:20
    赞同 展开评论 打赏
  • 问题一:有没有demo?JavaScript vue项目。

    是的,阿里云提供了针对 JavaScript 的语音实时识别的 Demo 代码,您可以在 GitHub 上找到相关代码。这是一个完整的 Vue.js 项目,其中包含了实现语音识别的示例代码,可以供您参考使用。

    链接:https://github.com/aliyun/voiceass-frontend

    问题二:这个没有写过,不会啊,求帮助,node的也可以。

    不用担心,阿里云的官方文档中提供了详细的 WebSocket API 文档,您可以根据文档中提供的说明来实现语音识别系统。同时,官方还提供了一些代码示例,您可以通过参考示例代码来实现实时语音识别功能。

    以下是官方文档的链接,供您参考:

    • WebSocket API 文档:https://help.aliyun.com/document_detail/165304.html
    • WebSocket API JavaScript 示例代码:https://github.com/aliyun/aliyun-nls-websocket-demo/tree/master/javascript
    • WebSocket API Node.js 示例代码:https://github.com/aliyun/aliyun-nls-nodejs-sdk/tree/master/demo/nls-nodejs-ws-websocket

    希望这些信息能够帮助您实现您的语音识别系统。

    2023-05-16 14:04:42
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
2023云栖大会:PolarDB for AI 立即下载
2023云栖大会:Lindorm一站式AI数据平台实战 立即下载
释放算力潜能加速应用构建Serverless为AI创新提速 立即下载