以下是参考给出的新接口的代码:

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

}

请根据您的需求进行适当调整和修改。

参照下面的unity样式写一个 httpsgenshinvoicetopapispeaker=胡桃&text=你好&format=wav&length=1&noise=05&noisew=09&sdp_ratio=02 新的接口using System;using SystemCollections;using SystemXmlLinq;using UnityEngine;using Unity

原文地址: https://www.cveoy.top/t/topic/i8Ff 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录