114 lines
3.4 KiB
C#
114 lines
3.4 KiB
C#
using Crosstales.RTVoice;
|
||
using System.Collections;
|
||
using System.Collections.Generic;
|
||
using UnityEngine;
|
||
using UnityEngine.UI;
|
||
/// <summary>
|
||
/// creat by yxx
|
||
///
|
||
/// https://blog.csdn.net/qq_43246529/article/details/109899257
|
||
/// </summary>
|
||
public class RtVioceLocalTTS : MonoBehaviour
|
||
{
|
||
/*
|
||
插件 - RtVioce
|
||
支持的Unity版本:5.3.1 及以上版本
|
||
功能:语音转文字
|
||
*不需要为自己的声音行事
|
||
*多个音色变换
|
||
*多个扬声器 同时对讲(说话)
|
||
*NPC聊天转换等。。。。
|
||
?生成的音频可以存储到文件中。
|
||
*/
|
||
public InputField mTxtSpeakContent;
|
||
public Button mBtnClick;
|
||
private string mID;
|
||
// Start is called before the first frame update
|
||
void Start()
|
||
{
|
||
mBtnClick.onClick.AddListener(() =>
|
||
{
|
||
//Speak(mTxtSpeakContent.text);
|
||
mID = Speaker.Instance.Speak(mTxtSpeakContent.text, null, Speaker.Instance.Voices[1]);
|
||
});
|
||
}
|
||
|
||
// Update is called once per frame
|
||
void Update()
|
||
{
|
||
if (Input.GetKeyDown(KeyCode.P))
|
||
{
|
||
mID = Speaker.Instance.Speak("测试语音功能是否正常!Test whether the voice function is normal", null, Speaker.Instance.Voices[1]);
|
||
//Speaker.Instance.SpeakNative("测试语音功能是否正常!Test whether the voice function is normal", Speaker.Instance.Voices[0], 1, 1, 1);
|
||
Debug.Log("开始ID:" + mID);
|
||
Speaker.Instance.OnSpeakStart += SpeakStart;
|
||
Speaker.Instance.OnSpeakComplete += SpeakComplete;
|
||
//Speaker.Instance.Speak("why");//测试语音功能是否正常!
|
||
}
|
||
if (Input.GetKeyDown(KeyCode.O))
|
||
{
|
||
Speaker.Instance.Silence(mID);
|
||
mID = Speaker.Instance.Speak("我的目的是来测试id的", null, Speaker.Instance.Voices[1]);
|
||
Debug.Log("开始ID:" + mID);
|
||
Speaker.Instance.OnSpeakComplete += SpeakComplete;
|
||
}
|
||
if (Input.GetKeyDown(KeyCode.M))
|
||
{
|
||
Speaker.Instance.PauseOrUnPause();
|
||
}
|
||
if (Input.GetKeyDown(KeyCode.N))
|
||
{
|
||
Speaker.Instance.PauseOrUnPause();//
|
||
}
|
||
|
||
if (Input.GetKeyDown(KeyCode.Y))
|
||
{
|
||
Speaker.Instance.Silence(mID);//静默(介绍播放)
|
||
}
|
||
}
|
||
private void SpeakStart(Crosstales.RTVoice.Model.Wrapper wrapper)
|
||
{
|
||
Debug.Log("开始播放ID:" + wrapper.Uid);
|
||
}
|
||
private void SpeakComplete(Crosstales.RTVoice.Model.Wrapper wrapper)
|
||
{
|
||
Debug.Log("完成ID:" + wrapper.Uid);
|
||
if (wrapper.Uid.Equals(mID))
|
||
{
|
||
|
||
}
|
||
}
|
||
|
||
public void Speak(string _conetnt)
|
||
{
|
||
mID = Speaker.Instance.Speak(_conetnt, null, Speaker.Instance.Voices[1]);
|
||
}
|
||
/* public SpeechText SpeechText;
|
||
// Start is called before the first frame update
|
||
void Start()
|
||
{
|
||
*//* Speaker.Speak("哇塞,我可以说话了!", null, null, true, GUISpeech.Rate, GUISpeech.Volume, "", GUISpeech.Pitch);
|
||
Speaker.OnSpeakComplete += speakEndMethod;
|
||
Speaker.OnSpeakStart += speakStartMethod;*//*
|
||
//取消调用
|
||
//Speaker.OnSpeakStart-= speakStartMethod;
|
||
//Speaker.OnSpeakComplete += speakEndMethod;
|
||
//Speaker.Silence();//停止说话
|
||
}
|
||
private void speakStartMethod()//SpeakEventArgs e)
|
||
{
|
||
print("开始说话");
|
||
}
|
||
private void speakEndMethod()//SpeakEventArgs e)
|
||
{
|
||
print("完成说话");
|
||
}
|
||
// Update is called once per frame
|
||
void Update()
|
||
{
|
||
if (Input.GetKeyDown(KeyCode.A))
|
||
{
|
||
SpeechText.Speak();
|
||
}
|
||
}*/
|
||
} |