Problem Using Microphone Input to Control Player

Hello there, I’m new to scripting and I’ve been working on a sound control game for my design course, I was using the following code I found on YouTube to control the player by shouting to microphone

public float moveSpeed;
public float sensitivity = 100;
public float loudness = 0;

private Rigidbody2D snake;
AudioSource _audio;

   void Start () {
       snake = GetComponent<Rigidbody2D>();
       _audio = GetComponent<AudioSource>();
       _audio.clip = Microphone.Start(null, true, 10, 44100);
       _audio.loop = true;
       while (!(Microphone.GetPosition(null) > 0)) { }

   void Update () {
       snake.velocity = new Vector2(moveSpeed, snake.velocity.y);
       loudness = GetAveragedVolume() * sensitivity;
       if (loudness > 5)
       this.GetComponent<Rigidbody2D>().velocity = new Vector2(this.GetComponent<Rigidbody2D>().velocity.x, 6);

   float GetAveragedVolume()
        float[] data = new float[256];
        float a = 0;
       _audio.GetOutputData(data, 0);
        foreach (float s in data)
        a += Mathf.Abs(s);
    return a / 256;

The movement works out fine but I don’t know how not to hear the echo because it seems that the script has to read the data from the audio clip, which is the microphone input, in the player Audio Source and muting it will makes it out of function.

So first of all, I was wondering if I can mute the audio feedback but still working, or I have to find another way to do this?What’s the recommended method?

Secondly, how do I read pitch to control other movement if it’s possible?

That’s all, thank you for reading my question and sorry if there are grammatical errors or it’s hard to understand since I’m not a native English speaker.

I wanted to do something similar and I linked my AudioSource to an AudioMixer with attenuation of -80dB. I used snapshots for my purpose to switch from a listening state to a mute one but you can also create a dedicated audio mixer group for the microphone as it is described in this video :

For the pitch, I am not sure I’m understanding your need but you can have the frequency response of an audio source with GetSpectrumData.