参照下面的unity样式写一个 httpsgenshinvoicetopapispeaker=胡桃&text=你好&format=wav&length=1&noise=05&noisew=09&sdp_ratio=02 新的接口using System;using SystemCollections;using SystemXmlLinq;using UnityEngine;using Unity
以下是参考给出的新接口的代码:
using System;
using System.Collections;
using System.Xml.Linq;
using UnityEngine;
using UnityEngine.Networking;
public class NewTextToSpeech : TTS
{
#region 参数定义
/// <summary>
/// 朗读的角色
/// </summary>
[Header("朗读声音设置")]
public string speaker = "胡桃";
/// <summary>
/// 朗读的文本
/// </summary>
[Header("朗读的文本")]
public string text = "你好";
/// <summary>
/// 输出格式
/// </summary>
[Header("输出格式")]
public string format = "wav";
/// <summary>
/// 长度
/// </summary>
[Header("长度")]
public float length = 1.0f;
/// <summary>
/// 噪声
/// </summary>
[Header("噪声")]
public float noise = 0.5f;
/// <summary>
/// 噪声权重
/// </summary>
[Header("噪声权重")]
public float noiseWeight = 0.9f;
/// <summary>
/// sdp比例
/// </summary>
[Header("sdp比例")]
public float sdpRatio = 0.2f;
#endregion
private void Awake()
{
m_PostURL = "https://genshinvoice.top/api";
}
/// <summary>
/// 语音合成
/// </summary>
/// <param name="_msg"></param>
/// <param name="_callback"></param>
public override void Speak(string _msg, Action<AudioClip> _callback)
{
StartCoroutine(GetVoice(_msg, _callback));
}
/// <summary>
/// restful api语音合成
/// </summary>
/// <param name="_msg"></param>
/// <param name="_callback"></param>
/// <returns></returns>
private IEnumerator GetVoice(string _msg, Action<AudioClip> _callback)
{
stopwatch.Restart();
//发送报文
string textToSpeechRequestBody = GenerateTextToSpeech(speaker, text, format, length, noise, noiseWeight, sdpRatio);
using (UnityWebRequest speechRequest = new UnityWebRequest(m_PostURL, "GET"))
{
speechRequest.url = string.Format("{0}?speaker={1}&text={2}&format={3}&length={4}&noise={5}&noisew={6}&sdp_ratio={7}", m_PostURL, speaker, text, format, length, noise, noiseWeight, sdpRatio);
speechRequest.downloadHandler = (DownloadHandler)new DownloadHandlerAudioClip(speechRequest.url, AudioType.WAV);
yield return speechRequest.SendWebRequest();
if (speechRequest.responseCode == 200)
{
AudioClip audioClip = DownloadHandlerAudioClip.GetContent(speechRequest);
_callback(audioClip);
}
else
{
Debug.LogError("语音合成失败: " + speechRequest.error);
}
}
stopwatch.Stop();
Debug.Log("语音合成耗时:" + stopwatch.Elapsed.TotalSeconds);
}
/// <summary>
/// 报文格式转换
/// </summary>
/// <param name="speaker"></param>
/// <param name="text"></param>
/// <param name="format"></param>
/// <param name="length"></param>
/// <param name="noise"></param>
/// <param name="noiseWeight"></param>
/// <param name="sdpRatio"></param>
/// <returns></returns>
public string GenerateTextToSpeech(string speaker, string text, string format, float length, float noise, float noiseWeight, float sdpRatio)
{
string url = string.Format("{0}?speaker={1}&text={2}&format={3}&length={4}&noise={5}&noisew={6}&sdp_ratio={7}", m_PostURL, speaker, text, format, length, noise, noiseWeight, sdpRatio);
return url;
}
}
请根据您的需求进行适当调整和修改。
原文地址: https://www.cveoy.top/t/topic/i8Ff 著作权归作者所有。请勿转载和采集!