在Unity中实现语音合成(TTS)webapi

在Unity中使用科大讯飞语音合成webapi实现语音合成

直接上代码!

using System.Collections;
using System.Collections.Generic;
using System.Text;
using UnityEngine;
using System.Net;
using System.Net.WebSockets;
using System.Net.Sockets;
using System;
using System.Security.Cryptography;
using System.Threading;
using UnityEngine.UI;
using System.Threading.Tasks;

namespace Webiat
{
   
    public class TTSCore : MonoBehaviour
    {
   
    	//绑定你自己的参数,不知道如何获取的,可以自己百度
        private static string app_id = "APPID";
        private static string api_secret = "APISECRET";
        private static string api_key = "APIKEY";
        public string Uri = "wss://tts-api.xfyun.cn/v2/tts";

        List<float> _clipData = new List<float>();
        
        [HideInInspector]
        public ClientWebSocket ttsWebSocket;//语音合成websocket

        #region ----------------------接口鉴权-----------------------------
        /// <summary>
        /// 基于HMACSHA256加密获取接口鉴权
        /// </summary>
        /// <returns></returns>
        public string GetUrl(string uriStr)
        {
   
            Uri uri = new Uri(uriStr);
            string host = uri.Host;
            string date = DateTime.UtcNow.ToString("R");
            //使用base64编码获取签名前
            string signature_origin = $"host: {host}\ndate: {date}\nGET /v2/tts HTTP/1.1";
            //获取最终签名
            string signature = hmacsha256(signature_origin, api_secret);
            //使用base64编码获取鉴权前
            string authorization_origion = $"api_key=\"{api_key}\", algorithm=\"hmac-sha256\", headers=\"host date request-line\", signature=\"{signature}\"";
            //最终生成的鉴权接口
            string authorization = Convert.ToBase64String(Encoding.UTF8.GetBytes(authorization_origion));
            string url = $"wss://tts-api.xfyun.cn/v2/tts?authorization={authorization}&date={date}&host={host}";
            return url;
        }

        /// <summary>
        /// HMACSHA256加密
        /// </summary>
        /// <param name="signature_origion"></param>
        /// <param name="secrect"></param>
        /// <returns></returns>
        private string hmacsha256(string signature_origion, string secrect)
        {
   
            HMACSHA256 mac = new HMACSHA256(Encoding.UTF8.GetBytes(secrect));
            string signature = Convert.ToBase64String(mac.ComputeHash(Encoding.UTF8.GetBytes
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值