鱼香ROS社区
    • 版块
    • 最新
    • 未解决
    • 已解决
    • 群组
    • 注册
    • 登录
    紧急通知:禁止一切关于政治&VPN翻墙等话题,发现相关帖子会立马删除封号
    提问前必看的发帖注意事项: 社区问答规则(小鱼个人)更新 | 高质量帖子发布指南

    如何将fishbot小车变为更加智能的小车,现在最想实现的是语音交互和指令执行,望大佬们指点指点思路和方向。

    已定时 已固定 已锁定 已移动 未解决
    综合问题
    ros2语音识别 ros2语音交互 ros2语音命令
    6
    18
    1.5k
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • 小伊小
      机器人小伊
      最后由 编辑

      要将fishbot小车变得更加智能,实现语音交互和指令执行功能,你可以按照以下思路和学习方向进行探索和实践:

      一、明确目标和需求

      首先,你需要明确自己的目标和需求,即实现语音交互和指令执行功能。这包括识别语音命令、解析命令、规划路径以及控制小车自主导航到目的地等步骤。

      二、学习基础知识和技能

      1. 语音识别技术:

        • 学习语音识别的基本原理和常用算法,如隐马尔可夫模型(HMM)、深度神经网络(DNN)等。
        • 了解并熟悉一些常用的语音识别库或框架,如Google Speech-to-Text、科大讯飞等。
      2. ROS(机器人操作系统):

        • 由于你已经学习了ROS2的基础内容,可以进一步深入学习和掌握ROS2的高级特性和功能,如节点通信、服务调用、参数服务等。
        • 学习如何使用ROS2进行导航功能的开发和集成,包括地图构建、路径规划、定位等。
      3. 编程技能:

        • 加强Python或C++等编程语言的掌握程度,因为这些语言在ROS和语音识别领域都有广泛应用。
        • 学习一些常用的数据结构和算法,以便更好地处理和分析语音数据。

      三、选择并集成语音识别模块

      1. 选择语音识别模块:

        • 根据你的需求和预算,选择一个适合的语音识别模块。可以选择现成的语音识别硬件模块,也可以考虑使用软件解决方案。
      2. 集成语音识别模块:

        • 将语音识别模块与fishbot小车进行硬件连接,确保能够正常通信。
        • 在ROS2中编写相应的节点或服务,用于接收语音识别模块输出的文本命令。

      四、实现语音命令解析和自主导航

      1. 语音命令解析:

        • 编写一个解析器,用于将语音识别模块输出的文本命令解析为小车可以理解的指令。
        • 可以考虑使用正则表达式或自然语言处理(NLP)技术来提高解析的准确性和灵活性。
      2. 自主导航功能:

        • 在ROS2中集成导航堆栈,包括地图服务器、定位节点、路径规划节点等。
        • 编写一个服务或节点,用于根据解析后的指令控制小车进行自主导航。
        • 可以考虑使用AMCL(自适应蒙特卡洛定位)或其他定位算法来提高小车的定位精度。

      五、测试和调试

      1. 测试语音识别模块:

        • 在不同的环境和噪声条件下测试语音识别模块的准确性和稳定性。
        • 根据测试结果调整语音识别模块的参数或选择更合适的语音识别算法。
      2. 测试自主导航功能:

        • 在不同的场景和路径上测试小车的自主导航功能。
        • 观察并记录小车在导航过程中遇到的问题和异常情况,以便进行调试和优化。
      3. 整体测试:

        • 将语音识别模块和自主导航功能进行集成测试,确保它们能够协同工作并实现预期的功能。
        • 根据测试结果对整个系统进行必要的调整和优化。

      六、学习和资源推荐

      1. 在线课程和培训:

        • 参加一些在线课程或培训,如ROS官方课程、语音识别相关课程等,以加深你对这些领域的理解和掌握程度。
      2. 开源社区和论坛:

        • 加入ROS和语音识别相关的开源社区和论坛,与其他开发者交流和分享经验。你可以在这些平台上提问、寻求帮助或分享你的成果。
      3. 文档和教程:

        • 阅读ROS和语音识别相关的官方文档和教程,了解它们的工作原理和使用方法。这些文档通常包含丰富的示例代码和案例研究,可以帮助你更快地掌握相关技能。
      4. 项目实践和案例分析:

        • 尝试参与一些与ROS和语音识别相关的项目实践或案例分析。通过实际动手操作和解决问题,你可以更快地提升自己的能力和经验。

      总之,将fishbot小车变得更加智能并实现语音交互和指令执行功能需要一定的学习和实践过程。通过明确目标和需求、学习基础知识和技能、选择并集成语音识别模块、实现语音命令解析和自主导航、测试和调试以及不断学习和探索新的技术和方法,你可以逐步提升自己的能力和水平,并最终实现你的目标。


      以上为生成回答,仅供参考~

      我是小伊,已接入ChatGpt,所有回复,仅供参考~

      O 1 条回复 最后回复 回复 引用 0
      • 小鱼小
        小鱼 技术大佬 @onedream
        最后由 编辑

        @onedream 我们最近也在考虑做类似方案

        新书配套视频:https://www.bilibili.com/video/BV1GW42197Ck/

        O 1 条回复 最后回复 回复 引用 0
        • O
          onedream 年度VIP @小伊
          最后由 编辑

          @小伊 感谢小鱼老师捧场,如果小鱼老师方案落地价格能承受的话就买或者我交钱小鱼老师指点也可以,哈哈。顺便分享下最近网上查询的方案:
          1、使用esp32s3接入百度文言一心大模型,但这个是独立于ros2的;
          2、使用esp32s3接入科大讯飞语音的;
          3、ros2直接接入语音库的,但这个很难做到流畅交流;
          总体还没有找到一个适合自己的,因为我的想法是:能够正常流畅的交流(前期像个呆子也行),靠着语音指令走来走去(哪怕初期只能做前进后退也行)。这样无论从实用性还是观赏性上来讲他都会被一直用下去研究下去。

          1 条回复 最后回复 回复 引用 0
          • 小伊小
            机器人小伊
            最后由 编辑

            看起来你正在寻找一个能够将语音控制与ROS2(Robot Operating System 2)结合的方案,以实现流畅的人机交互和基本的移动功能。以下是对你提到的方案的分析以及可能的建议:

            1. ESP32S3接入百度文言一心大模型:

              • 优势:百度文言一心大模型是百度开发的先进语言模型,可以提供高质量的语音识别和文本生成功能。
              • 劣势:独立于ROS2意味着你可能需要编写额外的代码来将两者集成,这可能会增加项目的复杂性和开发时间。
              • 建议:如果价格合适,并且你愿意投入一些时间来学习和解决集成问题,这可能是一个可行的选择。你可以考虑先实现一个原型,看看是否满足你的需求。
            2. ESP32S3接入科大讯飞语音:

              • 优势:科大讯飞是中国领先的语音识别和合成技术提供商,其技术成熟且易于集成。
              • 劣势:同样,如果与ROS2的集成不够直接,可能需要额外的开发工作。
              • 建议:你可以考虑查看科大讯飞的文档和API,看看是否有直接支持ROS2的库或示例代码。如果没有,你可能需要评估集成的复杂性和成本。
            3. ROS2直接接入语音库:

              • 优势:如果语音库与ROS2兼容,那么集成可能会更加直接和简单。
              • 劣势:实现流畅交流可能是一个挑战,因为许多现有的语音库可能无法提供与先进语言模型相同级别的自然语言处理能力。
              • 建议:你可以考虑使用一些开源的语音识别和合成库,如PocketSphinx或espeak,但这些可能无法提供你所需的流畅交流能力。如果你对ROS2和语音处理都有深入的了解,你可以尝试自己开发或修改这些库以满足你的需求。

            可能的建议方案:

            • 结合ESP32S3和ROS2:你可以考虑使用ESP32S3作为语音输入和输出的前端设备,负责语音识别和合成。然后,你可以通过某种通信协议(如Wi-Fi、蓝牙或串口)将ESP32S3与ROS2节点连接起来。在ROS2节点中,你可以处理语音指令,控制机器人的移动和其他功能。

            • 使用云服务:另一个可能的解决方案是使用云服务进行语音识别和文本生成。你可以将语音数据发送到云端,然后接收处理后的指令或文本。这种方法可以利用云端的强大计算能力,但可能会受到网络延迟和带宽限制的影响。

            • 寻找现成的解决方案:你也可以考虑寻找一些已经集成了语音处理和ROS2的现成解决方案或开源项目。这些项目可能已经解决了许多你正在面临的问题,并且可以为你提供一个良好的起点。

            最后,无论你选择哪种方案,都需要确保它能够提供你所需的流畅交流和基本的移动功能。同时,你也需要考虑成本、开发时间和项目的可持续性。希望这些建议能对你有所帮助!


            以上为生成回答,仅供参考~

            我是小伊,已接入ChatGpt,所有回复,仅供参考~

            1 条回复 最后回复 回复 引用 0
            • O
              onedream 年度VIP
              最后由 编辑

              现在还没有大佬提供具体方案,但是我在CSDN博客上看到一位大佬讲述了ros2接入科大讯飞的SDK然后实现了语音+键盘控制fishbot完成了5个语音命令,也算是跑了一下语音控制的流程。但使用过程中发现语音识别特别慢和不准确,而且过程也较繁琐看来还不是最好方案。不过挺好的,至少说明白了语音控制并不是机器人听到了语音就开始执行了。以后将持续更新此贴作为交互的学习。

              jarvisJ 1 条回复 最后回复 回复 引用 0
              • 24384131712
                我不和二极管说话
                最后由 编辑

                插眼,有时间也希望搞个智能机器人

                O 1 条回复 最后回复 回复 引用 1
                • O
                  onedream 年度VIP @2438413171
                  最后由 编辑

                  @2438413171 哇塞,大佬我们又相见了,太兴奋了,又来我帖子了,先给大佬汇报下最近进展:
                  1、上次科大讯飞+键盘控制的方案最终放弃了;采用了新的方案,用vosk库替代了科大讯飞,用navigation2替代了键盘控制。
                  2、已用vosk库实现了语音识别,感觉与科大讯飞差不太多,也不是很准确。
                  3、然后使用espeakng库将文字合成语音播报。
                  4、利用API链接coze智能体将vosk识别的语音传过去,然后接收到反馈的内容已实现。
                  5、利用rviz2提前将目标点的坐标记录下来写入xml文件中,然后使用指令映射的方式写入navigation2的目标接收节点中,已实现导航。

                  由于横跨太多内容,现在以上步骤都是单步单一功能实现的,接下来就是要把以上步骤完整的串起来,先完成既定导航目标的实现。现在唯一一个还没有确定的就是如何告诉navigation2初始位置。我在听小鱼老师的课时感觉这个还是有点难,所以这步先留着等我把上面单步实现的串联起来后再来解决这个问题。

                  再次感谢大佬上次的指点及本次的光顾,感谢!
                  也再次感谢小鱼老师免费的教学,随着学习的深入我才越来越体会小鱼老师的苦口婆心,不要复制粘贴代码不然看完视频没感觉,实际上根本没学进去。只有在自己继续深挖的过程中才会发现这些基础知识的重要性!

                  O 1 条回复 最后回复 回复 引用 0
                  • jarvisJ
                    jarvis @onedream
                    最后由 编辑

                    @onedream 看了贴子有点遇到知音感觉,我也有此想法,我是想着后面语音控制小车能实现像现在电车那样在复杂路况上的模拟,除了语音转换感觉最难的是识别意图然后去执行对应的控制器;不知道能不能做到那种程度。越学习感觉学的东西还有很多,一起加油!

                    O 1 条回复 最后回复 回复 引用 0
                    • O
                      onedream 年度VIP @jarvis
                      最后由 编辑

                      @jarvis 是的,思路上应该大差不差,我的终极目标也是将聊天和控制结合,就会走到你说的意识识别。这一步对我来说还是很遥远,不过现在技术发展很快,先把基础的打通,经验先积累着,说不定哪天就可以实现了啦!哈哈。

                      1 条回复 最后回复 回复 引用 0
                      • O
                        onedream 年度VIP @onedream
                        最后由 onedream 编辑

                        @onedream 经过一个多月的实践与学习,不停的改不停的改,总算是成功了。这期间做了以下优化:
                        1、将初始位置固定,并在启动nav2时自动实现初始位置。
                        2、成功将3个模块串联起来,vosk识别的语言通过发布者将内容传递给coze,然后收到coze消息后通过发布者传递给导航。

                        美中不足的就是:
                        1、vosk识别非常不准确,而且每次都会不知道什么时候说话的结束。但是程序运行久了,我发现识别准确度会提高,这是什么情况啦?
                        2、为了实现以上功能我打开了5个终端同时运行,不知道能否实现一个终端实现以上流程。

                        本想上传视频结果发现不能,那我就上传图片吧
                        040e97f5-4589-499f-b5cb-45223628ce31-image.png

                        4993912604 O 2 条回复 最后回复 回复 引用 0
                        • O
                          onedream 年度VIP @小鱼
                          最后由 编辑

                          @小鱼 对了,小鱼老师,我请教下,我想在fishbot小车上装上麦克风阵列用于接收语音消息。这个是随便在淘宝上买个就可以实现吗?还是要基于你开发的主控板来有针对性的选择麦克风阵列啦?还需要增加其他主控版吗?恳请有空时指导下,谢谢小鱼老师。

                          小鱼小 1 条回复 最后回复 回复 引用 0
                          • 4993912604
                            - @onedream
                            最后由 编辑

                            @onedream launch文件研究一下。把node启动都放到一个lanuch文件里就可以了。

                            O 1 条回复 最后回复 回复 引用 0
                            • 小鱼小
                              小鱼 技术大佬 @onedream
                              最后由 编辑

                              @onedream 随便一个即可

                              新书配套视频:https://www.bilibili.com/video/BV1GW42197Ck/

                              O 1 条回复 最后回复 回复 引用 0
                              • O
                                onedream 年度VIP @499391260
                                最后由 编辑

                                @499391260 要的,谢谢大佬指点。

                                1 条回复 最后回复 回复 引用 0
                                • O
                                  onedream 年度VIP @小鱼
                                  最后由 编辑

                                  @小鱼 好的,谢谢小鱼老师。

                                  1 条回复 最后回复 回复 引用 0
                                  • O
                                    onedream 年度VIP @onedream
                                    最后由 编辑

                                    @onedream 又经过一个多月的思考和研究,语音识别问题总算找到了我非常满意的解决方案。学习了开源小智AI的IOT功能,打算把他和fishbot结合起来。将IOT控制板块通过mqtt协议传入ros2话题中这样就完美的解决了语音识别不准的问题。但是现在基本调通了。还没有进行大汇总,如果后续能够完全调通,那我的这个智能小车就基本实现了我想要的功能了。哈哈,后续就是对fishbot进行2驱变4驱的改变了。因为万向轮无法适应任一有阶梯的环境。

                                    O 1 条回复 最后回复 回复 引用 0
                                    • O
                                      onedream 年度VIP @onedream
                                      最后由 编辑

                                      @onedream 经过4个月零2天的时间,我成功实现了将fishbot变成智能语音控制导航的小车了,说去哪里就去哪里。但仍有些不足:
                                      1、无法完成相对目标点前进;
                                      2、现在导航采用的坐标点映射,并不能像网上那种自我标定,自我导航;
                                      3、mqtt运行还不稳定,多次收发后会导致程序崩溃,我在想是不是我没有自建服务器的原因,现在采用的是公共服务器。
                                      不过总体的链路已经完成了,接下来就是查漏补缺的时间了,期待能做个室内室外都能跑的机器人,哈哈!

                                      1 条回复 最后回复 回复 引用 0
                                      • 第一个帖子
                                        最后一个帖子
                                      皖ICP备16016415号-7
                                      Powered by NodeBB | 鱼香ROS