用 TensorFlow 创建自己的 Speech Recognizer

ESP32S3离线语音唤醒实战:用TensorFlow Lite Micro打造端侧AI应用 端侧AI推理正在从云端下沉到微控制器,让设备无需联网即可完成本地智能任务。TensorFlow Lite Micro(TFLM)作为专为MCU设计的轻量级推理框架,通过int8量化将模型压缩至几十KB,配合固定内存缓冲和无动态分配机制,解决了嵌入式设备内存小、算力弱的双重约束。语音唤醒是端侧AI最典型的落地场景之一,其技术链路涉及I2S音频采集、MFCC特征提取、神经网络推理和滑窗判定,最终实现低延迟的离线交互。本文以ESP32S3和ESP-IDF工具链为基础,完整演示了基于TFLM的micro_speec 阅读详情

参考资料
源码请点:https://github.com/llSourcell/tensorf...


语音识别无处不在,siri,google,讯飞输入法,讯飞语记,智能家居,车,etc。
每天都在用的,很好奇它是怎么实现的,今天来看看这么便利的东东到底是什么样子呢。

进化史

最开始的 speech recognizer 只能识别 0-9 这几个数字,说别的单词是识别不了滴。

后来有一个叫做 DARPA 的梦想家 team 孜孜不倦地研究。


他们用 15000 个节点代表可能的发音,然后用暴力搜索 brute force search 算法来找到节点对应的文字。

后来 IBM 用 Hidden Markov Model 来预测每个点最大概率可能表示的文字。



再后来人们尝试用 NN 神经网络来做这个任务,但是很长时间没太大进展,直到 深度学习之父 Geoffrey Hinton 研究出个 Deep Learning 模型,语音识别的效果显著提高。



Yours ~~

像 Siri,Google 一样,现在我们来看看怎样用 TensorFlow 创建自己的 Speech Recognizer ,来识别数字吧。

Steps:

  • 导入库
  • 定义参数
  • 导入数据
  • 建立模型
  • 训练模型并预测

1. 导入库

需要用到 tflearn,这是建立在 TensorFlow 上的高级的库,可以很方便地建立网络。
还会用到辅助的类 speech_data,用来下载数据并且做一些预处理。

from __future__ import division, print_function, absolute_import
import tflearn
import speech_data
import tensorflow as tf

2. 定义参数

learning rate 是在更新权重的时候用,太高可以很快,但是loss大,太低较准但是很慢。


learning_rate = 0.0001
training_iters = 300000 # steps
batch_size = 64

width = 20 # mfcc features
height = 80 # (max) length of utterance
classes = 10 # digits

3. 导入数据

用 speech_data.mfcc_batch_generator 获取语音数据并处理成批次,然后创建 training 和 testing 数据。

batch = word_batch = speech_data.mfcc_batch_generator(batch_size)
X, Y = next(batch)
trainX, trainY = X, Y
testX, testY = X, Y #overfit for now

4. 建立模型

接下来,用什么模型呢?
speech recognition 是个 many to many 的问题。

eg,speech recognition


eg,image classification


eg,image caption


eg,sentiment analysis


所以我们用 Recurrent NN 。


通常的 RNN ,它的输出结果是受整个网络的影响的。


而 LSTM 比 RNN 好的地方是,它能记住并且控制影响的点。所以这里我们用 LSTM。


每一层到底需要多少个神经元是没有规定的,太少了的话预测效果不好,太多了会 overfitting,这里我们取普遍的 128.

为了减轻过拟合的影响,我们用 dropout,它可以随机地关闭一些神经元,这样网络就被迫选择其他路径,进而生成想对 generalized 模型。

接下来建立一个 fully connected 的层,它可以使前一层的所有节点都连接过来,输出 10 类,因为数字是 0-9,激活函数用 softmax,它可以把数字变换成概率。

最后用个 regression 层来输出唯一的类别,用 adam 优化器来使 cross entropy 损失达到最小。

# Network building
net = tflearn.input_data([None, width, height])
net = tflearn.lstm(net, 128, dropout=0.8)
net = tflearn.fully_connected(net, classes, activation='softmax')
net = tflearn.regression(net, optimizer='adam', learning_rate=learning_rate, loss='categorical_crossentropy')

5. 训练模型并预测

然后用 tflearn.DNN 函数来初始化一下模型,接下来就可以训练并预测,最后再保存训练好的模型。

# Training
### add this "fix" for tensorflow version errors
col = tf.get_collection(tf.GraphKeys.TRAINABLE_VARIABLES)
for x in col:
  tf.add_to_collection(tf.GraphKeys.VARIABLES, x )

