【虚幻引擎】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运行

ue4 文字转语音,虚幻,ue4,ue5

 参考以下代码写的

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

 @Override
 public 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() {
  @Override
  public void onInit(int code) {
   Log.d(TAG, "InitListener init() code = " + code);
   if (code != ErrorCode.SUCCESS) {
          showTip("初始化失败,错误码:"+code);
         }  
  }
 };

 /**
  * 合成回调监听。
  */
 private SynthesizerListener mTtsListener = new SynthesizerListener() {
  @Override
  public void onSpeakBegin() {
   showTip("开始播放");
  }

  @Override
  public void onSpeakPaused() {
   showTip("暂停播放");
  }

  @Override
  public void onSpeakResumed() {
   showTip("继续播放");
  }

  @Override
  public 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();
  }

  @Override
  public void onSpeakProgress(int percent, int beginPos, int endPos) {
   mPercentForPlaying = percent;
   showTip(String.format(getString(R.string.tts_toast_format),
     mPercentForBuffering, mPercentForPlaying));
  }

  @Override
  public void onCompleted(SpeechError error) {
   if(error == null)
   {
    showTip("播放完成");
   }
   else if(error != null)
   {
    showTip(error.getPlainDescription(true));
   }
  }

  @Override
  public void onEvent(int eventType, int arg1, int arg2, Bundle obj) {
   
  }
 };

 private void showTip(final String str){
  runOnUiThread(new Runnable() {
   @Override
   public 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"));
 }
 
 @Override
 protected void onDestroy() {
  super.onDestroy();
  mTts.stopSpeaking();
  // 退出时释放连接
  mTts.destroy();
 }

第三步:将下载的SDK里面的lib,srcy文件替换

ue4 文字转语音,虚幻,ue4,ue5

 第四步:在UE4里面创建插件,通过APL_xml来将UE4的代码和Java 代码相关联

ue4 文字转语音,虚幻,ue4,ue5

 第五步:写C++和蓝图,在蓝图里面调用C++函数

ue4 文字转语音,虚幻,ue4,ue5

 第六步:创建UMG,

ue4 文字转语音,虚幻,ue4,ue5

ue4 文字转语音,虚幻,ue4,ue5

 结果:

ue4 文字转语音,虚幻,ue4,ue5文章来源地址https://www.toymoban.com/news/detail-536104.html

到了这里,关于【虚幻引擎】UE4/UE5科大讯飞文字合成语音的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【虚幻引擎】UE4/UE5插件

    Blank:空白插件,可以从头开始自己定义想要的插件风格和内容,用此模板创建的插件不会有注册或者菜单输入。 BlueprintLibrary:创建一个含有蓝图函数库的插件,此模板函数都是静态全局函数,可以在蓝图中直接调用。 ContentOnly:创建一个只包含内容的空白文件 Editor Toolba

    2024年02月05日
    浏览(75)
  • 【虚幻引擎】UE4/UE5 pak挂载

     找到:D:UEUE_4.27EngineBinariesWin64,  WindowS+R打开CMD命令 运行UnrealPak,运行结果如下      注意如果想要加载Pak内资源,那么这些资源必须是经过Cook的。如果打包的是未Cook的资源,那么即使Pak挂载成功,也不可能会成功加载Pak内资源。  Cook好之后,存储的路径在你的I:DBJ

    2024年02月10日
    浏览(75)
  • 【虚幻引擎UE】UE4/UE5 新人科普向

    Unreal Engine是当前最为流行的游戏引擎之一,具有丰富的游戏开发功能和强大的游戏引擎渲染能力。 UE5官方文档:UE5官方文档非常详细,介绍了UE5的各个功能和应用,适合入门学习和深入探究。链接:https://docs.unrealengine.com/5.1/zh-CN/ UE5中文社区:该社区聚集了大量的UE5开发者,

    2024年02月09日
    浏览(79)
  • 【虚幻引擎】UE4/UE5鼠标点击事件实现物体移动

     在UE4/UE5中,引擎有它自己的一套框架体系,虚幻就是基于这一个框架体系来实现的。其中就有PlayerController(玩家控制器),玩家控制器中就有对鼠标的一系列设置,包括显示鼠标,允许点击事件等。  1.创建PlayerController,命名为MyPlayerController 2.打开MyPlayerController,勾选参数

    2024年02月10日
    浏览(114)
  • 【虚幻引擎】UE4/UE5数字孪生与前端Web页面匹配

            数字孪生是一种多维动态的数字映射,可大幅提高效能。数字孪生是充分利用物理模型、传感器更新、运行历史等数据,集成多学科、多物理量、多尺度、多概率的仿真过程,在虚拟空间中完成对现实体的复制和映射,从而反映物理实体的全生命周期过程。数字孪生

    2024年02月03日
    浏览(79)
  • 【虚幻引擎UE】UE4/UE5 功能性插件推荐及使用介绍 1

    实现POST/GET基本方法,并支持HEAD带信息。 使用案例:【虚幻引擎UE】UE5 三种模式调用API详解(案例基于免费Varest插件) 能够快速实现打开对话框获取数据的导入、导出路径。 某月限免插件,比较方便的地图插件,可以改改样式直接用。 http下载数据到指定路径 按空格可以切

    2023年04月11日
    浏览(108)
  • 【虚幻引擎UE】UE4/UE5 功能性插件推荐及使用介绍 2

    (基于UE5 的Python支持插件) 支持Python语言基于UE5进行开发 GIT地址:https://github.com/mamoniem/UnrealEditorPythonScripts (基于UE5 的Haxe支持插件) Haxe是一门新兴的开源编程语言,是一种开源的编程语言。支持Haxe语言基于UE5进行开发。 GIT地址:https://github.com/RobertBorghese/Haxe-UnrealEngine

    2024年02月06日
    浏览(97)
  • 【虚幻引擎UE】UE4/UE5 GIS辅助类插件推荐及使用介绍

    此插件将虚幻引擎连接到Speckle,允许从Speckle接收版本化的3D数据,可以实现Revit、Rhino、Blender、Sketchup、Unity、虚幻引擎、AutoCAD等之间的完全互操作协作。 这是一个涵盖了在展厅、工业产品或其他3D场景中导航的许多可能性的系统。在窗口、触摸屏、手机和Html5上。 只需快速

    2024年02月07日
    浏览(102)
  • UE4,UE5虚幻引擎,Command Console控制台命令,参数集

    1、Command Console控制台命令,虚幻官方文档 https://docs.unrealengine.com/5.0/zh-CN/unreal-editor-interface/ 2、在cmd控制台 help 并按 Enter 3、自动跳转到网页,在网页中,可以查找所有的命令行参数。

    2024年02月15日
    浏览(87)
  • 【虚幻引擎UE】UE5 实现相机录制视频并导出(C++基于OpenCV生成视频合成exe)

    说明: 该功能暂不支持导出声音。 由于OpenCV3和UE5不太兼容,因此考虑制作外部exe实现视频合成。 1、实现 SavePicToFile 导出图片蓝图函数 .cpp文件

    2024年02月15日
    浏览(106)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包