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(); }
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); }
/// <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 }
// 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(); } }
/// <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"); }
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; } }