Advanced Speech Repeater
Hierarchy
1) Interfaces:
1.1) IAudioEqualizer
1.1.1) Boolean property: IsActive
1.1.2) Method: SetVoiceType
1.1.3) Method: SetAudioSource

1.2) IAudioVisualizer
1.2.1) Boolean property: IsDraw

1.3) ISpeechRepeater
1.3.1) Event: StartedListeningEvent
1.3.2) Event: StartedTalkingEvent
1.3.3) Event: EndedTalkingEvent
1.3.4) Method: StartTalking
1.3.5) Method: StopTalking
1.3.6) Method: GetMicrophones

2) Classes:
2.1) AudioEqualizer implements IAudioEqualizer
2.2) AudioVisualizer implements IAudioVisualizer
2.3) SpeechRepeater implements ISpeechRepeater
2.4) Enumerators
2.4.1) Enum: VoiceType

How to use
Speech Repeater
First of all you need to create new script. Then you need to add plugin namespaces:

For using Speech Repeater you need to create new field with type ISpeechRepeater and set him:

Then you need to write logic for receiving microphones of our device and call StartTalking method with params:

After that you can speak and plugin will be repeating all your speech.
So, if you want to stop talking, you can call StopTalking method:

Of course, our system is having some events:

StartedListeningEvent will fire when repeater started listening speech.
StartedTalkingEvent will fire when repeater start repeating
EndedTalkingEvent will fire when repeater finished repeating

Audio Visualizer
For initialize Audio Visualization you need to write this logic:

If you set IsDraw property on true visualization will be listen audio and visualize him, if on false visualization will be stopped.

Audio Equalizer
That is the simple voice changer tool. For using him you need to write this logic:

You need to call SetAudioSource for correct working tool. Audio Source which you use in param will be changed for using change voice logic.
For change voice type you can use this:


Note
Example script included in unitypackage!
Working with il2cpp
Supported all platforms
Source Code Support Unity3d 4 or above
Full source code included