예제 #1
0
    private void Awake()
    {
        // Create and initialize the chorus filter.
        if (UseChorus)
        {
            chorusFilter         = gameObject.AddComponent <AudioChorusFilter>();
            chorusFilter.enabled = true;
            UpdateChorusFilter();
        }

        // Create and initialize the echo filter.
        if (UseEcho)
        {
            echoFilter         = gameObject.AddComponent <AudioEchoFilter>();
            echoFilter.enabled = true;
            UpdateEchoFilter();
        }

        // Confgure the microphone stream to use the high quality voice source
        // at the application's output sample rate.
        MicStream.MicInitializeCustomRate(
            (int)MicStream.StreamCategory.HIGH_QUALITY_VOICE,
            AudioSettings.outputSampleRate);

        // Set the initial microphone gain.
        MicStream.MicSetGain(InputGain);

        // Start the stream.
        // Do not keep the data and do not preview.
        MicStream.MicStartStream(false, false);
        MicStream.MicPause();
    }
예제 #2
0
        private void Update()
        {
            CheckForErrorOnCall(MicStream.MicSetGain(InputGain));

            if (Input.GetKeyDown(KeyCode.Q))
            {
                CheckForErrorOnCall(MicStream.MicStartStream(KeepAllData, false));
            }
            else if (Input.GetKeyDown(KeyCode.W))
            {
                CheckForErrorOnCall(MicStream.MicStopStream());
            }
            else if (Input.GetKeyDown(KeyCode.A))
            {
                CheckForErrorOnCall(MicStream.MicStartRecording(SaveFileName, false));
            }
            else if (Input.GetKeyDown(KeyCode.S))
            {
                string outputPath = MicStream.MicStopRecording();
                Debug.Log("Saved microphone audio to " + outputPath);
                CheckForErrorOnCall(MicStream.MicStopStream());
            }

            gameObject.transform.localScale = new Vector3(minObjectScale + averageAmplitude, minObjectScale + averageAmplitude, minObjectScale + averageAmplitude);
        }
예제 #3
0
    /// <summary>
    /// starts the recording.
    /// </summary>
    void StartRecording()
    {
        WEKITSpeechManager.Instance.PauseRecognizer();
        Debug.Log("Stopped listening to voice commands.");
        isRecording = true;
        if (useUnityMic)
        {
            //Check if there is at least one microphone connected  
            if (Microphone.devices.Length <= 0)
            {
                //Throw a warning message at the console if there isn't  
                Debug.LogWarning("Microphone not connected!");
            }
            else //At least one microphone is present  
            {
                //Set 'micConnected' to true  
                micConnected = true;

                //Get the default microphone recording capabilities  
                Microphone.GetDeviceCaps(null, out minFreq, out maxFreq);

                //According to the documentation, if minFreq and maxFreq are zero, the microphone supports any frequency...  
                if (minFreq == 0 && maxFreq == 0)
                {
                    //...meaning 44100 Hz can be used as the recording sampling rate  
                    maxFreq = 44100;
                }

                //Get the attached AudioSource component  
                goAudioSource = this.GetComponent <AudioSource>();

                //If the audio from any microphone isn't being captured  
                if (!Microphone.IsRecording(null))
                {
                    //Start recording and store the audio captured from the microphone at the AudioClip in the AudioSource  
                    goAudioSource.clip = Microphone.Start(null, true, 20, maxFreq);
                }
            }
        }
        else
        {
            CheckForErrorOnCall(MicStream.MicInitializeCustomRate((int)StreamType, AudioSettings.outputSampleRate));
            CheckForErrorOnCall(MicStream.MicSetGain(InputGain));
            //CheckForErrorOnCall(MicStream.MicStartStream(KeepAllData, false));
            SaveFileName = "WEKIT_Audio_" + DateTime.Now.ToFileTimeUtc() + ".wav";
            CheckForErrorOnCall(MicStream.MicStartRecording(SaveFileName, false));
        }
        Debug.Log("Started audio recording");
        changeColor(Color.red);
    }
        private void Awake()
        {
            audioSource = GetComponent <AudioSource>();

            int errorCode = MicStream.MicInitializeCustomRate((int)Streamtype, AudioSettings.outputSampleRate);

            CheckForErrorOnCall(errorCode);
            if (errorCode == 0 || errorCode == (int)MicStream.ErrorCodes.ALREADY_RUNNING)
            {
                if (CheckForErrorOnCall(MicStream.MicSetGain(InputGain)))
                {
                    audioSource.volume = HearSelf ? 1.0f : 0.0f;
                    micStarted         = CheckForErrorOnCall(MicStream.MicStartStream(false, false));
                }
            }
        }
        private void Update()
        {
            CheckForErrorOnCall(MicStream.MicSetGain(InputGain));
            audioSource.volume = HearSelf ? 1.0f : 0.0f;

            try
            {
                audioDataMutex.WaitOne();

                var connection = GetActiveConnection();
                hasServerConnection = (connection != null);
                if (hasServerConnection)
                {
                    while (micBuffer.UsedCapacity >= 4 * AudioPacketSize)
                    {
                        TransmitAudio(connection);
                    }
                }
            }
            catch (Exception e)
            {
                Debug.LogError(e.Message);
            }
            finally
            {
                audioDataMutex.ReleaseMutex();
            }

            #region DebugInfo
            if (SaveTestClip && testCircularBuffer.UsedCapacity == testCircularBuffer.TotalCapacity)
            {
                float[] testBuffer = new float[testCircularBuffer.UsedCapacity / 4];
                testCircularBuffer.Read(testBuffer, 0, testBuffer.Length * 4);
                testCircularBuffer.Reset();
                TestClip = AudioClip.Create("testclip", testBuffer.Length / 2, 2, 48000, false);
                TestClip.SetData(testBuffer, 0);
                if (!testSource)
                {
                    GameObject testObj = new GameObject("testclip");
                    testObj.transform.parent = transform;
                    testSource = testObj.AddComponent <AudioSource>();
                }
                testSource.PlayClip(TestClip);
                SaveTestClip = false;
            }
            #endregion
        }
