Во время записи голоса пользователя я хочу знать, когда он / она прекратил говорить, чтобы завершить запись и отправить аудиофайл в API распознавания речи Google.
Я нашел эту ветку здесь и попытался использовать ее решениено я всегда получаю одно и то же значение из среднего значения спектра данных, которое составляет 5.004574E-08: Unity - проверка микрофона, если молчит
Это код, который я использую для получения GetSpectrumDataзначение:
public void StartRecordingSpeech()
{
//If there is a microphone
if (micConnected)
{
if (!Microphone.IsRecording(null))
{
goAudioSource.clip = Microphone.Start(null, true, 10, 44100); //Currently set for a 10 second clip max
goAudioSource.Play();
StartCoroutine(StartRecordingSpeechCo());
}
}
else
{
Debug.LogError("No microphone is available");
}
}
IEnumerator StartRecordingSpeechCo()
{
while (Microphone.IsRecording(null))
{
float[] clipSampleData = new float[128];
goAudioSource.GetSpectrumData(clipSampleData, 0, FFTWindow.Rectangular);
Debug.Log(clipSampleData.Average());
yield return null;
}
}
PS: я могу записать голос пользователя, сохранить его и получить правильный ответ из API распознавания голоса.