Unity之音频剪辑提问,流式语音回复使用示例

引用

Unity之语音提问,语音答复

Unity之使用火山引擎实现音频剪辑提问,流式语音回复

示例

通过RecordVoice组件录制音频,

将录制音频作为参数传入VoiceQuestion组件中,播放音频

csharp 复制代码
using UnityEngine;

public class UseVoiceQuestion : MonoBehaviour
{
    [SerializeField] RecordVoice recordVoice;
    [SerializeField] VoiceQuestion voiceQuestion;

    KeyCode voiceInputKey = KeyCode.Space;
    bool enableVoiceInput = true;
    bool isRecordIng = false;

    void Awake()
    {
        recordVoice.OnRecordAudioCompleted += OnRecordVoiceCompleted;
        voiceQuestion.OnTextAnswerCompleted += OnTextAnswerCompleted;
        voiceQuestion.OnError += OnVoiceQuestionError;
    }

    void OnRecordVoiceCompleted(AudioClip audioClip)
    {
        voiceQuestion.InputQuestionAudio(audioClip);
    }

    void OnTextAnswerCompleted()
    {
        enableVoiceInput = true;
    }

    void OnVoiceQuestionError()
    {
        enableVoiceInput = true;
    }

    void Update()
    {
        if (enableVoiceInput == false) return;

        if (Input.GetKeyDown(voiceInputKey))
        {
            if (isRecordIng == false)
            {
                if (recordVoice.ExistMicrophoneDevice())
                {
                    Debug.Log("录音开始");
                    isRecordIng = true;
                    recordVoice.BeginRecord();
                }
                else
                {
                    Debug.LogError("没有录音设备,无法录音");
                }
            }
        }

        if (Input.GetKeyUp(voiceInputKey))
        {
            if (isRecordIng)
            {
                Debug.Log("录音结束");
                isRecordIng = false;
                enableVoiceInput = false;
                recordVoice.EndRecord();
            }
        }
    }

    void OnGUI()
    {
        GUI.skin.label.fontSize = 40;
        if (enableVoiceInput)
        {
            if (isRecordIng == false)
                GUILayout.Label("按下空格键,进行语音输入");
            else
                GUILayout.Label("语音录制中");
        }
        else
        {
            GUILayout.Label("等待提问结束");
        }
    }

    void OnDestroy()
    {
        voiceQuestion.OnError -= OnVoiceQuestionError;
        voiceQuestion.OnTextAnswerCompleted -= OnTextAnswerCompleted;
        recordVoice.OnRecordAudioCompleted -= OnRecordVoiceCompleted;
    }
}
相关推荐
略略略咯咯43 分钟前
C#Unity
开发语言·unity·c#
乐橙开放平台3 小时前
养老 SaaS 笔记:setMessageCallback 事件桥接 + msgType 映射 P0/P1,先 ACK 再分流值班流
笔记·物联网·音视频·智能家居
H0311169853 小时前
关于当前主流知识库工具在分类整理学习资料场景下的选用参考
人工智能·信息可视化·音视频
tedcloud1234 小时前
Awesome DSH Plugin 怎么用?给 DeepSeek Harness 搭建自己的插件生态
大数据·linux·服务器·人工智能·音视频
2601_961593426 小时前
视频放大模糊不清?Topaz Video AI v1.7.0 Mac 版高效修复
人工智能·macos·音视频
小贺儿开发7 小时前
Unity 局域网遥控幻灯片展示工具 1.0
unity·网络通信·工具·ppt·控制·网页·互动
H0311169857 小时前
关于AI会议音视频转写与智能生成纪要工具的对比分析
人工智能·音视频
乐橙开放平台7 小时前
老旧社区双通道笔记:周界 hoveringAlarm / aiPerArea + 电梯 aiNonVehDetect,一套 callback 做 24h 防护
笔记·物联网·音视频·智能家居
视跃科技7 小时前
多路视频实时解码推理,是怎么做到“逐帧解码 + AI检测 + 目标框叠加上墙“的?
人工智能·目标跟踪·音视频
lbb 小魔仙7 小时前
图片、音频、文档怎么集中转换?群晖部署 VERT 自托管文件工具
音视频