如何在MATLAB中构建智能语音助手

发布时间:2025-7-2

类别:行业动态

阅读:0

摘要:

如何在MATLAB中构建智能语音助手

具身智能是一种将智能与物理实体深度融合的人工智能形态,强调智能行为既依赖智能体自身算力,更离不开其与环境的感知交互。在具身智能体与人类交互方面,自然语言是极为直观且高效的沟通方式。

大语言模型(LLM)凭借卓越的自然语言理解、生成与推理能力,与具身智能结合,人类可经语音智能体发出指令、提出问题或者表达需求,LLM 能处理理解语言信息并生成回复,还可以将用户指令解析为具体动作或任务目标,助力具身智能体精准把握人类意图并协同工作。

我们利用 MATLAB 开发了一个简易智能助手,实现了基于语音的人机交互。下面的视频将展示该语音助手如何被唤醒,以及它如何应答用户提问和接收指令以操控电机开关。

系统概况

下图展示了该智能助手简要的工作流程:它通过监听环境并检测触发词来被唤醒,之后调用语音转文本模型将用户语音转化为文本,通过文本判断是否为用户指令:若为指令,则将其转化为控制信息发送至硬件执行;若非指令,则调用LLM生成相应的回复;最后,通过文本转语音模型将回复文本转化为语音并播放。

wKgZO2hiLzqAXdg4AAGOkeSNF0s896.png

本文将展示如何在 MATLAB 中构建这样一个语音助手,以及 MATLAB 在智能应用快速原型方面的如下能力:

用户界面设计与实现

语音信号采集与处理

Python 模型集成

大语言模型支持

硬件控制与代码部署

用户界面设计与实现

MATLAB 提供一个用于设计和编程 App 的交互式开发环境 App Designer,可以用来设计智能助手的用户界面。App Designer 内置完整的 MATLAB 编辑器和丰富的交互式 UI 组件,支持通过网格布局管理界面,并可自动适应屏幕尺寸变化。用户可直接在工具栏将 App 打包为安装文件分发,或借助 MATLAB Compiler 创建独立桌面或 Web App。


语音采集与处理

除了基本的 Signal Processing Toolbox,MATLAB 还专门为音频、语音和声学信号的处理与分析提供了Audio Toolbox,这也为我们智能助手的语音采集和处理提供了便利。Audio Toolbox 提供丰富的算法,可用于音频信号处理、声学指标估算、音频数据集标注与增强,以及音频特征提取。

在智能助手应用中,触发词检测、语音转文本和文本转语音这三个模块都是基于Audio Toolbox 网页上提供的 “AI for Audio” 相关参考示例和函数来实现的。MATLAB 提供了Statistics and Machine Learning Toolbox 和 Deep Learning Toolbox 来支持 AI 方面的应用。其中,触发词检测主要是通过训练一个深度学习网络来完成。可在 MathWorks 官网上搜索以下示例,学习如何在 MATLAB 中对音频信号打标签,如何设计与训练一个用于触发词检测的深度学习网络,以及如何裁剪及量化 神经网络并把它部署到树莓派中。

对于语音与文本的相互转换,需在 MATLAB 工具栏的“Add-Ons”下点击“Get Add-Ons”,

该插件可自动安装 Python 和 PyTorch,并下载 SpeechBrain 和 Torchaudio 库中的深度学习模型,从而为 Audio Toolbox 提供了基于 AI 的语音识别(ASR)和语音合成功能,使得MATLAB 用户无需深度学习经验即可直接使用前沿的 AI 语音模型。

用户可通过 speechClient 对象,调用speech2text和text2speech函数,选用本地模型或者Google、IBM、Microsoft、Amazon 等云服务,分别实现语音转文本(STT)(或自动语音识别(ASR))和文本转语音(TTS)(或语音合成)功能。对于中文,可选择whisper 模型实现语音转文本,注意这时需单独下载模型权重。

Python 模型集成

在文本转语音模块中,text2speech 函数使用的是 HiFi-GAN/Tacotron2 预训练模型,无法合成超过约 10 秒的语音信号。因此,可在 MATLAB 中配置 Python 环境,安装和调用其他预训练好的 Python 模型。

在智能助手的示例中,我们选用的是pyttsx3,一个可直接调用多种操作系统的 TTS,支持在离线状态下实现文本转语音并播放功能的Python 库。

之后,就可利用* engine.say()* 函数传入需要合成并播放的文本,使用*engine.runAndWait() *函数等待朗读任务的完成。

大语言模型支持

在我们的智能助手项目中,大语言模型被用来回答用户的提问。


这个Add-on可以帮助用户通过 MATLAB 连接或者调用各种大语言模型。目前支持 OpenAI Chat Completions API 和 OpenAI Images API 等,还支持调用 Ollama 部署的本地大模型。

硬件控制和代码部署

与硬件设备进行交互是具身智能的一大特色,在这个智能助手项目中,用户可以通过指令控制电机启动和关闭。MATLAB 和 Simulink 可以直接与一些硬件链接并进行实时数据流传输,还能支持将算法和模型自动生成 C/C++、HDL 或 PLC 代码等,部署到嵌入式系统中,如机器人控制器、无人车的车载计算机等,实现具身智能系统的实际运行。

原始示例是通过板卡上的按键打开或者关闭电机运行,我们将“Communication” 下的“Start and Stop Motor” 模块修改成通过 USART2 串口接收信号控制电机启动与停止。所以,当智能助手检测到电机控制指令时,只需要在串口发送该指令所相对应的数字即可。

记得在 MATLAB 电机控制命令发送函数中使用与 STM32 USART2 端口配置中相同的波特率与字长。

总结

目前,我们仅使用 MATLAB 将具身智能与大语言模型(LLM)结合,在人机交互方面进行了初步探索,未来将继续探索能否直接使用多模态模型直接解析用户需求来实现具身智能的人机交互。

除了人机交互, MATLAB 在具身智能的建模与仿真、感知与数据处理、决策与控制、学习与训练、测试与评估、嵌入式部署及代码生成等众多领域,均是功能强大的工具。欢迎感兴趣的小伙伴们和我们一同进行探索与研究!


今日

焦点

/FOCUS

更多 >

PDF索引:

A

B

C

D

E

F

G

H

I

J

K

L

M

N

O

P

Q

R

S

T

U

V

W

X

Y

Z

0

1

2

3

4

5

6

7

8

9

IC型号索引:

A

B

C

D

E

F

G

H

I

J

K

L

M

N

O

P

Q

R

S

T

U

V

W

X

Y

Z

0

1

2

3

4

5

6

7

8

9

Copyright 2024 gkzhan.com Al Rights Reserved 京ICP备06008810号-21 京

0.151396s