model = tflearn.DNN(net, tensorboard_verbose=0)

while 1: #training_iters
  model.fit(trainX, trainY, n_epoch=10, validation_set=(testX, testY), show_metric=True,
          batch_size=batch_size)
  _y=model.predict(X)
model.save("tflearn.lstm.model")
print (_y)
print (y)

模型训练需要一段时间,一边碎觉一边等着模型出炉吧。

ARM官方ML-KWS-for-MCU源码级评测:MCU语音关键词识别全链路解析 边缘AI落地中,关键词识别(KWS)是MCU设备实现语音交互的核心技术之一。受限于内存、算力与功耗,Cortex-M平台上的模型部署必须依赖精细化工程优化,而CMSIS-NN作为ARM官方神经网络加速库,可大幅提升卷积与全连接算子效率;同时,TFLite Micro为资源受限设备提供了轻量级推理引擎,二者共同构成了MCU端AI应用的关键底座。在典型应用场景如智能家居、可穿戴设备中,开发者需从MFCC特征提取、模型量化到滑窗状态机设计,打通“数据集→训练→部署”的完整链路。文章聚焦ARM官方ML-KWS-fo 阅读详情

相关推荐

基于 TensorFlow Lite 开发的 Android 端中文语音识别 Demo.zip

人工智能-深度学习-tensorflow

智能语音识别应用及其tensorflow实现

关于语音识别,可以说是一个比较老的研究话题了,技术也在一直进步。 关于语音识别的关键技术,可以参考我之前写一篇mfcc的博客,今天湖主要讲一下它的应用。 https://blog.youkuaiyun.com/david_tym/article/details/123237233 https://blog.youkuaiyun.com/shi_xin/article/details/118895503 https://blog.youkuaiyun.com/weixin_34037173/article/details/85959683 .

edward_zcl的博客 1409

基于TensorflowLite在移动端实现人声识别

本文来自于网络,全文讲述了移动端开发人声识别算法优化,针对如何提高人声识别率进行了讲解,希望对大家的学习能有作用。1)当网络较差的情况下会造成较大的延时,带来较差的用户体验。2)当访问量较大的情况下,会大量占用服务端资源。为解决以上两个问题,我们选择在客户端上实现人声识别功能。本文使用机器学习的方法识别人声。采用的框架是谷歌的tensorflowLite框架,该框架跟它的名字一样具有小巧的特点。在保证精度的同时,框架的大小只有300KB左右,且经过压缩后产生的模型是tensorflow模型的四分之一。因此,tensorflowLite框架比较适合在客户端上使用。为了提高人声的识别率,需要提取音

TensorFlowLite 声音识别

因为打包时tflite文件可能会被压缩,所以需要配置如下。

AdrianAndroid的专栏 1794

嵌入式硬件实战:RC、LC与RL滤波电路的设计与选型指南

本文深入探讨了嵌入式系统中RC、LC与RL滤波电路的设计与选型策略。通过生活化比喻和实战案例,详细解析了三种滤波电路的工作原理、应用场景及工程注意事项,帮助工程师根据电流大小、频率特征和成本预算选择最优方案,提升嵌入式硬件设计的稳定性和抗干扰能力。

kiwi8的博客 284

104报文解析工具

可选择包含报文的文本文件或日志文件进行解析,可选择按条数范围或时间范围,输出结果可以在报文解析显示区,也可以输出到文件。可以对文本内容的报文文件进行高级分析,包括遥信遥测等通讯数据的具体信息,通讯帧的统计,通讯次数的统计,各种错误的分析,报文的定位功能,传输的文件具体内容等。输入完成后点击工具栏的解析报文按钮或使用右键菜单的解析就可以对报文进行解析。在报文输入区输入待解析报文并解析后,解析结果就显示在报文解析显示区和报文定位展示区及报文定位条目区。当有多条报文解析后,可以通过报文列表树具体定位某条报文。

XZHOUMIN的博客 5947

基于TensorFlow实现的自动语音识别(附项目资源)

自动语音识别是一项将人类说话的语音转换成文本或命令的技术。它是自然语言处理(NLP)领域的一个重要分支,旨在使计算机能够理解和处理人类语音。本文使用TensorFlow2.x框架详细的讲解了如何进行数据处理和模型搭建,完整的刨析并实现了一个自动语音识别系统的开发流程。

zzp20031120的博客 6612

AI视频生成技术研究报告:现状、挑战与展望

