java使用CMU sphinx语音识别

java使用CMU sphinx语音识别

    • 一、pom依赖
      • 1、依赖dependency
      • 2、配置仓库repository
    • 二、下载中文资源包
      • 1、下载中文资源包(需要其他语言的选择对应的文件夹即可),中文选择Mandarin
      • 2、将下载后的文件放到项目中
      • 3、代码-识别wav语音文件
      • 4、代码-识别实时输入(本地pc未成功)
        • 4.1 测试端需要有语音输入设备

一、pom依赖

1、依赖dependency

        <!-- CMUSphinx Core Library --><dependency><groupId>edu.cmu.sphinx</groupId><artifactId>sphinx4-core</artifactId><version>5prealpha-SNAPSHOT</version></dependency><!-- CMUSphinx Data Library --><dependency><groupId>edu.cmu.sphinx</groupId><artifactId>sphinx4-data</artifactId><version>5prealpha-SNAPSHOT</version></dependency>

2、配置仓库repository

        <repository><id>snapshots-repo</id><url>https://oss.sonatype.org/content/repositories/snapshots</url><releases><enabled>false</enabled></releases><snapshots><enabled>true</enabled></snapshots></repository>

二、下载中文资源包

进入sourceforge网站下载
点击菜单Files,其中Acoustic and Language Models是语言资源包文件夹,下面还有sphinx不同版本的源码,源码中默认只包含英文资源包。
sphinx的files列表
在这里插入图片描述

1、下载中文资源包(需要其他语言的选择对应的文件夹即可),中文选择Mandarin

在这里插入图片描述
在这里插入图片描述

2、将下载后的文件放到项目中

解压后的文件
在这里插入图片描述
在这里插入图片描述

3、代码-识别wav语音文件

