java使用CMU sphinx语音识别

java使用CMU sphinx语音识别

一、pom依赖

1、依赖dependency

xml 复制代码
        <!-- 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

xml 复制代码
        <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不同版本的源码,源码中默认只包含英文资源包。

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


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

解压后的文件

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

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

java 复制代码
    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 model
        recognizer.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()这行总是会报溢出错误,也有可能是输入的设备不支持,各位可以自行尝试。有结果可以评论学习一下,感谢。

java 复制代码
    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 测试端需要有语音输入设备

设置-系统-声音-输入输入 配置中需要有输入设备,测试麦克风 可以查看此设备是否可用

相关推荐
feasibility.4 小时前
让OpenCode/OpenClaw的AI/Agent准确识别图表文字:PaddleOCR-VL-1.5 封装为全局 OCR skills
人工智能·aigc·ocr·ai编程
齐齐大魔王5 小时前
智能语音处理(一)
人工智能·语音识别
AI精钢7 小时前
Agent Harness,正在成为新的 MLOps
人工智能·自然语言处理·语音识别·mlops·ai agent·agentops·ai engineering
带娃的IT创业者7 小时前
可选依赖的优雅降级:从思维导图双引擎到语音识别三级容错的实战设计
人工智能·语音识别·xcode
一招定胜负7 小时前
【实战】Python + 讯飞语音识别 + 通义千问:课堂视频自动转结构化教学数据
python·音视频·语音识别
Roselind_Yi8 小时前
技术拆解:《从音频到动效:我是如何用 Web Audio API 拆解音乐的?》
前端·javascript·人工智能·音视频·语音识别·实时音视频·audiolm
Coovally AI模型快速验证9 小时前
2.5GB 塞进浏览器:Mistral 开源实时语音识别,延迟不到半秒
人工智能·5g·计算机视觉·开源·语音识别
AI人工智能+10 小时前
融合计算机视觉与自然语言处理的道路运输经营许可证识别技术,实现从图像预处理、关键信息定位、字符识别到语义结构化输出的端到端闭环
计算机视觉·自然语言处理·ocr·道路运输经营许可证识别
兮℡檬,1 天前
文档ocr
ocr
kaisun641 天前
树莓派4B上使用INMP441麦克风进行语音识别:从I2S配置到Python环境搭建全记录
python·语音识别·树莓派