java学习之讯飞合成语音的使用--简单语音合成的使用

java eclipse基于讯飞开放平台的语音合成技术学习demo

                                   ---我是来自IT界的搬运工(*^▽^*)

老规矩,先来一张图
就是很好看

话不多说 按步就搬

D1:我们先去eclipse中创建一个非常普通的java项目;
如果你创建项目不明白的话
可以移步这我的小破站
链接: link
创建完成之后进入手撸环节
长这样
在上手之前让我们打开百度
在这里插入图片描述
然后进入到讯飞开放平台
在这里插入图片描述
这里的右上角,如果第一次使用的话,你需要注册一个账号。注册成为开发者,这样就可以愉快的玩讯飞AI了,(〃‘▽’〃)
这里注册好了之后,左边会有一个控制台,进入这里就创建属于你自己的应用啦
在这里插入图片描述
我们这次主要演示语音合成的技术我们需要下载语音合成的技术SDK
如图所示
在这里插入图片描述
做完这些
详细java SDK文档介绍,可以查阅讯飞官方网站
https://www.xfyun.cn/doc/tts/online_tts/Java-SDK.html

现在只差一步

在这里插入图片描述
在项目中新建lib文件夹
把我们下载的SDK文件夹打开,在里面找到如下部分
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
红色方框的部分是我们需要的
把我们需要的复制到项目中
在这里插入图片描述
ok了,我们就完成准备工作了

========================================================
一道华丽的分割线

杨氏表演法则 showtime

下面开始上手敲
在这里插入图片描述

在这里插入图片描述

这一步是将语音识别的依赖jar包添加到我们项目的构造路径中;必须!

=============================

为了方便显示,我们以学习过程中的图形界面为例
// package iflytek;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Container;
import java.awt.GraphicsEnvironment;
import java.awt.Point;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextArea;

import com.iflytek.cloud.speech.SpeechConstant;
import com.iflytek.cloud.speech.SpeechError;
import com.iflytek.cloud.speech.SpeechSynthesizer;
import com.iflytek.cloud.speech.SpeechUtility;
import com.iflytek.cloud.speech.SynthesizerListener;

public class iflytekdemo  extends JFrame {
/*
 * 我们先构造一个画布用作容器面板,然后在面板中添加一个输入框,让我们输入的文字可以被识别成语音
 * 以此来达到一个效果
 * */
	 private JFrame win;
	 private JPanel  pan;// 主面板
	 private JPanel pan1;
	private JPanel  pan2;
	private JTextArea text;
	private JButton btn_1,btn_2;
	
	//设置一个语音同步器
	private SpeechSynthesizer mc;
	
	public static void main(String[] args) {
        new iflytekdemo();
}
	public iflytekdemo() {
		
		//设置一个容器
		   Container con = this.getContentPane();
	        con.setLayout(new BorderLayout());
	        this.setTitle("java学习之讯飞合成语音的使用--简单语音合成的使用");
	        this.setSize(500, 300);
		   this.setLocationRelativeTo(null); 
	        this.setResizable(true);
	        this.setLayout(new BorderLayout());
	        Frame();
	        this.add(pan2, BorderLayout.SOUTH);
	        this.add(pan1, BorderLayout.NORTH);
	       this. setVisible(true);
        //设置完成之后,我们需要对讯飞语音进行初始化
        initiflytek();
	}

	private void initiflytek() {
		// TODO 自动生成的方法存根
		//初始化语音的时候,我们需要先初始化语音同步,并且设置语音技术的账户id
		 mc = SpeechSynthesizer.createSynthesizer();
		SpeechUtility.createUtility("appid=你自己的讯飞平台应用有APPID");	
	}
	private void Frame() {
		// TODO 自动生成的方法存根
		//设置按钮
        pan1 = new JPanel();
        pan2 = new JPanel();
        text = new JTextArea(50, 30);
        text.setText("欢迎来到安徽信息工程学院");
        btn_1 = new JButton("点击语音合成");
        btn_1.addActionListener(e ->
        {
        	voiceset();
            String Text = text.getText();
          
			if (!mc.isSpeaking()) mc.startSpeaking(Text, mSynListener);
            else mc.stopSpeaking();
        });
        btn_2 = new JButton("停止");
        btn_2.addActionListener(e ->
        {
            mc.stopSpeaking();
            iatSpeechInitUI();
        });
        pan1.add(text);
        pan2.add(btn_1);
        pan2.add(btn_2);
    

	}
	private SynthesizerListener mSynListener = new SynthesizerListener() {
        @Override
        public void onEvent(int arg1, int arg2, int arg3, int arg4, Object msg, Object msg2) {
        }

        @Override
        public void onSpeakBegin() {
            btn_1.setText("听写中...");
            btn_1.setEnabled(false);
        }

        @Override
        public void onCompleted(SpeechError error) {
            if (null != error) {
                text.setText(error.getErrorDescription(true));
                iatSpeechInitUI();
            }
        }

        //讯飞SDK覆盖抽象类方法
        @Override
        public void onBufferProgress(int percent, int beginPos, int endPos, String info) {
        }

        @Override
        public void onSpeakPaused() {
        }

        @Override
        public void onSpeakProgress(int percent, int beginPos, int endPos) {
        }

        @Override
        public void onSpeakResumed() {
        }
    };

	private void iatSpeechInitUI() {
		// TODO 自动生成的方法存根
		 btn_1.setEnabled(true);
	        btn_1.setText("点击合成语音");
	}
	
	private void voiceset() {
		// TODO 自动生成的方法存根
		 final String engType = "cloud";
	        mc.setParameter(SpeechConstant.VOICE_NAME, "xiaoyan");//设置发音人
	        mc.setParameter(SpeechConstant.SPEED, "150");//设置语速
	        mc.setParameter(SpeechConstant.VOLUME, "80");//设置音量,范围0~100
	        //mc.setParameter(SpeechConstant.TTS_AUDIO_PATH, "./tts_test.pcm");
	}
	
}



到这

我们就结束了
来看看效果吧
在这里插入图片描述
有错误的话可以私信我哈,评论区也会回复的;感谢大家的支持!

  • 8
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值