Win10下 Unity项目使用SpeechLib.dll文字转语音打包闪退的问题解决

Win10下 Unity项目使用SpeechLib.dll文字转语音打包闪退的问题解决

  • 一、问题描述
  • 二、解决方案
  • 三、测试代码

一、问题描述

  • 环境
    Unity版本:Unity2020.1.6f1
    运行平台:Windows10
    ————————————————————————————————————
  • 问题
    导入 Interop.SpeechLib.dll (或叫SpeechLib.dll) 到项目Plugins目录,编辑器环境下运行正常,但是打包之后执行时,直接闪退。
    ————————————————————————————————————

二、解决方案

  • 方案
    运行环境缺失所致。需要添加CustomMarshalers.dll
  • 所需DLL
    1. Interop.SpeechLib.dll
      网上搜Interop.SpeechLib.dll(SpeechLib.dll也可以)
    2. CustomMarshalers.dll
      Win10下 Unity项目使用SpeechLib.dll文字转语音打包闪退的问题解决_第1张图片
    3. DLL百度云盘链接
      链接:https://pan.baidu.com/s/1K4YR0sA85YqsE9R5vokXjg
      提取码:abcd

三、测试代码


using UnityEngine;
using SpeechLib;

/// 
/// 文字转语音
/// 
public class SpeechText : MonoBehaviour
{
    private SpVoice spVoice = new SpVoice();
    public string speechMsg = "松下问童子,言师采药去。只在此山中,云深不知处。";

    // Start is called before the first frame update
    void Start()
    {
        Init();
    }

    // Update is called once per frame
    void Update()
    {
        //Q键响应
        if (Input.GetKeyDown(KeyCode.Q))
        {
            Speech(speechMsg);
        }
    }
    /// 
    /// 初始化
    /// 
    private void Init()
    {
        spVoice.Voice = spVoice.GetVoices().Item(0);
    }
    /// 
    /// 文字转语音
    /// 
    /// 
    public void Speech(string msg)
    {
        //spVoice.Speak(msg);//——同步,需要等待执行完成,会有卡顿
        spVoice.Speak(msg, SpeechVoiceSpeakFlags.SVSFlagsAsync);//——异步(推荐),不用等带Speak()方法执行完成
    }
}

你可能感兴趣的:(举个例子,unity,windows,文字转语音,SpeechLib.dll)