AI 视频生成技术概述:介绍 AI 视频生成技术的基本概念,回顾其发展历程,从早期依赖图像拼接的简单生成方式,到如今融合多种先进技术的复杂模型应用,梳理技术演进的关键节点和重要突破。同时,分析该技术在当前阶段的特点,包括生成视频的质量、速度、灵活性等方面,以及与传统视频制作方式的差异,阐述 AI 视频生成技术如何改变视频创作的流程和模式。技术实现路径分析。

daqsdfas的博客 4570

TensorFlow实现语音识别

整体介绍: 环境python3.6+TensorFlow1.12 显卡是英伟达GTX1070(后头换个好些的显卡)训练了四天四夜 主要技术点CTC,BRNN,MFCC特征,全连接神经网络 CTC时序分类算法: 适合这种不知道输入输出是否对齐的情况(哪个字对应哪段声音)使用的算法,所以CTC适合语音识别和手写字符识别的任务,而传统的语音识别是基于语音学的方法,通常包含拼写、声学和语音模型等单...

沉默的夏虫 5134

T2T基因组组装实战指南:从数据到完整染色体

本文详细介绍了T2T基因组组装技术的实战指南,从测序数据选择到完整染色体组装的全流程。重点解析了ONT ultra-long和PacBio HiFi测序技术的优势,以及如何攻克端粒和着丝粒等重复区域的组装难题。通过具体案例和实用技巧,帮助研究人员实现从数据到完整染色体的高质量组装。

weixin_29292535的博客 843

[官方培训]22-UE资产优化 Epic 肖月 笔记

Nanite+Lumen目标:面向TA,美术,不影响视觉的前提下,优化运行和编辑效率引擎:UE5.1延迟管线平台:主流PC,Windows 10 with DX12。

Tcohneyn的博客 1574

TensorFlow.js 预训练模型仓库 tfjs-models 全景指南:模型目录、快速上手与开发测试

