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;
    }
}
相关推荐
cpp_learners32 分钟前
FFmpeg H264视频编码全流程解析
ffmpeg·音视频
郝学胜-神的一滴4 小时前
[简化版 GAMES 104] 现代游戏引擎 04:从0到1构建你的游戏世界
c++·游戏·unity·游戏引擎·软件工程·unreal engine
cpp_learners5 小时前
FFmpeg H264视频解码全流程解析
ffmpeg·音视频·解码
YH55269846 小时前
有什么AI工具能将网课和视频播客的内容转化成文档?
人工智能·音视频
程序员老陆8 小时前
FFmpeg 像素格式(pix_fmt)通关指南:从 YUV420P 到 NV12、RGB24 到底怎么选
ffmpeg·音视频·yuv·像素格式
小白学大数据9 小时前
基于Python的抖音网页版视频点赞数增长趋势追踪系统设计与实现
开发语言·爬虫·python·搜索引擎·音视频
DogDaoDao10 小时前
FFmpeg 9.0 “Lei“ 正式发布:十年之后,以你之名
ffmpeg·音视频·实时音视频·视频编解码·ffprobe·ffmpeg 9.0
开开心心_Every10 小时前
电脑文件搜索软件支持内容和拼音搜索
linux·服务器·人工智能·r语言·pdf·音视频·symfony
weixin_4952484010 小时前
带硬字幕的老视频也能出海:短剧出海翻译服务商如何擦除重制?
人工智能·音视频
weixin_4462608511 小时前
Video-DeepResearch:面向下一代视频多模态深度研究智能体
人工智能·音视频