Java中实现在线语音识别(科大讯飞免费的SKD)、SDK下载和IDEA项目搭建、成功运行【完整代码】

这篇具有很好参考价值的文章主要介绍了Java中实现在线语音识别(科大讯飞免费的SKD)、SDK下载和IDEA项目搭建、成功运行【完整代码】。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、下载语音听写(流式版)SDK

科大讯飞官网:https://www.xfyun.cn/

1.1 实名认证

首先登陆讯飞开放平台:https://passport.xfyun.cn/login,微信扫码关注登录

注册新账号

Java中实现在线语音识别(科大讯飞免费的SKD)、SDK下载和IDEA项目搭建、成功运行【完整代码】

登陆后界面后,进入产品服务–>实时语音转写栏目

Java中实现在线语音识别(科大讯飞免费的SKD)、SDK下载和IDEA项目搭建、成功运行【完整代码】
Java中实现在线语音识别(科大讯飞免费的SKD)、SDK下载和IDEA项目搭建、成功运行【完整代码】

点击个人免费套餐,下面的立即领取,它会提醒我们去实名认证

Java中实现在线语音识别(科大讯飞免费的SKD)、SDK下载和IDEA项目搭建、成功运行【完整代码】

实名认证一下

Java中实现在线语音识别(科大讯飞免费的SKD)、SDK下载和IDEA项目搭建、成功运行【完整代码】
提交完认证之后

Java中实现在线语音识别(科大讯飞免费的SKD)、SDK下载和IDEA项目搭建、成功运行【完整代码】

可以看到认证成功

Java中实现在线语音识别(科大讯飞免费的SKD)、SDK下载和IDEA项目搭建、成功运行【完整代码】
回到平台领取界面,就可以领取了

Java中实现在线语音识别(科大讯飞免费的SKD)、SDK下载和IDEA项目搭建、成功运行【完整代码】

1.2 创建应用并试用免费购买版

点击右边的+号创建应用,很简单的,然后才能提交(不然会提示你还没有创建应用,不让提交)

Java中实现在线语音识别(科大讯飞免费的SKD)、SDK下载和IDEA项目搭建、成功运行【完整代码】

确认下单

Java中实现在线语音识别(科大讯飞免费的SKD)、SDK下载和IDEA项目搭建、成功运行【完整代码】

Java中实现在线语音识别(科大讯飞免费的SKD)、SDK下载和IDEA项目搭建、成功运行【完整代码】

设置下支付密码

Java中实现在线语音识别(科大讯飞免费的SKD)、SDK下载和IDEA项目搭建、成功运行【完整代码】

确认支付就好了

Java中实现在线语音识别(科大讯飞免费的SKD)、SDK下载和IDEA项目搭建、成功运行【完整代码】

Java中实现在线语音识别(科大讯飞免费的SKD)、SDK下载和IDEA项目搭建、成功运行【完整代码】

1.3 下载SDK

在控制台进入后有如下界面,点击语音听写,往下翻就可以找到Java MSC,点击下载就好了

红色箭头指向的是我们上一步创建的的项目名称

Java中实现在线语音识别(科大讯飞免费的SKD)、SDK下载和IDEA项目搭建、成功运行【完整代码】

Java中实现在线语音识别(科大讯飞免费的SKD)、SDK下载和IDEA项目搭建、成功运行【完整代码】

Java中实现在线语音识别(科大讯飞免费的SKD)、SDK下载和IDEA项目搭建、成功运行【完整代码】

解压后目录如下:

Java中实现在线语音识别(科大讯飞免费的SKD)、SDK下载和IDEA项目搭建、成功运行【完整代码】

1.4 一般我们使用SDK调用方式的话,只需要用到APPID。

在本地IDEA项目中使用的话,使用的是自己项目中下载的SDK包,和自己官网的Appid。否则SDK包和Appid不对应的话会报错

Java中实现在线语音识别(科大讯飞免费的SKD)、SDK下载和IDEA项目搭建、成功运行【完整代码】

