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");
	}
	
}



到這

我們就結束了
來看看效果吧
在這裏插入圖片描述
有錯誤的話可以私信我哈,評論區也會回覆的;感謝大家的支持!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章