using System.Collections.Generic;
using UnityEngine;
namespace Moka
{
internal class TalkingTom
{
//每秒种产生0.4M数据量
private readonly LinkedList<float> recordData = new LinkedList<float>();
public Animation AvatarAnimation2;
private float analyzeMicDataTimeGap = 0.3f; //秒
private float clipPlayTime;
private bool isRecordingMic;
private bool isWorking;
private int lastReadPositio;
private AudioClip microphoneClip;
private float myMax;
private float voiceDetectLevel = 0.3f;
#region 外部接口
public void setAvatar(GameObject gameObject)
{
AvatarAnimation2 = gameObject.animation;
}
public void startWork()
{
//
isWorking = true;
startMicRecord();
}
public void stopWork()
{
// 停止所有功能
isWorking
Unity自动录音自动播放功能
最新推荐文章于 2024-08-15 14:30:29 发布
该博客介绍了一个Unity内部类`TalkingTom`,用于实现自动录音和播放功能。通过`startWork()`和`stopWork()`控制工作流程,使用`Microphone`录制音频,根据声音强度判断是否有人说话,并将录音数据存储在`LinkedList<float>`中。当检测到无人说话时,调用`replayRecoredData()`播放录音,同时更新角色动画状态。整个过程利用了Loom进行多线程处理。
摘要由CSDN通过智能技术生成