二、使用IDEA建立项目并实现【一定要使用自己官网的SDK和Appid对应,否则会出错10407】

2.1 在IDEA中新建Maven项目

Java中实现在线语音识别(科大讯飞免费的SKD)、SDK下载和IDEA项目搭建、成功运行【完整代码】

Java中实现在线语音识别(科大讯飞免费的SKD)、SDK下载和IDEA项目搭建、成功运行【完整代码】

2.2 在java下新建com.zhj.voice包,写入VoiceSpeech类,导入MSC的jar包

VoiceSpeech类完整代码如下:【注意导入的各个包名】

package com.zhj.voice;

/**
 * Topic
 * Description
 *
 * @author zhouh
 * @version 1.0
 * Create by 2022/8/3 10:58
 */
import java.awt.Button;

import java.awt.Font;

import java.awt.Frame;

import java.awt.GridLayout;

import java.awt.Panel;

import java.awt.TextArea;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.lang.reflect.Parameter;

import java.util.ArrayList;

import javax.swing.ImageIcon;

import javax.swing.JFrame;

import javax.swing.JLabel;

import com.iflytek.cloud.speech.RecognizerListener;

import com.iflytek.cloud.speech.RecognizerResult;

import com.iflytek.cloud.speech.SpeechError;

import com.iflytek.cloud.speech.SpeechRecognizer;

import com.iflytek.cloud.speech.SpeechUtility;

import com.iflytek.util.DebugLog;

import com.iflytek.util.JsonParser;

import com.iflytek.util.Version;

public class VoiceSpeech extends Frame implements ActionListener {

    Button startBtn;

    Button stopBtn;

    TextArea textArea;

// 语音听写对象

    SpeechRecognizer speechRecognize;

    private static final String DEF_FONT_NAME = "宋体";

    private static final int DEF_FONT_STYLE = Font.BOLD;

    private static final int DEF_FONT_SIZE = 30;

    private static final int TEXT_COUNT = 100;

    public VoiceSpeech() {

// 初始化听写对象

        speechRecognize = SpeechRecognizer.createRecognizer();

// 设置组件

        startBtn = new Button("start");

        stopBtn = new Button("stop");

        textArea = new TextArea();

        Panel btnPanel = new Panel();

        Panel textPanel = new Panel();

// Button startBtn = new Button("开始");

//添加监听器

        startBtn.addActionListener(this);

        stopBtn.addActionListener(this);

        btnPanel.add(startBtn);

        btnPanel.add(stopBtn);

        textPanel.add(textArea);

        add(btnPanel);

        add(textPanel);

// 设置窗体

        setLayout(new GridLayout(2, 1));

        setSize(400, 300);

        setTitle("语音识别");

        setLocation(200, 200);

        setVisible(true);

    }

    public void actionPerformed(ActionEvent e) {

        if (e.getSource() == startBtn) {

            textArea.setText("*************你说的是:");

            if (!speechRecognize.isListening())

                speechRecognize.startListening(recognizerListener);

            else

                speechRecognize.stopListening();

        } else if (e.getSource() == stopBtn) {

            speechRecognize.stopListening();

        }

    }

    /**

     * 听写监听器

     */

