IMSS Studio 是一个面向唱歌练习场景的应用,目标是把设备变成一个个人练声辅助工具。它可以在练习时通过耳机实时返听麦克风声音,帮助使用者更直接地感知音准、气息、咬字和发声状态。
本仓库是 IMSS Studio 的安卓端实现,目前仍处于早期开发阶段,已经实现了后台耳机返听、轻量化降噪和本地录音等基础能力。
IMSS Studio 可以将安卓设备变成一个轻量化的唱歌练习辅助工具。用户可以在练习时通过耳机实时返听麦克风声音,即使应用退到后台,返听过程也可以继续运行;音频链路中加入了基础噪声抑制,用于降低环境底噪对练声体验的影响。
用户还可以在本地录制练习片段,将录音保存为 AAC/M4A 音频文件,并在应用内查看最近录音的文件名、创建时间和时长,方便练习后快速回听和复盘。
IMSS Studio 使用 Gradle 构建系统,可以直接导入 Android Studio 进行开发。导入后将运行配置切换到 app,即可构建并运行主应用。
项目包含 Native 音频代码,开发环境需要可用的 Android NDK 和 CMake。日常调试可以直接在 Android Studio 中运行,也可以在命令行中构建 Debug 包:
.\gradlew.bat assembleDebug项目采用 Kotlin + Jetpack Compose 构建界面,并通过模块化方式拆分应用入口、导航和功能页面。
- UI 层:Compose + Material 3,页面通过
StateFlow驱动状态刷新。 - 状态管理:各功能模块使用
ViewModel管理 UI 状态、权限结果和异步操作。 - 数据/能力层:通过 Repository 封装返听服务控制、录音文件创建和媒体库查询。
- 音频引擎:Play 模块通过 JNI 调用 Native C++,使用 Oboe 创建低延迟输入/输出流,并接入 WebRTC NS 做降噪处理。
- 后台运行:耳机返听由
AudioMonitorService承载,使用foregroundServiceType="microphone"以前台服务形式运行。
imss
├── app # 应用入口、主题、权限声明与主界面容器
├── navigation # 顶层导航与路由定义
├── feature:play # 耳机返听、前台服务、Native 音频引擎、降噪
├── feature:record # 本地录音、媒体库写入、最近录音列表
└── feature:bgm # BGM 功能入口,占位开发中
:app负责启动MainActivity、加载ImssApp、声明麦克风/前台服务/通知权限。:navigation维护 Play、Record、Bgm 三个顶层页面的导航配置。:feature:play提供实时返听能力,包含 Compose 页面、AudioMonitorService、Repository、JNI Wrapper 和 Native 音频代码。:feature:record提供录音能力,负责创建录音文件、保存到MediaStore、读取最近录音。:feature:bgm当前为后续伴奏/背景音乐能力预留模块。
应用目前包含三个底部导航入口:
- Play:返听控制页,展示返听状态、简单音量可视化和一键开关。
- Record:录音页,提供录音计时、开始/停止按钮、保存状态和最近录音列表。
- Bgm:伴奏能力入口,当前仍在开发中。
整体视觉基于 Material 3,使用顶部应用栏、底部导航栏、卡片式功能区和渐变状态区,尽量保持练习工具所需的清晰、轻量和低干扰。
应用需要以下权限:
RECORD_AUDIO:用于麦克风返听和录音。FOREGROUND_SERVICE/FOREGROUND_SERVICE_MICROPHONE:用于后台耳机返听。POST_NOTIFICATIONS:Android 13 及以上用于显示前台服务通知。
- 音量调节。
- BGM/伴奏播放。
- 更细粒度的返听参数控制,如增益、降噪强度等。
- 录音文件播放与删除。
- 实时音高可视化。
- 伴唱模式。