本指南以 tfjs-models 仓库根目录 [README.md](https://link.gitcode.com/i/5400f2d69525b14f4d67aa71143599d2) 为骨架,系统梳理该仓库托管的全部预训练模型、各类模型的安装与调用方式,并深入介绍单元测试与预提交检查的开发流程。读完本文,你将能够按需挑选图像、音频、文本、深度估计与通用工具类模型,在自己的 TensorFl

gitblog_00272的博客 928

VirtualBox虚拟机拖放文件总失败?手把手教你配置双向拖放与共享文件夹(Ubuntu版)

本文详细指导如何在VirtualBox的Ubuntu虚拟机中配置高效的数据交换方案。核心是安装VirtualBox Guest Additions,并在此基础上开启双向拖放与共享粘贴板功能,同时建立稳定的共享文件夹,彻底解决主机与虚拟机间文件传输失败的问题,构建无缝的跨系统工作环境。

weixin_29245767的博客 231

emotion-recognition-using-speech常见问题排查:依赖冲突与特征提取报错一站式解决

emotion-recognition-using-speech 是一个基于 Python、Scikit-learn 和 Keras 的语音情绪识别开源项目,可以从一段音频中自动识别出高兴、悲伤、愤怒、中性、恐惧等 9 种人类情绪。许多新手在跑通这个语音情绪识别项目时,最大的拦路虎往往不是算法本身,而是环境搭建阶段的两类报错:**依赖冲突**和**特征提取失败**。本文汇总了这些高频问题及对应的解

gitblog_01060的博客 980

基于YOLO26深度学习框架的人脸识别门禁系统的算法研究实现方法

本文研究了基于YOLO26深度学习框架的人脸识别门禁系统实现方法。系统采用YOLO26目标检测算法,通过CSPDarknet53主干网络、特征金字塔结构和注意力机制实现高效人脸检测。研究内容包括数据预处理、模型训练优化和身份验证等关键技术,使用迁移学习策略和CIoU损失函数提升检测精度。该系统可应用于智能安防场景,具有实时性强、识别准确的特点,为门禁管理提供了智能化解决方案。

一键难忘的博客 766

基于FPGA的多通道音频信号采样系统设计

FPGA是随着数字集成电路的发展而逐步演变而来的。从早期的电子管、晶体管、小规模集成电路,到超大规模集成电路(VLSIC),数字集成电路的集成度和性能不断提升。FPGA的出现为系统设计师提供了灵活的设计平台,使其能够在不依赖半导体厂商的情况下快速设计专用集成电路(ASIC)。FPGA具有设计周期短、成本低、开发工具先进等优点,广泛应用于原型设计和产品生产中。VHDL是一种用于描述数字系统的硬件描述语言,其语言形式类似于计算机高级语言,但包含了许多硬件特征语句。

qq_62634009的博客 709

10分钟上手 SpeechRecognition:从 pip install 到第一个语音识别程序的分步教程

🎙️ **SpeechRecognition** 是一个经典的 Python 语音识别库,支持多种引擎与 API,可在线也可离线完成语音转文字。无论你是想给程序加一句"请说话"的语音交互,还是想批量转写音频文件,这篇 10 分钟教程都能带你从 `pip install` 一路走到能跑起来的第一个语音识别程序。 ## 一、SpeechRecognition 是什么?能做什么? 一句话概括:**

gitblog_00513的博客 1004

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

如何在浏览器里训练你的语音助手:tfjs-models 语音命令识别完整教程

想让网页听懂"上、下、左、右"这类指令?TensorFlow.js 的语音命令识别模块(speech-commands)可以帮你做到:它基于浏览器的 WebAudio API 采集麦克风声音,用傅里叶变换生成频谱图,再交给卷积神经网络实时识别,而且**转移学习(训练自定义单词)完全在浏览器里完成**,无需上传音频到服务器。本教程带你从零跑通 demo、读懂原理,并训练出属于你自己的语音助手。 #

gitblog_01018的博客 212

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

基于 Browser FFT 训练自定义 TensorFlow.js 语音命令模型:Python 训练、浏览器部署与 TFLite 转换实战指南

本文围绕 tfjs-models 仓库中 [speech-commands/training/browser-fft](https://link.gitcode.com/i/5cfd80b2ae00194f29ce936185501692) 目录下的两本配套 notebook,系统讲解如何脱离官方预训练模型,用 Python 与 `tf.keras` 训练**只识别你关心的若干关键词**的自定义音

gitblog_00481的博客 1022

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

emotion-recognition-using-speech实时语音测试:让模型实时听懂你的情绪(附麦克风实录)

想不想让电脑"听懂"你现在是开心还是难过?**emotion-recognition-using-speech** 是一个基于 Python、Sci-kit learn 和 Keras 的开源语音情绪识别项目,它能把你的声音实时识别为快乐、悲伤、平静等情绪标签。本文以**实时语音测试**为主线,带新手从环境搭建开始,一步步跑通麦克风录音→特征提取→情绪预测的完整流程,并附上真实的命令行运行实录,让

gitblog_00387的博客 611

emotion-recognition-using-speech应用场景解析:情感计算如何赋能产品推荐与人机交互

语音情感识别(Speech Emotion Recognition,SER)是情感计算领域的核心技术之一,而 emotion-recognition-using-speech 正是这样一个基于 Python、Sci-kit learn 与 Keras 构建的开源语音情感识别项目。它能够从一段普通语音中自动判断说话人的情绪状态,覆盖愤怒、悲伤、开心、中性、平静、恐惧、厌恶、惊喜、无聊共 9 种人类情

gitblog_00599的博客 242

emotion-recognition-using-speech机器学习篇:7大经典分类器评测,谁才是情感识别王者?

语音情感识别(Speech Emotion Recognition)是人工智能领域最迷人的方向之一:让机器听懂声音里的喜怒哀乐。emotion-recognition-using-speech 正是这样一个开源项目,它基于 Python、Scikit-learn 和 Keras 构建完整的语音情感识别系统,内置 RAVDESS、TESS、EMO-DB 四大数据集,并预先训练好了 7 大经典机器学习

gitblog_00944的博客 237

emotion-recognition-using-speech项目全解析:用Python构建语音情感识别系统的终极指南

emotion-recognition-using-speech 是一个开源的语音情感识别项目,基于 Python、Sci-kit learn 与 Keras 构建并训练完整的语音情感识别系统,能够从一段语音中自动预测人类的情绪状态。无论你是想入门语音情感识别的新手,还是希望快速搭建情感识别模型的开发者,这个项目都提供了从数据准备、特征提取到模型训练、实时麦克风测试的完整闭环。本文将从数据集、特征

gitblog_00939的博客 775

[特殊字符] Transformers 快速上手指南:pipeline 推理、AutoClass 加载与 Trainer 训练实战

> 本文基于仓库 [docs/source/fr/quicktour.md](https://link.gitcode.com/i/1b8d78f3f34c4f0479eb2904c0e0dc2d)(法语版快速入门)的核心脉络展开,并结合 [src/transformers](https://link.gitcode.com/i/e04082ba06de2aba4c4240c65b409ad9)

gitblog_00244的博客 4857
上一篇: 7 个开源的TTS(文本转语音)系统推荐
下一篇: TACOTRON:端到端的语音合成
CopperDong
博客等级 码龄14年 1205粉丝 466原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值