    private RecognizerListener recognizerListener = new RecognizerListener() {

        public void onBeginOfSpeech() {

// DebugLog.Log( "onBeginOfSpeech enter" );

// ((JLabel) jbtnRecognizer.getComponent(0)).setText("听写中...");

// jbtnRecognizer.setEnabled(false);

        }

        public void onEndOfSpeech() {

            DebugLog.Log("onEndOfSpeech enter");

        }

        /**

         * 获取听写结果. 获取RecognizerResult类型的识别结果,并对结果进行累加,显示到Area里

         */

        public void onResult(RecognizerResult results, boolean islast) {

            DebugLog.Log("onResult enter");

// 如果要解析json结果,请考本项目示例的 com.iflytek.util.JsonParser类

            String text =

                    JsonParser.parseIatResult(results.getResultString());

//  String text = results.getResultString();

//  JsonParser json = new JsonParser();

//      String newTest = json.parseIatResult(text);

//      textArea.setText(newTest);

            textArea.append(text);

            text = textArea.getText();

            if (null != text) {

                int n = text.length() / TEXT_COUNT + 1;

                int fontSize = Math.max(10, DEF_FONT_SIZE - 2 * n);

                DebugLog.Log("onResult new font size=" + fontSize);

                int style = n > 1 ? Font.PLAIN : DEF_FONT_SIZE;

                Font newFont = new Font(DEF_FONT_NAME, style, fontSize);

                textArea.setFont(newFont);

            }

            if (islast) {

                iatSpeechInitUI();

            }

        }

        public void onVolumeChanged(int volume) {

            DebugLog.Log("onVolumeChanged enter");

            if (volume == 0)

                volume = 1;

            else if (volume >= 6)

                volume = 6;

// labelWav.setIcon(new ImageIcon("res/mic_0" + volume + ".png"));

        }

        public void onError(SpeechError error) {

            DebugLog.Log("onError enter");

            if (null != error) {

                DebugLog.Log("onError Code:" + error.getErrorCode());

                textArea.setText(error.getErrorDescription(true));

                iatSpeechInitUI();

            }

        }

        public void onEvent(int eventType, int arg1, int agr2, String msg) {

            DebugLog.Log("onEvent enter");

        }

    };

    /**

     * 听写结束,恢复初始状态

     */

    public void iatSpeechInitUI() {

// labelWav.setIcon(new ImageIcon("res/mic_01.png"));

// jbtnRecognizer.setEnabled(true);

// ((JLabel) jbtnRecognizer.getComponent(0)).setText("开始听写");

    }

    public static void main(String[] args) {

// 初始化

        StringBuffer param = new StringBuffer();

        param.append( "appid=" + Version.getAppid() );

//  param.append( ","+SpeechConstant.LIB_NAME_32+"=myMscName" );

        SpeechUtility.createUtility( param.toString() );

        VoiceSpeech t = new VoiceSpeech();

    }

}

接着可能会有包名爆红,提醒我们导入Jar包

我们找到1.3中下载好的SDK文件夹下,进入下面的lib–>lib目录下,找到两个jar包。【注意,Java_iat1021_a8641a01 (1)是我下载的SDK解压后的名字】

Java中实现在线语音识别(科大讯飞免费的SKD)、SDK下载和IDEA项目搭建、成功运行【完整代码】

然后将两个jar包导入到项目中:

Java中实现在线语音识别(科大讯飞免费的SKD)、SDK下载和IDEA项目搭建、成功运行【完整代码】

Java中实现在线语音识别(科大讯飞免费的SKD)、SDK下载和IDEA项目搭建、成功运行【完整代码】

点击ok发现com.iflytek.cloud.speech相关的不爆红了

Java中实现在线语音识别(科大讯飞免费的SKD)、SDK下载和IDEA项目搭建、成功运行【完整代码】

但是com.iflytek.util相关的import仍然会爆红,所以我这里下一步是选择在com目录下手动新建iflytek.util包【使其能够手动导入】

2.3 手动新建iflytek.util包,复制导入文件

但是com.iflytek.util相关的import仍然会爆红,所以我这里是选择在com目录下手动新建iflytek.util包【使其能够手动导入】

之后找到1.2步下载解压后的SDK文件夹中的sample

Java中实现在线语音识别(科大讯飞免费的SKD)、SDK下载和IDEA项目搭建、成功运行【完整代码】
跟着目录找到sample–>src–>com–>iflytek–>util下的6个类

Java中实现在线语音识别(科大讯飞免费的SKD)、SDK下载和IDEA项目搭建、成功运行【完整代码】
全选,复制粘贴到我们本地IDEA的对应包com.iflytek.util下

