失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > JAVA关于实现科大讯飞语音合成功能

JAVA关于实现科大讯飞语音合成功能

时间:2022-10-05 09:56:21

相关推荐

JAVA关于实现科大讯飞语音合成功能

最近人工智能的课上老师布置了一个关于科大讯飞语音合成功能制作的课业。

刚在课上听到这个作业,我的内心是崩溃的,嗯,看起来好难的样子=_=的确有点难。

首先看看最终结果~

科大讯飞语音在线合成实现视频

一. 下载相关SDK

首先进入科大讯飞的官网,注册账号,进入控制台

进入控制台后创建应用

接着进入应用后台,下载相应的SDK,同时可查看在SDK旁边的文档

根据文档部署开发环境

点我进入SDK文档

配置开发环境之后就可以编写JAVA代码来实现了;

我的想法是设置一个界面,有开始按钮和结束按钮。

代码中有注释来说明此行代码的作用,大家看代码理解即可。

//语音合成功能//MyFrame 类 ;包为com.iflytekpackage com.iflytek;import com.iflytek.cloud.speech.*;import java.awt.BorderLayout;import java.awt.Container;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JPanel;import javax.swing.JTextArea;public class MyFrame extends JFrame{private static final long serialVersionUID = 1L;JPanel panelNorth, panelSouth;JTextArea textArea;JButton button_start, button_stop;private SpeechSynthesizer mTts;public static void main(String[] args){new MyFrame();}public MyFrame(){initIfly();//初始化连接讯飞//画布设置Container con = this.getContentPane();con.setLayout(new BorderLayout());this.setSize(500, 200);this.setLocationRelativeTo(null);this.setResizable(true);this.setDefaultCloseOperation(3);this.setLayout(new BorderLayout());setFrame();this.add(panelSouth, BorderLayout.SOUTH);this.add(panelNorth, BorderLayout.NORTH);setVisible(true);}//初始化连接讯飞public void initIfly(){mTts = SpeechSynthesizer.createSynthesizer( );// SpeechUtility.createUtility("appid=XXXXXX");//冲突SpeechUtility.createUtility( SpeechConstant.APPID+"=XXXXXX");}public void setFrame(){//设置按钮panelNorth = new JPanel();panelSouth = new JPanel();textArea = new JTextArea(50, 30);button_start = new JButton("在线语音合成");button_start.addActionListener(e ->{setting();//textArea.setText("");//获取画布的字符串,然后播放输出字符串String Text = textArea.getText();if (!mTts.isSpeaking()) mTts.startSpeaking(Text,mSynListener);else mTts.stopSpeaking();});button_stop = new JButton("停止");button_stop.addActionListener(e ->{mTts.stopSpeaking();iatSpeechInitUI();});panelNorth.add(textArea);panelSouth.add(button_start);panelSouth.add(button_stop);}void setting()// 属性设置{final String engType = "cloud";mTts.setParameter(SpeechConstant.VOICE_NAME, "xiaoyan");//设置发音人mTts.setParameter(SpeechConstant.SPEED, "150");//设置语速mTts.setParameter(SpeechConstant.VOLUME, "80");//设置音量,范围0~100//设置合成音频保存位置(可自定义保存位置),保存在“./tts_test.pcm”//如果不需要保存合成音频,注释该行代码//mTts.setParameter(SpeechConstant.TTS_AUDIO_PATH, "./tts_test.pcm");}//private RecognizerListener recognizerListener = new RecognizerListener()private SynthesizerListener mSynListener = new SynthesizerListener(){@Overridepublic void onEvent(int arg1, int arg2, int arg3,int arg4, Object msg,Object msg2){}@Overridepublic void onSpeakBegin(){button_start.setText("听写中...");button_start.setEnabled(false);}@Overridepublic void onCompleted(SpeechError error) {if (null != error){textArea.setText(error.getErrorDescription(true));iatSpeechInitUI();}}//讯飞SDK覆盖抽象类方法@Overridepublic void onBufferProgress(int percent, int beginPos, int endPos, String info) {}@Overridepublic void onSpeakPaused() {}@Overridepublic void onSpeakProgress(int percent, int beginPos, int endPos) {}@Overridepublic void onSpeakResumed() {}};public void iatSpeechInitUI(){button_start.setEnabled(true);button_start.setText("在线语音合成");}//MizarMa完成于.11.18 15:23 }

如果觉得《JAVA关于实现科大讯飞语音合成功能》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。