Esempio n. 1
0
    // Update is called once per frame
    void Update()
    {
        if (PlayClip && !audioSource.isPlaying)
        {
            audioSource.Play();
            PlayClip = false;
        }
        else if (!PlayClip && audioSource.isPlaying)
        {
            //audioSource.Stop();
        }

        if (Play)
        {
            extraTimeSinceLastUpdate += Time.deltaTime;
            int samplesSinceLastUpdate = (int)(Channels * Frequency * extraTimeSinceLastUpdate);

            //check if audioclip ended
            samplesSinceLastUpdate = Math.Min(CurrentAudioClip.samples - SamplesPlayedInClip, samplesSinceLastUpdate);

            extraTimeSinceLastUpdate -= (float)samplesSinceLastUpdate / (float)(Channels * Frequency);

            float[] samplesPlayed = new float[samplesSinceLastUpdate];
            CurrentAudioClip.GetData(samplesPlayed, SamplesPlayedInClip);
            RecentlyPlayedAudio.SetData(samplesPlayed, TotalSamplesPlayed % RecentlyPlayedAudio.samples);

            SamplesPlayedInClip += samplesSinceLastUpdate;
            TotalSamplesPlayed  += samplesSinceLastUpdate;

            if (SamplesPlayedInClip == CurrentAudioClip.samples)
            {
                WavHelper.WriteWavData("CurrentAudioClip.txt", CurrentAudioClip, 0);

                //TODO: check channels for each clip
                AudioClipIndex = (AudioClipIndex + 1) % AudioClipsToPlay.Count; //next and wrap
                Debug.Log($"Switching to next audiofile {CurrentAudioClip.name}");
                SamplesPlayedInClip = 0;
                Play = false;

                WavHelper.WriteWavData("RecentlyPlayedAudio.txt", RecentlyPlayedAudio, 0);
            }

            VokaturiIntervalRemaining -= Time.deltaTime;

            if (VokaturiIntervalRemaining <= 0)
            {
                //calculate emotions
                List <VokaturiAnalysis> vokaturiAnalyses = Vokaturi.CalculateEmotion(RecentlyPlayedAudio);
                Neutrality = vokaturiAnalyses.Average(va => va.EmotionProbabilities.Neutrality);
                Happiness  = vokaturiAnalyses.Average(va => va.EmotionProbabilities.Happiness);
                Sadness    = vokaturiAnalyses.Average(va => va.EmotionProbabilities.Sadness);
                Anger      = vokaturiAnalyses.Average(va => va.EmotionProbabilities.Anger);
                Fear       = vokaturiAnalyses.Average(va => va.EmotionProbabilities.Fear);

                VokaturiIntervalRemaining = VokaturiInterval;
            }
        }
    }
Esempio n. 2
0
    // Start is called before the first frame update
    void Start()
    {
        AudioSource audioSource = GetComponent <AudioSource>();
        AudioClip   audioClip   = audioSource.clip;

        Vokaturi.CalculateEmotion(audioClip);

        Vokaturi.CalculateEmotion(audioClip, 0, 1);
        Vokaturi.CalculateEmotion(audioClip, 3.99F, 1);

        for (int i = 0; i < audioClip.length; i++)
        {
            //  Vokaturi.CalculateEmotion(audioClip, i, 1);
        }

        MicrophoneRecorder microphoneRecorder;
    }