(这里包下Version类名中显示蓝色,是因为我已经上传到github上并且本地IDEA修改代码了,所以会显示蓝色)

Java中实现在线语音识别(科大讯飞免费的SKD)、SDK下载和IDEA项目搭建、成功运行【完整代码】
这时候会发现不报错了,所有的import都正常显示了

Java中实现在线语音识别(科大讯飞免费的SKD)、SDK下载和IDEA项目搭建、成功运行【完整代码】

2.4 修改com.iflytek.util.Version类中的getAppid方法返回值,为自己的Appid

修改com.iflytek.util.Version类中的getAppid方法返回值为我们科大讯飞官网中项目的Appid,因为返回String类型,记得Appid加双引号:

"自己的Appid号"

Java中实现在线语音识别(科大讯飞免费的SKD)、SDK下载和IDEA项目搭建、成功运行【完整代码】

Appid号在1.4节的时候得到了:

Java中实现在线语音识别(科大讯飞免费的SKD)、SDK下载和IDEA项目搭建、成功运行【完整代码】

2.5 复制我们SDK中的.so和.dll文件一共4个到项目根目录下

在本地下载解压好的SDK问价夹中找到lib–>lib包下的这4个文件,Ctrl+A后,Ctrl+C全选复制

Java中实现在线语音识别(科大讯飞免费的SKD)、SDK下载和IDEA项目搭建、成功运行【完整代码】
然后粘贴到本地IDEA的项目根目录下就好了

Java中实现在线语音识别(科大讯飞免费的SKD)、SDK下载和IDEA项目搭建、成功运行【完整代码】

完整工程目录如下:

Java中实现在线语音识别(科大讯飞免费的SKD)、SDK下载和IDEA项目搭建、成功运行【完整代码】

至此,项目搭建就完成了。

三、启动项目

进入VoiceSpeech类中运行main函数就可以成功启动项目且不报错了:

Java中实现在线语音识别(科大讯飞免费的SKD)、SDK下载和IDEA项目搭建、成功运行【完整代码】

运行后会弹出弹框,点击start说话就可以识别到了。

Java中实现在线语音识别(科大讯飞免费的SKD)、SDK下载和IDEA项目搭建、成功运行【完整代码】

识别后想要再次说话识别,点击stop后再点击start就可以了

四、常见报错

  • 使用科大飞讯语音合成报 20021 引擎错误:原因和解决参考我的这一篇博客使用科大飞讯语音合成SDK报 20021 引擎错误
  • 于讯飞科大导入的10407问题:原因(没复制.so和.ddl文件)和解决办法参考我的这一篇博客关于讯飞科大语音识别SDK导入的10407问题

参考:在Java中实现在线语音识别

Idea导入jar包的两种方法文章来源地址https://www.toymoban.com/news/detail-419832.html

