语音识别(录音与语音播报)

news2025/5/30 13:50:39

语音识别(录音与语音播报)

简介

语音识别人工智能技术的应用领域非常广泛,常见的应用系统有:语音输入系统,相对于键盘输入方法,它更符合人的日常习惯,也更自然、更高效;语音控制系统,即用语音来控制设备的运行,相对于手动控制来说更加快捷、方便,可以用在诸如工业控制、语音拨号系统、智能家电、声控智能玩具等许多领域。

​ 语音识别简单来说就是利用计算机语音信号自动转换为文本的一项技术,语音识别技术拆分下来,主要可分为”输入—编码—解码—输出”四个流程。在语音识别中,设备首先收集目标语音,然后对收集到的语音进行一系列处理,得到目标语音的特征信息。这些特征信息包括声学特征和语言特征。声学特征是指语音信号的频谱、功率谱、倒谱等,而语言特征则是指语音信号中的文本内容。接下来,系统会将这些特征信息与数据库中已存数据进行相似度搜索比对,评分高者即为识别结果。

​ 语音识别的原理是将一段语音信号转换成相对应的文本信息,系统主要包含特征提取、声学模型、语言模型以及字典与解码四大部分。其中为了更有效地提取特征往往还需要对所采集到的声音信号进行滤波、分帧等预处理工作,把要分析的信号从原始信号中提取出来;之后,特征提取工作将声音信号从时域转换到频域,为声学模型提供合适的特征向量;声学模型中再根据声学特征性计算每一个特征向量在声学特征上的得分;而语言模型则根据语言学相关的理论,计算该声音信号对应可能词组序列的概率;最后根据已有的字典,对词组序列进行解码,得到最后可能的文本表示。

​ 一般来说,语音识别的方法有三种:基于声道模型和语音知识的方法、模板匹配的方法以及利用人工神经网络的方法。

​ 其中,基于声道模型和语音知识的方法是最早被提出来的,它是通过对语音信号进行分析,提取出与语音信号相关的特征参数,然后将这些特征参数与声学模型相结合,从而实现语音识别。传统方法主要分两个阶段:训练和识别,训练阶段主要是生成声学模型和语言模型给识别阶段用。传统方法主要有五大模块组成,分别是特征提取(得到每帧的特征向量),声学模型(用GMM从帧的特征向量得到状态,再用HMM从状态得到音素)、发音字典(从音素得到单词)、语言模型(从单词得到句子)、搜索解码(根据声学模型、发音字典和语言模型得到最佳文本输出。

​ 模板匹配法是将待识别语音与已知的模板进行比较,从而找到最相似的模板,进而实现语音识别。模板匹配的方法是一种传统的语音识别方法,它是基于模板的匹配,即将语音信号与预先存储的模板进行比较,从而得到最佳匹配结果。模板匹配的方法主要分为两类:动态时间规整(DTW)和隐马尔可夫模型(HMM)。其中,DTW是一种基于时间对齐的方法,它可以将两个不同长度的语音信号进行对齐,然后计算它们之间的距离。HMM是一种基于状态转移的方法,它将语音信号建模为一个状态序列,并使用概率模型来描述状态之间的转移。

​ 深度学习的方法是一种新兴的语音识别方法,利用人工神经网络的方法是通过训练神经网络来实现语音识别,它主要是基于神经网络的模型,如卷积神经网络(CNN)、循环神经网络(RNN)和长短时记忆网络(LSTM)等。这些模型可以自动地从原始语音信号中提取特征,并将其转换为高级表示,然后使用这些表示来进行分类或回归。深度学习的方法已经在语音识别领域取得了很大的成功,它们通常比传统方法更准确,并且可以处理更复杂的任务。

实验平台

机器硬件:OriginBot(导航版/视觉版)
扩展硬件:语音扩展版
主机:电脑(Windows >10/ Ubuntu>20.04)

实现

硬件检测、普通录音及播放

​ 首先要确保安装tros和智能算法语音包

 
sudo apt update
sudo apt install tros-hobot-audio
 

​ 首先检测硬件环境,将旭日X3派与音频转接板、麦克风阵列拾音板接好之后上电使用如下指令可以检查设备的接入情况,若成功接好,默认可以在I2C上读取到三个地址。如下图:

 
rmmod es8156 
i2cdetect -r -y 0
 

I2C检测

若没检测到,请重新检查设备的连接。然后从TogetherROS的安装路径中拷贝出运行示例需要的配置文件。并且确认麦克风阵列类型,麦克风阵列类型通过配置文件config/audio_config.json中的mic_type字段设置,默认值为0,表示环形麦克风阵列。如果使用线形麦克风阵列,需要修改该字段为1。然后加载音频驱动,设备启动之后只需要加载一次,如果显示modprobe: FATAL: Module snd_card=5 not found。请忽略。

 
cd /userdata/dev_ws/
# 配置TogetheROS环境
source /opt/tros/setup.bash

# 从tros.b的安装路径中拷贝出运行示例需要的配置文件。
cp -r /opt/tros/lib/hobot_audio/config/ .

# 加载音频驱动,设备启动之后只需要加载一次
bash config/audio.sh
 

​ 加载驱动音频codec(编解码器)和x3音频框架驱动

 
sudo modprobe es7210
sudo modprobe es8156
sudo modprobe hobot-i2s-dma
sudo modprobe hobot-cpudai
sudo modprobe hobot-snd-7210 snd_card=5
 

​ 检测是否加载成功

 
ls /dev/snd
 

检测是否加载成功

然后就可以录音播放测试了

 
rm -rf *test.wav
 

采集4通道麦克风的录音5秒钟:

 
sudo tinycap ./4chn_test.wav -D 0 -d 0 -c 4 -b 16 -r 48000 -p 512 -n 4 -t 5
 

采集2通道麦克风的录音5秒钟:

 
sudo tinycap ./2chn_test.wav -D 0 -d 0 -c 2 -b 16 -r 48000 -p 512 -n 4 -t 5
 

可以使用音箱或者3.5mm接口耳塞接入位号U4的插口中听效果,也可以从系统中拉出音频文件至电脑中播放

 
sudo tinyplay ./2chn_test.wav -D 0 -d 1

 更多内容请参考:语音识别(录音与语音播放) - 古月居 (guyuehome.com)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1592981.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

多模块项目使用springboot框架进行业务处理

项目目录 1、在Result定义返回结果 package com.edu.result;import lombok.Data;import java.io.Serializable;/*** 后端统一返回结果* param <T>*/ Data public class Result<T> implements Serializable {private Integer code; //编码&#xff1a;1成功&#xf…

大模型笔记:Prompt tuning

1 NLP模型的几个阶段 1.1 第一阶段&#xff08;在深度学习出现之前&#xff09; 通常聚焦于特征工程&#xff08;feature engineering&#xff09;利用领域知识从数据中提取好的特征 1.2 第二阶段&#xff08;在深度学习出现之后&#xff09; 特征可以从数据中习得——>…

K8s下部署grafana

1. 系统要求 最小化的软硬件要求 最小化硬件要求 磁盘空间: 1 GB内存: 750 MiB (approx 750 MB)CPU: 250m (approx 2.5 cores) 2. k8s部署grafana步骤 1) 创建名字空间 kubectl create namespace my-grafana 2) 创建yaml vim grafana.yaml yaml包含如下三个资源对象 Ob…