예제 #6
0
    // Update is called once per frame
    void Update ()
	{
        if (Input.GetKeyDown(KeyCode.W))
        {
            samplingData.Clear();
            CheckForErrorOnCall(MicStream.MicStartStream(KeepAllData, false));
            CheckForErrorOnCall(MicStream.MicSetGain(InputGain));

            _isStart = true;
        }
        else if (Input.GetKeyDown(KeyCode.S))
        {
            _isStart = false;
            CheckForErrorOnCall(MicStream.MicStopStream());
            WriteAudioData();

        }
	}
예제 #7
0
 /// <summary>
 /// makes sure, the audio annotation object is displayed in the right color according to audio mode.
 /// Green: audio playing
 /// Red: audio recording.
 /// </summary>
 void Update()
 {
     if (isRecording)
     {
         if (useUnityMic)
         {
             changeColor(Color.red);
         }
         else
         {
             CheckForErrorOnCall(MicStream.MicSetGain(InputGain));
             float blue = (minSize + averageAmplitude + 1 / minSize + 2) * 255;
             changeColor(new Color(255, 0, blue));
         }
     }
     else if (goAudioSource.isPlaying)
     {
         changeColor(Color.green);
     }
 }
        private void Awake()
        {
            CheckForErrorOnCall(MicStream.MicInitializeCustomRate((int)StreamType, AudioSettings.outputSampleRate));
            CheckForErrorOnCall(MicStream.MicSetGain(InputGain));

            if (!ListenToAudioSource)
            {
                this.gameObject.GetComponent <AudioSource>().volume = 0; // can set to zero to mute mic monitoring
            }

            if (AutomaticallyStartStream)
            {
                CheckForErrorOnCall(MicStream.MicStartStream(KeepAllData, false));
            }

            print("MicStream selector demo");
            print("press Q to start stream to audio source, W will stop that stream");
            print("It will start a recording and save it to a wav file. S will stop that recording.");
            print("Since this all goes through the AudioSource, you can mute the mic while using it there, or do anything else you would do with an AudioSource");
            print("In this demo, we start the stream automatically, and then change the size of the gameobject based on microphone signal amplitude");
        }
예제 #9
0
    private void Update()
    {
        DateTime now = DateTime.Now;

        // Enable / disable the echo as appropriate
        if ((UpdateInterval * 1000.0f) <= (now - lastUpdate).Milliseconds)
        {
            // Update the input gain.
            MicStream.MicSetGain(InputGain);

            // Update the filter properties.
            if (UseChorus)
            {
                UpdateChorusFilter();
            }
            if (UseEcho)
            {
                UpdateEchoFilter();
            }

            EnableMicrophone();
            lastUpdate = now;
        }
    }