External audio capture, playback, and processing for Unity
๐จ๐ณ ไธญๆ็ | ๐บ๐ธ English
Release: 0.1.3-exp.3 ยท 2026-05-12
Built for voice interaction, digital humans, custom playback, and realtime audio diagnostics.
Repository scope: this repository contains the open-source Easy Mic core package. It does not include AEC, AGC, or ANS. Those features are provided by EasyMic APM, a separate paid extension package. If you need acoustic echo cancellation, automatic gain control, or automatic noise suppression, please contact the author separately.
|
Included Microphone capture Raw audio buffers |
Included Runtime audio pipeline Built-in processors |
Optional Sherpa ONNX integration ASR / KWS workflows |
Paid Add-on EasyMic APM AEC / AGC / ANS |
Easy Mic provides miniaudio-backed microphone capture, external playback, processor pipelines, latency profiles, and diagnostics outside Unity's built-in audio path.
|
Capture Low-latency microphone input with device selection and transport buffering. |
Playback Streaming and clip playback through EasyMic's external audio system. |
Processing Composable audio processors with explicit realtime and threading contracts. |
Diagnostics Telemetry for underruns, overflows, callback health, queue depth, and workers. |
Designed for voice interaction, AI characters, custom audio tools, and realtime audio workflows.
Unity Digital Human Microphone Recording Plugin
Easy Mic core + optional EasyMic APM workflow for conversational AI
This video demonstrates a conversational AI audio workflow. Echo cancellation, gain control, and noise suppression are not included in this repository; they require the separate paid EasyMic APM extension.
|
|
|
|
For developers working on Unity AI digital human projects, EasyMic APM (Audio Processing Module) is available as a separate paid extension package.
This repository does not contain AEC, AGC, or ANS implementation code, binaries, samples, or licenses.
|
๐ AEC Acoustic Echo Cancellation Eliminates echo and feedback |
๐ข AGC Automatic Gain Control Maintains consistent audio levels |
๐ฏ ANS Acoustic Noise Suppression Reduces background noise |
๐ง Contact: unease-equity-5c@icloud.com | ๐ฌ Bilibili: Send private message
Please contact separately if your project needs AEC, AGC, or ANS.
- Open Unity Package Manager
- Click
+โAdd package from git URL... - Enter:
https://github.com/EitanWong/com.eitan.easymic.git#upm - Click
Add
- After importing Easy Mic, go to Package Manager
- Find EasyMic in "In Project" packages
- Expand Samples section
- Click Import next to "Recording Example"
- Open the imported scene to see microphone recording demo
// Ensure permission (Android triggers system request) if (!PermissionUtils.HasPermission()) return;// Refresh device list EasyMicAPI.Refresh();
// Define processor blueprints var bpCapture = new AudioWorkerBlueprint(() => new AudioCapturer(10), key: "capture"); var bpDownmix = new AudioWorkerBlueprint(() => new AudioDownmixer(), key: "downmix");
// Start recording (auto-selects default device/channel) var handle = EasyMicAPI.StartRecording(SampleRate.Hz16000);
// Attach processors EasyMicAPI.AddProcessor(handle, bpDownmix); EasyMicAPI.AddProcessor(handle, bpCapture);
// ... later: stop and get captured clip EasyMicAPI.StopRecording(handle); var clip = EasyMicAPI.GetProcessor(handle, bpCapture)?.GetCapturedAudioClip();
EasyMic includes ready-to-run samples under EasyMic/Packages/com.eitan.easymic/Samples~/ so developers can quickly validate workflows.
| Sample | Purpose | Best For |
|---|---|---|
Recording Example |
Basic microphone recording flow and WAV persistence. | First-time integration and device/permission checks. |
Playback Example |
Core playback flow using EasyMic playback stack. | Verifying low-latency output and playback controls. |
AudioPlayback API Example |
Programmatic playback API usage and queue-style audio feeding. | Building custom runtime audio playback logic. |
SherpaONNXUnity ASR Example |
Real-time speech recognition pipeline with Sherpa ONNX + EasyMic input. | Speech-to-text applications and voice command prototypes. |
SherpaONNXUnity KWS Example |
Keyword spotting / wake-word workflow with Sherpa ONNX. | Wake-word activation and always-listening assistants. |
AIChat Example |
End-to-end AI voice chat sample (ASR + LLM + TTS + playback orchestration). | Direct starting point for digital human / AI avatar apps. |
- The
AIChat Exampleis designed as a production-oriented reference pipeline for conversational digital humans. - It demonstrates end-to-end flow from microphone input to speech recognition, LLM response generation, and speech synthesis playback.
- Install
com.eitan.sherpa-onnx-unitybefore importing/running this sample. - AEC, AGC, and ANS are not included in this repository. Use the separate paid EasyMic APM extension for those capabilities.
Start with setup, then follow the capture/playback path into architecture, latency, diagnostics, and processor rules.
|
๐ค AI Digital Humans
|
๐ฎ Gaming Applications
|
๐ Communication Apps
|
๐๏ธ Content Creation
|
|
Unity 2021.3 LTS or higher |
Platforms Windows, macOS, Linux Android, iOS |
Dependencies .NET Standard 2.1+ |
Permissions Microphone access required |
This project is licensed under the GPLv3 License - see the LICENSE.md file for details.
EasyMic APM is not part of this repository. It is distributed separately as a paid extension under its own commercial licensing terms.
|
|
|
๐ Issues & Bug Reports GitHub Issues Check Troubleshooting first |
๐ฌ Community Discussion GitHub Discussions Share projects & get help |
๐ง Professional Support Email | Bilibili PM Technical support and EasyMic APM inquiries |
|
Thin callback path Keep device callbacks focused on transport work. |
Worker-based processing Run higher-level processing outside the device callback. |
Observable behavior Expose counters that help diagnose latency and glitches. |
Practical Unity workflow Keep samples, components, and docs close to the package. |
Import the package, open a sample, and use diagnostics while validating on your target device.
Made with โค๏ธ by Eitan
Star โญ this repo if Easy Mic helps your project!