好像只能识别wav格式的文件,m4a试了不行,可以自行尝试看下结果

    public static void speechToTxt2() throws Exception {// 1、配置Configuration conf = new Configuration();conf.setAcousticModelPath("resource:/sphinx/zh/zh_cn.cd_cont_5000");conf.setDictionaryPath("resource:/sphinx/zh/zh_cn.dic");conf.setLanguageModelPath("resource:/sphinx/zh/zh_cn.lm.bin");System.out.println("Loading models...");//        conf.setAcousticModelPath("resource:/edu/cmu/sphinx/models/en-us/en-us");
//        conf.setDictionaryPath("resource:/edu/cmu/sphinx/models/en-us/cmudict-en-us.dict");Context context = new Context(conf);context.setLocalProperty("decoder->searchManager", "allphoneSearchManager");Recognizer recognizer = context.getInstance(Recognizer.class);InputStream stream = ParseUtil.class.getResourceAsStream("/sphinx/wav/2.wav");stream.skip(44);// Simple recognition with generic modelrecognizer.allocate();context.setSpeechSource(stream, TimeFrame.INFINITE);Result result;while ((result = recognizer.recognize()) != null) {SpeechResult speechResult = new SpeechResult(result);System.out.format("Hypothesis: %s\n", speechResult.getHypothesis());System.out.println("List of recognized words and their times:");for (WordResult r : speechResult.getWords()) {System.out.println(r);}//            System.out.println("Lattice contains "
//                    + speechResult.getLattice().getNodes().size() + " nodes");}recognizer.deallocate();}

输出结果如图
其中 Hypothesis: SIL uu o2 c j ie1 r ou3 s r ou3 x r ou1 o2 SIL 就是需要训练的内容。
我们下载的资源文件zh_cn.dic中有已经简单训练的结果
在这里插入图片描述
在这里插入图片描述

4、代码-识别实时输入(本地pc未成功)

调用时,系统能检测到在使用麦克风。但在recognizer.getResult()这行总是会报溢出错误,也有可能是输入的设备不支持,各位可以自行尝试。有结果可以评论学习一下,感谢。

    public static void speechToTxt() throws Exception {// 1、配置Configuration conf = new Configuration();conf.setAcousticModelPath("resource:/sphinx/zh/zh_cn.cd_cont_5000");conf.setDictionaryPath("resource:/sphinx/zh/zh_cn.dic");conf.setLanguageModelPath("resource:/sphinx/zh/zh_cn.lm.bin");// 2、语音识别器LiveSpeechRecognizer recognizer = new LiveSpeechRecognizer(conf);// 2.1 开始识别recognizer.startRecognition(true);// 2.2 识别结果SpeechResult result;while ((result = recognizer.getResult()) != null) {System.out.println(result.getHypothesis());}// 2.3 停止识别recognizer.stopRecognition();}
4.1 测试端需要有语音输入设备

设置-系统-声音-输入输入配置中需要有输入设备,测试麦克风可以查看此设备是否可用
在这里插入图片描述
在这里插入图片描述

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

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

相关文章

企业内训|智能驾驶与智能座舱技术——某汽车厂商

4月25日&#xff0c;东北某市&#xff0c;TsingtaoAI团队为某汽车厂商的智能驾驶业务和研发团队交付“智能驾驶与智能座舱技术”课程。本课程系统讲解智能汽车两大核心领域技术架构与实现路径。课程涵盖智能驾驶感知层&#xff08;激光雷达/毫米波雷达/视觉融合&#xff09;、决…

【数学建模国奖速成系列】优秀论文绘图复现代码(二)

文章目录 国奖论文绘图复现代码&#xff0c;可直接运行柱状图横向柱状图分组柱状图堆叠柱状图堆叠柱状图2三维柱状图完整复现代码 国奖论文绘图复现代码&#xff0c;可直接运行 数模比赛的绘图是非常重要得&#xff0c;这篇文章给大家分享我自己复现的国奖优秀论文的代码&…

GitLab CVE-2024-12444 安全漏洞解决方案

本文分享极狐GitLab 补丁版本 17.11.1, 17.10.5, 17.9.7 的详细内容。这几个版本包含重要的缺陷和安全修复代码&#xff0c;我们强烈建议所有私有化部署用户应该立即升级到上述的某一个版本。对于极狐GitLab SaaS&#xff0c;技术团队已经进行了升级&#xff0c;无需用户采取任…

随机微分方程(SDE):股票价格模型、利率模型的构建

随机微分方程&#xff08;SDE&#xff09;&#xff1a;股票价格模型、利率模型的构建 一、随机微分方程&#xff08;SDE&#xff09;基础&#xff1a;从确定性到随机性的扩展 1. 定义与一般形式 随机微分方程&#xff08;SDE&#xff09;是包含布朗运动&#xff08;随机项&am…

【MCP Node.js SDK 全栈进阶指南】高级篇(1):MCP多服务器协作架构

随着业务规模的不断扩大和系统复杂度的提升,单一服务器架构往往无法满足高并发、高可用性和弹性扩展的需求。在MCP生态系统中,多服务器协作架构成为构建大规模应用的必然选择。本文将深入探讨MCP TypeScript-SDK在多服务器环境下的部署、协作和管理,以及如何构建高可用、高性…

git 修改用户名和邮箱

在 Git 中修改用户名和邮箱地址是常见的任务&#xff0c;这可以确保你的提交记录使用正确的身份信息。你可以通过简单的命令来完成这一操作。 全局配置 修改全局用户名 要修改全局的用户名&#xff0c;请执行以下命令&#xff1a; git config --global user.name "New…

[算法学习]——通过RMQ与dfs序实现O(1)求LCA(含封装板子)

每周五篇博客&#xff1a;&#xff08;3/5&#xff09; 碎碎念 其实不是我想多水一篇博客&#xff0c;本来这篇是欧拉序的博客&#xff0c;结果dfs序也是可以O1求lca的&#xff0c;而且常数更优&#xff0c;结果就变成这样了。。。 前置知识 [算法学习]——dfs序 思想 分…

spark local模式

Spark Local 模式是一种在单台机器上运行 Spark 应用程序的模式&#xff0c;无需搭建分布式集群&#xff0c;适合开发调试、学习以及运行小规模数据处理任务。以下为你详细介绍该模式&#xff1a; 特点 简易性&#xff1a;无需额外配置分布式集群&#xff0c;在单机上就能快速…

用 RxSwift 实现 UITableView 的响应式绑定(超实用示例)

目录 前言 一、环境准备 1.安装 RxSwift 和 RxCocoa 2.导入模块 二、实现一个简单的UITableView 1.实现一个简单的 UITableView 1.实现步骤 1.我们声明一个ViewModel 2.ViewModel和UITableView 绑定 2.实现 UITableView 的代理方法 三、处理点击事件 前言 在 iOS 开发…

【C++】通过红黑树封装map和set

前言&#xff1a; 通过之前的学习&#xff0c;我们已经学会了红黑树和map、set。这次我们要实现自己的map和set&#xff0c;对&#xff0c;使用红黑树进行封装&#xff01; 当然&#xff0c;红黑树内容这里就不在赘述&#xff0c;我们会复用红黑树的代码&#xff0c;所以先将…

非凸科技受邀出席AI SPARK活动,共探生成式AI驱动金融新生态

4月19日&#xff0c;由AI SPARK社区主办的“生成式AI创新与应用构建”主题沙龙在北京举行。活动聚焦生成式AI的技术突破与产业融合&#xff0c;围绕大模型优化、多模态应用、存内计算等前沿议题展开深度探讨。非凸科技受邀出席并发表主题演讲&#xff0c;深入解析金融垂直大模型…

【Java IO流】IO流详解

参考笔记&#xff1a;【Java基础-3】吃透Java IO&#xff1a;字节流、字符流、缓冲流_javaio-CSDN博客 目录 1.IO流简介 1.1 什么是IO流&#xff1f; 1.2 IO流的分类 1.3 字符流和字节流的其他区别 1.4 Java IO流体系图 2.字符编码详解 3. Java的char类型与 Unicode、U…

驱动开发系列56 - Linux Graphics QXL显卡驱动代码分析(三)显示模式设置

一:概述 如之前介绍,在qxl_pci_probe 中会调用 qxl_modeset_init 来初始化屏幕分辨率和刷新率,本文详细看下 qxl_modeset_init 的实现过程。即QXL设备的显示模式设置,是如何配置CRTC,Encoder,Connector 的以及创建和更新帧缓冲区的。 二:qxl_modeset_init 分析 in…

Vue3开发常见性能问题知多少

文章目录 1 常见性能优化瓶颈及原因1.1 响应式数据的过度使用1.2 虚拟 DOM 的频繁更新1.3 组件渲染的冗余1.4 大列表渲染的性能问题1.5 计算属性和侦听器的滥用1.6 事件处理函数的频繁绑定1.7 异步组件的加载性能2 解决方案与优化技巧2.1 合理使用响应式数据2.2 优化虚拟 DOM 更…

Rust Ubuntu下编译生成环境win程序踩坑指南

前言&#xff1a; 1&#xff0c;公司要给一线搞一个升级程序&#xff0c;需要在win下跑。 之前都是找开发总监帮忙&#xff0c;但是他最近比较忙。就让我自己搞。有了下文.。说来惭愧&#xff0c;之前写过一篇ubuntu下编译windows的文章。里面的demo就一句话 fuck world。依赖…

openharmony 4.1 运行busybox工具包(保姆教程)

1.下载 链接&#xff1a;Index of /downloads/binaries 进入其中后&#xff0c;找到 挑选适合你系统架构的版本&#xff0c;例如我这边是 https://busybox.net/downloads/binaries/1.31.0-defconfig-multiarch-musl/busybox-armv7r 右键复制链接 打开迅雷&#xff0c;直接粘…

算法四 习题 1.3

数组实现栈 #include <iostream> #include <vector> #include <stdexcept> using namespace std;class MyStack { private:vector<int> data; // 用于存储栈元素的数组public:// 构造函数MyStack() {}// 入栈操作void push(int val) {data.push_back…

GD32F407单片机开发入门(十七)内部RTC实时时钟及实战含源码

文章目录 一.概要二.RTC基本特点三.GD32单片机RTC内部结构图四.配置一个RTC走秒例程五.工程源代码下载六.小结 一.概要 RTC&#xff08;Real-Time Clock&#xff09;是一种用于追踪和记录实际时间的时钟系统。RTC模块提供了一个包含日期&#xff08;年/月/日&#xff09;和时间…

新能源汽车运动控制器核心芯片选型与优化:MCU、DCDC与CANFD协同设计

摘要&#xff1a;随着新能源汽车产业的迅猛发展&#xff0c;汽车运动控制器的性能和可靠性面临着更高的要求。本文深入探讨了新能源汽车运动控制器中MCU&#xff08;微控制单元&#xff09;、DCDC电源管理芯片和CANFD总线通信芯片的选型要点、优化策略及其协同设计方案。通过综…

2.maven 手动安装 jar包

1.背景 有的时候&#xff0c;maven仓库无法下载&#xff0c;可以手动安装。本文以pentaho-aggdesigner-algorithm-5.1.5-jhyde.jar为例。 2.预先准备 下载文件到本地指定位置。 2.1.安装pom mvn install:install-file \-Dfile/home/wind/tmp/pentaho-aggdesigner-5.1.5-jh…