语音识别
语音识别,也被称为自动语音识别(Automatic Speech Recognition,ASR),是一种让计算机 “听懂” 人类语音并将其转换为文字或执行相应指令的技术。
原理
- 特征提取:对输入的语音信号进行预处理,如降噪、分帧等,然后提取能够表征语音特征的参数,如梅尔频率倒谱系数(MFCC)等,将语音信号转化为计算机能够处理的特征向量序列。
- 声学模型:利用大量的语音数据和机器学习算法,建立声学模型。它可以学习语音特征与对应音素或音节之间的统计关系,能够根据输入的语音特征向量,计算出最可能的音素或音节序列。
- 语言模型:语言模型用于描述语言的语法、语义和统计规律。它可以根据已识别出的单词或短语,预测下一个可能出现的单词,从而对声学模型的输出进行校正和补充,提高识别的准确性。
- 解码:将声学模型和语言模型的信息结合起来,通过搜索算法在所有可能的结果中找到最符合两种模型的路径,即最优的文字序列,完成语音到文字的转换。
运行实例
OriginMan使用到的ASR实现方式是通过将录音音频进行降噪处理,然后传输给大模型网关技术,通过网关模型将音频解析成文字。
基于python
首先可以使用一个Python示例体验一下ASR。
在audio_asr.py中默认识别的是其目录下的test.py音频,如果你没有进行录音操作,可以直接更改
此时将会识别prompt.wav的内容。
此时将会看到如下终端信息:
root@ubuntu:/userdata/dev_ws/src/originman/originman_pydemo/audio# python3 audio_asr.py
采样率: 16000, 时长: 0.84 秒
识别结果:
我在。
而同样可以播放音频的内容来验证内容,test_audio会对prompt.wav和test.wav内容进行录音和播放。
基于ROS2话题
既然可以使用Python实现,那必然可以用ROS2实现啦! 同时可以支持使用话题发布识别到的文本数据。
打开一个终端,执行以下指令:
此时可以看到log中输出相关的使用日志示例:
ros2 run originman_llm_chat asr_node
[INFO] [1740719779.381260749] [asr_node]: ASR 节点已启动,开始录音和识别...
[INFO] [1740719779.389336500] [asr_node]: 收到监听状态,开始聆听中...
[INFO] [1740719779.390696125] [asr_node]: 开始录音和识别...
[INFO] [1740719782.430083504] [asr_node]: 录制音频: test.wav
[INFO] [1740719782.454768675] [asr_node]: 采样率: 16000, 时长: 3.0 秒
[INFO] [1740719783.690654553] [asr_node]: 识别到用户语音: '你好,你是谁?'
[INFO] [1740719783.693256470] [asr_node]: 已发布文本到 /text_input: '你好,你是谁?'
另外打开一个终端,输入提示内容
Attention
需要先完成联网操作,联网步骤请参考网络配置与远程开发方法