C++11 数据结构2 线性表的链式存储,实现,测试

线性表的链式存储 --单链表 前面我们写的线性表的顺序存储(动态数组)的案例&#xff0c;最大的缺点是插入和删除时需要移动大量元素&#xff0c;这显然需要耗费时间&#xff0c;能不能想办法解决呢&#xff1f;链表。 链表为了表示每个数据元素与其直接后继元素之间的逻辑关系…

Chatgpt掘金之旅—有爱AI商业实战篇|SEO 咨询业务|(十七)

演示站点&#xff1a; https://ai.uaai.cn 对话模块 官方论坛&#xff1a; www.jingyuai.com 京娱AI 一、AI技术创业在SEO 咨询业务有哪些机会&#xff1f; 人工智能&#xff08;AI&#xff09;技术作为当今科技创新的前沿领域&#xff0c;为创业者提供了广阔的机会和挑战。随…

JVM垃圾回收(GC)

目录 目录 1.GC 简介 1.1. 引言 1.2. 何为 GC 1.2.1. 手动 GC 1.2.2. 自动 GC 引用计数法 标记清除 2.GC入门分析 2.1.碎片整理 1)对象创建时&#xff0c;执行写入操作越来越耗时 2&#xff09;内存分配错误 2.2. 分代设想 2.3. 对象分配 对象内存分配过程 2.4. …

创建SAP替代增强的过程

发现公司的凭证增强程序里没有前人写过完全替代的增强。没有完全替代增强想要实现一些复杂一点的替代就很难实现。所以我来创建一个完全替代&#xff0c;并且把过程记录下来&#xff0c;方便以后回头查看。 因为我公司已经实施过增强了&#xff0c;下面这个从零开始实施增强的大…

编曲知识17:音高修正 节奏修正 压缩器应用 压缩数值算法

34届音高修正 节奏修正 压缩器应用 压缩数值算法独立音乐人训练营基地,七年在线教育编曲系统授课,培养了几千名独立音乐人https://app8epdhy0u9502.pc.xiaoe-tech.com/detail/l_660be2e3e4b023c02af7abbc/4?course_id=course_2XLKtQnQx9GrQHac7OPmHD9tqbv 修音 准备工作 …

软件测试过程和测试生命周期

