forked from cgvr/DeltaVR
NPC doesnt process player speech when its too soon after last processing
This commit is contained in:
Binary file not shown.
@@ -112,17 +112,14 @@ public class FMODWhisperBridge : MonoBehaviour
|
|||||||
_stream.OnResultUpdated += (txt) =>
|
_stream.OnResultUpdated += (txt) =>
|
||||||
{
|
{
|
||||||
//OnWhisperResultProcessed?.Invoke(txt);
|
//OnWhisperResultProcessed?.Invoke(txt);
|
||||||
//UnityEngine.Debug.Log($"[Whisper] result updated: {txt}");
|
|
||||||
};
|
};
|
||||||
_stream.OnSegmentUpdated += (seg) =>
|
_stream.OnSegmentUpdated += (seg) =>
|
||||||
{
|
{
|
||||||
OnWhisperSegmentUpdated?.Invoke(seg.Result);
|
OnWhisperSegmentUpdated?.Invoke(seg.Result);
|
||||||
//UnityEngine.Debug.Log($"[Whisper] Seg updated: {seg.Result}");
|
|
||||||
};
|
};
|
||||||
_stream.OnSegmentFinished += (seg) =>
|
_stream.OnSegmentFinished += (seg) =>
|
||||||
{
|
{
|
||||||
OnWhisperSegmentFinished?.Invoke(seg.Result);
|
OnWhisperSegmentFinished?.Invoke(seg.Result);
|
||||||
//UnityEngine.Debug.Log($"[Whisper] Seg finished: {seg.Result}");
|
|
||||||
};
|
};
|
||||||
|
|
||||||
// If you want Whisper to respect VAD, enable in manager or set useVad (manager controls stream params).
|
// If you want Whisper to respect VAD, enable in manager or set useVad (manager controls stream params).
|
||||||
|
|||||||
@@ -16,10 +16,12 @@ public class CafeWaiterNPC : NPCController
|
|||||||
// 1 - waiting for player to answer "is this correct?"
|
// 1 - waiting for player to answer "is this correct?"
|
||||||
// 2 - bringing food
|
// 2 - bringing food
|
||||||
private int state;
|
private int state;
|
||||||
|
private float lastPlayerVoiceUpdateTime;
|
||||||
|
|
||||||
private void Awake()
|
private void Awake()
|
||||||
{
|
{
|
||||||
state = 0;
|
state = 0;
|
||||||
|
lastPlayerVoiceUpdateTime = Time.time;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void Start()
|
private void Start()
|
||||||
@@ -33,7 +35,7 @@ public class CafeWaiterNPC : NPCController
|
|||||||
AudioManager.Instance.PlayDialogue(voiceLineKeys[0], gameObject);
|
AudioManager.Instance.PlayDialogue(voiceLineKeys[0], gameObject);
|
||||||
|
|
||||||
fmodWhisperBridge.OnWhisperSegmentUpdated += OnPlayerSpeechUpdate;
|
fmodWhisperBridge.OnWhisperSegmentUpdated += OnPlayerSpeechUpdate;
|
||||||
fmodWhisperBridge.OnWhisperSegmentFinished += ProcessPlayerSpeech;
|
fmodWhisperBridge.OnWhisperSegmentFinished += OnPlayerSpeechFinished;
|
||||||
fmodWhisperBridge.ActivateRecording();
|
fmodWhisperBridge.ActivateRecording();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -41,12 +43,25 @@ public class CafeWaiterNPC : NPCController
|
|||||||
{
|
{
|
||||||
//AudioManager.Instance.PlayDialogue(voiceLineKeys[1], gameObject);
|
//AudioManager.Instance.PlayDialogue(voiceLineKeys[1], gameObject);
|
||||||
fmodWhisperBridge.OnWhisperSegmentUpdated -= OnPlayerSpeechUpdate;
|
fmodWhisperBridge.OnWhisperSegmentUpdated -= OnPlayerSpeechUpdate;
|
||||||
fmodWhisperBridge.OnWhisperSegmentFinished -= ProcessPlayerSpeech;
|
fmodWhisperBridge.OnWhisperSegmentFinished -= OnPlayerSpeechFinished;
|
||||||
fmodWhisperBridge.DeactivateRecording();
|
fmodWhisperBridge.DeactivateRecording();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void ProcessPlayerSpeech(string playerText)
|
private void OnPlayerSpeechFinished(string playerText)
|
||||||
{
|
{
|
||||||
|
if (Time.time < lastPlayerVoiceUpdateTime + 0.5f)
|
||||||
|
{
|
||||||
|
Debug.Log("voiceline: player said '" + playerText + "' but not enough time passed");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (string.IsNullOrEmpty(playerText) || playerText.Contains("BLANK_AUDIO"))
|
||||||
|
{
|
||||||
|
Debug.Log("player speech event but result empty");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
lastPlayerVoiceUpdateTime = Time.time;
|
||||||
|
Debug.Log("state = " + state.ToString() + ", voiceline: player text: " + playerText);
|
||||||
|
|
||||||
if (state == 0)
|
if (state == 0)
|
||||||
{
|
{
|
||||||
// Show transcription and ask whether it is correct
|
// Show transcription and ask whether it is correct
|
||||||
@@ -73,7 +88,7 @@ public class CafeWaiterNPC : NPCController
|
|||||||
|
|
||||||
private void OnPlayerSpeechUpdate(string playerText)
|
private void OnPlayerSpeechUpdate(string playerText)
|
||||||
{
|
{
|
||||||
if (string.IsNullOrEmpty(playerText) || playerText.Equals("BLANK_AUDIO"))
|
if (string.IsNullOrEmpty(playerText) || playerText.Contains("BLANK_AUDIO"))
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user