unity web连接阿里云语音合成大模型 通过Newtonsoft.Json解析,最后返回的MP3格式文件存储到项目文件夹下
using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Text;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System.Net.WebSockets;
using System.Threading.Tasks;
using System.Threading;
using UnityEngine;
public class Program : MonoBehaviour
{
public string ApiKey = "your_api_key";
// WebSocket服务器地址
private const string WebSocketUrl = "wss://dashscope.aliyuncs.com/api-ws/v1/inference/";
// 输出文件路径
private const string OutputFilePath = "output.mp3";
// WebSocket客户端
private ClientWebSocket _webSocket = new ClientWebSocket();
// 取消令牌源
private CancellationTokenSource _cancellationTokenSource = new CancellationTokenSource();
// 任务ID
private string _taskId;
// 任务是否已启动
private TaskCompletionSource<bool> _taskStartedTcs = new TaskCompletionSource<bool>();
void Start()
{
// 启动异步任务
StartCoroutine(RunWebSocketTask());
}
private IEnumerator RunWebSocketTask()
{
// 将Main方法的逻辑移到这里
Task task = RunAsync();
yield return new WaitUntil(() => task.IsCompleted);
}
private async Task RunAsync()
{
try
{
// 清空输出文件
ClearOutputFile(OutputFilePath);
// 连接WebSocket服务
await ConnectToWebSocketAsync(WebSocketUrl);
// 启动接收消息的任务
Task receiveTask = ReceiveMessagesAsync();
// 发送run-task指令
_taskId = GenerateTaskId();
await SendRunTaskCommandAsync(_taskId);
// 等待task-started事件
await _taskStartedTcs.Task;