众所周知&#xff0c;软件生命周期包括&#xff0c;需求阶段、设计阶段、设计构建阶段、测试周期阶段、最后测试、实施阶段、最后运维和维护验收。每个阶段都需要在软件开发的生命周期中从前一阶段交付。需求转化为设计&#xff0c;设计转化为开发和开发成测试&#xff0c;经过…

AD7982BRMZRL7 二进制 500kSPS 模数转换芯片 ADI

AD7982BRMZRL7是一款由Analog Devices&#xff08;亚德诺&#xff09;公司生产的18位逐次逼近型模数转换器&#xff08;ADC&#xff09;。它主要用于将模拟信号转换为数字信号&#xff0c;适用于数据采集系统、嵌入式系统、工业控制和医疗设备等领域。 AD7982BRMZRL7的主要功能…

【Unity+Python】如何通过Socket进行通信

1、Unity端创建名为UnityClient.cs脚本代码(客户端)&#xff1a; 注意&#xff1a;unity的规则中类&#xff0c;名和脚本文件名需要相同。 using System.Net.Sockets; using System.Text; using UnityEngine;public class UnityClient : MonoBehaviour {TcpClient client;Netw…

校园卡和流量卡哪个好

校园卡和流量卡哪个好 由于在某运营商工作过&#xff0c;很多人都会问我&#xff0c;校园卡和纯流量卡&#xff08;也就是物联网卡&#xff09;到底坑不坑&#xff01;&#xff01; 今天给大家解答一下&#xff0c;纯流量卡&#xff0c;也就是你打任何一家运营商客服专线都查不…

JavaScript:事件循环机制(同步、异步)(单、多线程)

事件循环机制: 多进程和多线程 1. 进程&#xff1a;程序的一次执行, 它占有一片独有的内存空间 2. 线程&#xff1a; CPU的基本调度单位, 是程序执行的一个完整流程 3. 进程与线程 * 一个进程中一般至少有一个运行的线程: 主线程 * 一个进程中也可以同时运行多个线程, 我们…

[大模型] BlueLM-7B-Chat WebDemo 部署

BlueLM-7B-Chat WebDemo 部署 模型介绍 BlueLM-7B 是由 vivo AI 全球研究院自主研发的大规模预训练语言模型&#xff0c;参数规模为 70 亿。BlueLM-7B 在 C-Eval 和 CMMLU 上均取得领先结果&#xff0c;对比同尺寸开源模型中具有较强的竞争力(截止11月1号)。本次发布共包含 7…

Golang | Leetcode Golang题解之第25题K个一组翻转链表

题目&#xff1a; 题解&#xff1a; func reverseKGroup(head *ListNode, k int) *ListNode {hair : &ListNode{Next: head}pre : hairfor head ! nil {tail : prefor i : 0; i < k; i {tail tail.Nextif tail nil {return hair.Next}}nex : tail.Nexthead, tail my…

微信小程序兼容iphone适配安全区域

背景&#xff1a; 小程序页面底部在ios中会有小黑条遮挡 上代码&#xff1a; padding-bottom: constant(safe-area-inset-bottom); /* 兼容 iOS < 11.2 */ padding-bottom: env(safe-area-inset-bottom); /* 兼容 iOS > 11.2 */ 项目描述&#xff1a; 微信小程序是通过…

DonkeyDocker-v1-0渗透思路

MY_BLOG https://xyaxxya.github.io/2024/04/13/DonkeyDocker-v1-0%E6%B8%97%E9%80%8F%E6%80%9D%E8%B7%AF/ date: 2024-04-13 19:15:10 tags: 内网渗透Dockerfile categories: 内网渗透vulnhub 靶机下载地址 https://www.vulnhub.com/entry/donkeydocker-1,189/ 靶机IP&a…

补充continue,break

一&#xff0c;continue 该关键字用于立即跳出本次循环&#xff0c;继续下一次循环 二&#xff0c;break 退出循环&#xff0c;不再执行

gma 2.0.8 (2024.04.12) 更新日志

安装 gma 2.0.8 pip install gma2.0.8网盘下载&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1P0nmZUPMJaPEmYgixoL2QQ?pwd1pc8 提取码&#xff1a;1pc8 注意&#xff1a;此版本没有Linux版&#xff01; 编译gma的Linux虚拟机没有时间修复&#xff0c;本期Linux版继…

Redis入门到通关之String命令

文章目录 ⛄1 String 介绍⛄2 命令⛄3 对应 RedisTemplate API❄️❄️ 3.1 添加缓存❄️❄️ 3.2 设置过期时间(单独设置)❄️❄️ 3.3 获取缓存值❄️❄️ 3.4 删除key❄️❄️ 3.5 顺序递增❄️❄️ 3.6 顺序递减 ⛄4 以下是一些常用的API⛄5 应用场景 ⛄1 String 介绍 Stri…