【虚幻引擎】UE4/UE5科大讯飞文字合成语音
生活随笔
收集整理的這篇文章主要介紹了
【虚幻引擎】UE4/UE5科大讯飞文字合成语音
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一、鏈接地址
鏈接:https://pan.baidu.com/s/15Qoc48x3DLpw4eW1qHXInQ?
提取碼:jqpx?
B站視頻鏈接:https://space.bilibili.com/449549424?spm_id_from=333.1007.0.0?
二、案例介紹
第一步:首先進入訊飛開放平臺注冊一個賬號,然后創建一個創建一個應用,命名按照你自己的想法來,會產生一個APPID,具體參考UE4如何接入科大訊飛的語音識別_ue4 科大訊飛的語音識別_飛起的豬的博客-CSDN博客
第二步:下載科大訊飛的語音轉文字SDK,打開AndriodStudio運行
?參考以下代碼寫的
private static String TAG = "TtsDemo"; // 語音合成對象private SpeechSynthesizer mTts;// 默認發音人private String voicer="xiaoyan";private String[] cloudVoicersEntries;private String[] cloudVoicersValue ;//緩沖進度private int mPercentForBuffering = 0; //播放進度private int mPercentForPlaying = 0;// 云端/本地選擇按鈕private RadioGroup mRadioGroup;// 引擎類型private String mEngineType = SpeechConstant.TYPE_CLOUD;// 語音+安裝助手類//ApkInstaller mInstaller ;private Toast mToast;private SharedPreferences mSharedPreferences;@SuppressLint("ShowToast")public void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);this.requestWindowFeature(Window.FEATURE_NO_TITLE);setContentView(R.layout.ttsdemo);initLayout();// 初始化合成對象mTts = SpeechSynthesizer.createSynthesizer(this, mTtsInitListener);mSharedPreferences = getSharedPreferences("com.iflytek.setting", Activity.MODE_PRIVATE);mToast = Toast.makeText(this,"",Toast.LENGTH_SHORT);}/*** 初始化Layout。*/private void initLayout() {findViewById(R.id.tts_play).setOnClickListener(this);findViewById(R.id.tts_cancel).setOnClickListener(this);findViewById(R.id.tts_pause).setOnClickListener(this);findViewById(R.id.tts_resume).setOnClickListener(this);} @Overridepublic void onClick(View view) {switch(view.getId()) {// 開始合成case R.id.tts_play:String text = ((EditText) findViewById(R.id.tts_text)).getText().toString();// 設置參數setParam();int code = mTts.startSpeaking(text, mTtsListener);if (code != ErrorCode.SUCCESS) {if(code == ErrorCode.ERROR_COMPONENT_NOT_INSTALLED){//未安裝則跳轉到提示安裝頁面//mInstaller.install();}else {showTip("語音合成失敗,錯誤碼: " + code); }}break;// 取消合成case R.id.tts_cancel:mTts.stopSpeaking();break;// 暫停播放case R.id.tts_pause:mTts.pauseSpeaking();break;// 繼續播放case R.id.tts_resume:mTts.resumeSpeaking();break;}}/*** 初期化監聽。*/private InitListener mTtsInitListener = new InitListener() {@Overridepublic void onInit(int code) {Log.d(TAG, "InitListener init() code = " + code);if (code != ErrorCode.SUCCESS) {showTip("初始化失敗,錯誤碼:"+code);} }};/*** 合成回調監聽。*/private SynthesizerListener mTtsListener = new SynthesizerListener() {@Overridepublic void onSpeakBegin() {showTip("開始播放");}@Overridepublic void onSpeakPaused() {showTip("暫停播放");}@Overridepublic void onSpeakResumed() {showTip("繼續播放");}@Overridepublic void onBufferProgress(int percent, int beginPos, int endPos,String info) {mPercentForBuffering = percent;mToast.setText(String.format(getString(R.string.tts_toast_format),mPercentForBuffering, mPercentForPlaying));mToast.show();}@Overridepublic void onSpeakProgress(int percent, int beginPos, int endPos) {mPercentForPlaying = percent;showTip(String.format(getString(R.string.tts_toast_format),mPercentForBuffering, mPercentForPlaying));}@Overridepublic void onCompleted(SpeechError error) {if(error == null){showTip("播放完成");}else if(error != null){showTip(error.getPlainDescription(true));}}@Overridepublic void onEvent(int eventType, int arg1, int arg2, Bundle obj) {}};private void showTip(final String str){runOnUiThread(new Runnable() {@Overridepublic void run() {mToast.setText(str);mToast.show();}});}/*** 參數設置* @param param* @return*/private void setParam(){//設置合成if(mEngineType.equals(SpeechConstant.TYPE_CLOUD)){mTts.setParameter(SpeechConstant.ENGINE_TYPE, SpeechConstant.TYPE_CLOUD);//設置發音人mTts.setParameter(SpeechConstant.VOICE_NAME,voicer);}else {mTts.setParameter(SpeechConstant.ENGINE_TYPE, SpeechConstant.TYPE_LOCAL);//設置發音人 voicer為空默認通過語音+界面指定發音人。mTts.setParameter(SpeechConstant.VOICE_NAME,"");}//設置語速mTts.setParameter(SpeechConstant.SPEED,mSharedPreferences.getString("speed_preference", "30"));//設置音調mTts.setParameter(SpeechConstant.PITCH,mSharedPreferences.getString("pitch_preference", "50"));//設置音量mTts.setParameter(SpeechConstant.VOLUME,mSharedPreferences.getString("volume_preference", "80"));//設置播放器音頻流類型mTts.setParameter(SpeechConstant.STREAM_TYPE,mSharedPreferences.getString("stream_preference", "3"));}@Overrideprotected void onDestroy() {super.onDestroy();mTts.stopSpeaking();// 退出時釋放連接mTts.destroy();}第三步:將下載的SDK里面的lib,srcy文件替換
?第四步:在UE4里面創建插件,通過APL_xml來將UE4的代碼和Java 代碼相關聯
?第五步:寫C++和藍圖,在藍圖里面調用C++函數
?第六步:創建UMG,
?結果:
總結
以上是生活随笔為你收集整理的【虚幻引擎】UE4/UE5科大讯飞文字合成语音的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 裁剪图像的黑边(图像拼接后的黑边去除)
- 下一篇: Python把视频转为 gif 图片——