相关文章推荐
健壮的芹菜  ·  chrome禁用沙盒-掘金·  1 年前    · 
踢足球的奔马  ·  【linux基础】linux ...·  1 年前    · 
谦逊的石榴  ·  android - ...·  1 年前    · 

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

1.1 实名认证

首先登陆讯飞开放平台: https://passport.xfyun.cn/login ,微信扫码关注登录
在这里插入图片描述

注册新账号

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

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

实名认证一下

在这里插入图片描述
提交完认证之后

可以看到认证成功

在这里插入图片描述
回到平台领取界面,就可以领取了

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

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

设置下支付密码

确认支付就好了

1.3 下载SDK

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

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

解压后目录如下:

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

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

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

2.1 在IDEA中新建Maven项目

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);
                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解压后的名字】

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

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

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

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

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

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

在这里插入图片描述
跟着目录找到sample–>src–>com–>iflytek–>util下的6个类

在这里插入图片描述
全选,复制粘贴到我们本地IDEA的对应包com.iflytek.util下

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

在这里插入图片描述
这时候会发现不报错了,所有的import都正常显示了

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

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

"自己的Appid号"

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

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

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

在这里插入图片描述
然后粘贴到本地IDEA的项目根目录下就好了

完整工程目录如下:

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

三、启动项目

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

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

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

四、常见报错

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

Idea导入jar包的两种方法

科大讯飞语音识别自己写的demo,已经过自测没有问题; 1.使用前建议下载科大讯飞的接口文档 http://doc.xfyun.cn/msc_java/299249; MSC Develop Manual for Java.pdf 2.必须添加语音识别的jar包
语音识别功能已经是一个很普及的功能,在特定情境下,能带给人们方便的交互的体验,比如驾驶时使用语音进行唤醒手机,各类智能音响产品,语音控制智能电视等。本文主要介绍在APICloud平台使用科大讯飞SDK快速实现语音识别功能。 一、效果预览 二、功能实现 在注册好APICloud账号后,进入控制台,添加iflyRecognition模块。iflyRecognition模块封装了科大讯飞SDK 的语音听写、语音在线成功能。 使用流程: 1、注册讯飞开放平台账号 2、在讯飞开放平台创建应用,并添加语音听写
运放(Operational Amplifier,简称Op Amp)是一种具有高增益、高输入阻抗、低输出阻抗、线性度高、可控制的放大器,广泛应用于电路设计。运放可以用来放大电压、电流和信号,同时也可以用于滤波、积分、微分等运算。 运放放大器是一种基本的放大器电路,由一个运放芯片和若干个外部元件组成。在运放放大器,运放芯片起到信号放大的作用,外部元件则用于控制运放芯片的放大倍数、输入输出阻抗等参数。 运放放大器的基本电路图如下: ![opamp](https://i.imgur.com/2sKd1Jn.png) 其,$V_{in}$为输入信号,$V_{out}$为输出信号,$R_1$和$R_2$组成反馈电路,$R_3$和$R_4$组成输入电路。运放芯片的输出信号将通过$R_1$和$R_2$反馈回运放芯片的输入端,从而控制其放大倍数和输出电压。该电路,反馈电路的放大倍数将由$R_1$和$R_2$的比值决定。 运放放大器的特点: 1. 高增益:运放放大器的放大倍数非常高,可以达到几十万甚至上百万倍。 2. 高输入阻抗:运放放大器的输入阻抗非常高,可以达到几百MΩ,因此对输入信号的影响极小。 3. 低输出阻抗:运放放大器的输出阻抗非常低,可以达到几Ω,因此输出信号的稳定性非常高。 4. 线性度高:运放放大器的输入输出特性非常线性,可以保证输入信号和输出信号之间的比例关系不变。 5. 可控制:运放放大器可以通过外部电路控制其放大倍数、输入输出阻抗等参数。 运放放大器的应用: 1. 信号放大:运放放大器可以用于放大各种信号,如声音信号、光电信号、生物信号等。 2. 滤波:运放放大器可以用于滤波,如低通滤波、高通滤波、带通滤波等。 3. 积分、微分:运放放大器可以用于积分、微分等运算,如电容积分电路、电阻微分电路等。 4. 控制系统:运放放大器可以用于控制系统的比例控制、积分控制、微分控制等。 总之,运放放大器是电路设计非常重要的基本元件,广泛应用于各种电子设备
ValueError: Target size (torch.Size([4, 20, 320, 320])) must be the same as input size (torch.Size([ YOLO等目标检测模型的非极大值抑制NMS和评价指标(Acc, Precision, Recall, AP, mAP, RoI)、YOLOv5中mAP@0.5与mAP@0.5:0.95的含义 控制层是使用PostMapping与GetMapping/DeleteMapping的区别是,可以携带返回响应体。比如你需要进行用户名密码在数据库里查询是否有这个用户。注意传入参数需要添加@RequestBody而不是@PathVari啥的不会拼 @PostMapping("/login") public String login(@RequestBody Userinfo userinfo) { 解决使用latex报错Can be used only in preamble. CSDN-Ada助手: AI 写作助手上线啦!限免 4 天,快来创作试试功能吧~https://editor.csdn.net/md/?not_checkout=1&utmsource=blog_comment_recall YOLO等目标检测模型的非极大值抑制NMS和评价指标(Acc, Precision, Recall, AP, mAP, RoI)、YOLOv5中mAP@0.5与mAP@0.5:0.95的含义 张牙舞爪的小白π: 谢谢讲解!表情包 手把手教你使用Yolov5制作并训练自己的数据集 m0_51123425: 老哥,那个LabelmeToXYB.py是哪里的,labelme和yolov5都没有啊 FCN全卷积网络理解及代码实现(来自pytorch官方实现) 你用劈里啪啦的ppt为什么不说明一下,或者在前面感谢一下他?