讯飞语音合成和百度语音合成,粘贴就能用

该博客介绍了如何在XFAudioComp脚本中利用BestHttp插件连接讯飞的Websocket接口进行语音合成,并在XFAudioManager中管理初始化和播放。此外,还提到了一个合成地址的静态工具类以及百度相对简单的实现。总共提供了九个发音人选项,包括讯飞和百度的语音服务。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

XFAudioComp 脚本中包含连接讯飞相关方法(其中讯飞使用Websocket  我使用的  BestHttp插件,插件在我资源里可以找到)

using BestHTTP.WebSocket;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Text;
using UnityEngine;

public class XFAudioComp
{

    /// <summary>
    /// 语音合成WebSocket
    /// </summary>
    private WebSocket m_AudioCompWebWocket;

    public WebSocket AudioCompWebWocket
    {
        get
        {
            return m_AudioCompWebWocket;
        }

        private set { }
    }

    public Action<string> DelOnMessage;

    public Action DelOnSucceed;

    private string m_WebSendMsg;

    /// <summary>
    /// 语音总长度
    /// </summary>
    private int m_AudioLength = 0;


    private Queue<float> m_QueAudioPlay;


    private StringBuilder m_AllMessage;
         
    public XFAudioComp()
    {
        m_QueAudioPlay = new Queue<float>();
        m_WebSendMsg = string.Empty;
        DelOnMessage = null;
        m_AllMessage = new StringBuilder();
        DelOnSucceed = null;


    }

   
   

    /// <summary>
    /// 连接讯飞语音合成
    /// </summary>
    public void ConnectXFAudioComp(Uri url)
    {
        m_AudioCompWebWocket = new WebSocket(url);

        m_AudioCompWebWocket.OnOpen += OnOpen;

        m_AudioCompWebWocket.OnMessage += OnMessage;

        m_AudioCompWebWocket.OnError += OnError;

        m_AudioCompWebWocket.OnClosed += OnClosed;


        m_AudioCompWebWocket.Open();

     
    }

    /// <summary>
    /// 获取合成内容
    /// </summary>
    /// <param name="compAudioContent">需要合成的内容</param>
    /// <param name="vcn">发音人</param>
    /// <param name="aue">音频编码</param>
    /// <param name="speed">发音速度</param>
    /// <param name="volume">发音音量</param>
    /// <param name="tte">文本编码格式</param>
    /// <param name="status">数据状态固定为2</param>
    /// <returns></returns>
    public void GetAudioCompContent(string compAudioContent, string vcn, string aue, int speed, int volume, string tte, int status)
    {
        XFMessage xFMessage = new XFMessage();

        xFMessage.common = new XFConmon();

        xFMessage.common.app_id = CommonAddress.s_XFAPPID;

        xFMessage.business = new XFBusiness();
        xFMessage.business.vcn = vcn;
        xFMessage.business.aue = aue;
        xFMessage.business.speed = speed;
        xFMessage.business.volume = volume;
        xFMessage.business.tte = tte;



        xFMessage.data = new XFData();
        xFMessage.data.status = status;


        xFMessage.data.text = Convert.ToBase64String(System.Text.Encoding.UTF8.GetBytes(compAudioContent));


        string str = LitJson.JsonMapper.ToJson(xFMessage);

      

        m_WebSendMsg =  str;

    }

    public void CloseWebSocket()
    {
       if(m_AudioCompWebWocket!=null)
        {
            m_AudioCompWebWocket.Close();
        }
    }


    private void OnClosed(WebSocket webSocket, ushort code, string message)
    {
        Debug.Log(webSocket.State);

        Debug.Log(m_AudioCompWebWocket.State);
        webSocket.OnOpen = null;

        webSocket.OnMessage=null;

        webSocket.OnError=null;

        webSocket.OnClosed =null;
### 如何在 UniApp 中集成语音合成服务 #### 1. 准备工作 为了实现 UniApp 对语音合成服务的支持,需要先确认目标平台支持的相关功能。对于 Android 平台,可以通过调用系统的 TTS 引擎来简化开发流程[^1];而对于 iOS,则需通过 Unity XCode 的交互方式接入 AIUI SDK[^3]。 #### 2. 安卓端集成方案 ##### (a) 使用安卓系统自带的 TTS 功能 如果仅针对 Android 设备,推荐优先考虑利用系统内置的文字转语音引擎。这不仅免去了额外依赖第三方库的需求,还能够提供更好的性能表现以及更少的资源占用。 - **步骤说明** - 确保设备上已经预装有 Google Text-to-Speech 或其他兼容的应用程序作为后台处理单元。 - 编写 JavaScript 接口桥接 Native 层逻辑,从而允许前端页面发起请求并传递待转换字符串给底层模块执行播放操作。 以下是基于 Vue.js 构建框架下的简易示范代码片段: ```javascript // 创建自定义组件用于封装跨平台特性 export default { methods: { speak(text) { plus.android.importClass("android.speech.tts.TextToSpeech"); let tts = new plus.android.runtimeMainActivity().getSystemService('tts'); const params = {}; tts.speak(plus.android.newString(text), android.speech.tts.TextToSpeech.QUEUE_FLUSH, null); } } } ``` > 注:上述例子适用于 HBuilderX 工具链环境中的 uni-app 应用构建场景下运行良好效果最佳。 ##### (b) 直接连通科大 API 当希望获得更加丰富的定制选项或者覆盖更多品牌机型时,则建议直接引入官方发布的移动终端专用版本软件开发工具包(SDK)[^2]。此时需要注意的是由于不同操作系统架构差异较大因此必须分别对待各自特有的部分。 #### 3. IOS端解决方案概述 鉴于苹果公司严格的封闭生态策略限制了某些特定技术方向上的自由,在此情形之下往往不得不借助中间媒介比如游戏引擎之类的东西来进行间接沟通联系。具体而言就是把原本属于原生应用范畴内的任务转移到另一个领域里去完成然后再反馈回来形成闭环结构体系。 下面列举了一些关键环节要点供参考学习之用: - 在 Mac OS 上安装最新版 Xcode 开发套件之后新建工程文件夹准备后续编辑修改事宜; - 下载对应语言种类别的 IFlyMSC.framework 文件拷贝粘贴至指定位置处链接起来建立关联关系; - 修改 Info.plist 表格添加必要的权限声明项例如麦克风访问许可等等; - 实现主要业务流程控制函数如初始化参数设定、启动监听模式切换状态管理等功能模块设计思路阐述清楚便于理解维护升级等工作开展顺利进行下去. #### 结论 综上所述可以看出无论是采用何种途径最终都能够达成预期目的即成功嵌入语音合成功能到现有的uni-app项目当中去满足实际应用场景需求的同时也兼顾到了用户体验层面的因素考量进去综合评估得出结论认为值得尝试推广开来让更多开发者受益匪浅从中获取宝贵经验积累成长进步共同推动整个行业向前发展迈进一大步! ---
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

L877790502

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值