到了这里,关于Java中实现在线语音识别(科大讯飞免费的SKD)、SDK下载和IDEA项目搭建、成功运行【完整代码】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 技术解读 | 科大讯飞语音技术最新进展之二:语音识别与语音合成

    这一篇内容将围绕语音识别与合成方向,继续为大家带来相关技术解析。 “风物长宜放眼量”。面向人机交互更加自然流畅的未来,智能语音技术进展如何?该走向何方? 以下内容根据讯飞研究院杰出科学家潘嘉在NCMMSC 2022上的主题演讲《科大讯飞语音技术前沿进展》整理。

    2024年02月07日
    浏览(61)
  • UE4如何接入科大讯飞的语音识别

    本文用的是UE4 4.27测试 安卓版测试链接: 链接:https://pan.baidu.com/s/1CsdJecfyMTdxNd6XfSECQQ 提取码:m122 B站视频连接:https://space.bilibili.com/449549424?spm_id_from=333.1007.0.0 GitHub地址:https://github.com/zhangmei126/XunFei 第一步 新建一个VS的UE4 4.27项目工程(注意是UE4 4.27 VS项目) 第二步 新建一

    2023年04月08日
    浏览(55)
  • 【人工智能】科大讯飞语音识别应用开发(第三集)

    这次需要对科大讯飞语音识别接口进行语音识别应用开发,前两次都是通过WebAPI调用接口,这次换一下,通过SDK调用接口 下面是开发的详细记录过程(基于前两次的基础上) 网址:https://www.xfyun.cn/services/voicedictation 不领服务量为500且该包免费( 貌似是不同应用都可以免费领

    2024年02月13日
    浏览(54)
  • 科大讯飞语音合成Java springboot集成

    科大讯飞语音合成 文本转语音 一、引入依赖: 二、下载响应的sdk,我这里是下载的java win版本的sdk SDK下载 - 科大讯飞api接口 - 讯飞开放平台 三、具体代码: 从下载的依赖里面找到对应文件,给代码里面替换成你的绝对路径,运行即可 备注:这个地方需要你自己的账号下载

    2024年02月15日
    浏览(51)
  • vue3+vite+ts项目集成科大讯飞语音识别(项目搭建过程以及踩坑记录)

    🐱 个人主页: 不叫猫先生 🙋‍♂️ 作者简介:前端领域新星创作者、阿里云专家博主,专注于前端各领域技术,共同学习共同进步,一起加油呀! 💫系列专栏:vue3从入门到精通、TypeScript从入门到实践 📢 资料领取:前端进阶资料以及文中源码可以找我免费领取 🔥 前端

    2023年04月09日
    浏览(49)
  • 科大讯飞 新版AIkit 离线语音听写 Java 版本

    前言:科大讯飞的新版离线语音听写,由于官网demo是kt语言开发的,咱也看不懂kt,搜遍了全网也没看到一个java版的新版离线语音demo,现记录下,留给有缘人参考!!!!!毕竟咱在这上面遇到了不少的坑。如果能留言指正,那就更好了。 实测一点问题都没 一、先把官网

    2024年02月22日
    浏览(43)
  • GEC6818开发板JPG图像显示,科大讯飞离线语音识别包Linux_aitalk_exp1227_1398d7c6运行demo程序,开发板实现录音

    体积小,使用到数据结构里面的 霍夫曼树(哈夫曼树) 对数据进行压缩 1.对jpegsrc.v8c.tar.gz进行arm移植 移植方式如下: 1.将jpegsrc.v8c.tar.gz解压缩到ubuntu ~ 2.进入~/jpeg-8c对jpeg库进行配置 3.编译 4.安装,将动态库存放到 /home/gec/armJPegLib 5.清空编译记录 6.自己查看下 /home/gec/armJPegLib目

    2024年01月17日
    浏览(53)
  • 科大讯飞语音SDK下载及测试

    一、SDK 下载 进入讯飞开发平台官网http://www.xfyun.cn/,右上角进行注册登录,登录后点击进入SDK下载。            2.创建新应用               3.填入相关信息         4.创建完后提交后回到SDK下载页面,刷新页面,应用选择前面创建的应用,平台选择Linux,SDK选择

    2024年02月08日
    浏览(74)
  • vue 利用科大讯飞实现实时语音转写

    1:新建js文件,该文件在科大讯飞api的demo种可以找到 2: 引入第一个文件在vue页面中 3:如果在引入的过程中有些关于worker的报错,可以参考以下方法  在vue.config.js中加入  

    2024年02月12日
    浏览(45)
  • C#调用科大讯飞离线语音合成实现文本转语音

    文本转语音(Text To Speech),简称TTS,在很多业务场景会用到,比如广播大厅,人机互动等。C#要实现TTS有不少选择,比如调用System.Speech,此处就不细说了,下面主要介绍一下C#调用科大讯飞的离线语音合成SDK来实现文本转语音。 地址:[https://www.xfyun.cn/service/offline_tts] 一、创建

    2024年02月12日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包