Android SoundTouch变声功能Demo
Android 平台的变声功能,最实用的还是基于SoundTouch库的方案。这套 Demo 比较省心,.so
库都编译好了,直接丢进jniLibs
目录就能跑,不用自己折腾 NDK 编译,挺适合图快的朋友。
SoundTouch 是个老牌音频库,主要干三件事:变速、变调、调节节奏,原作者是 Jussi Laaksonen。它支持的格式还挺全,像MP3
、WAV
、Ogg
都能。
在项目里,先用JNI
桥接一下,把 Java 层和 C++层的代码打通。像下面这样声明原生方法:
public native void init(int sampleRate, int channels);
在 C++里实现它:
JNIEXPORT void JNICALL Java_com_yourpackage_SoundTouchWrapper_init(JNIEnv *env, jobject thiz, jint sampleRate, jint channels) {
soundtouch::SoundTouch st;
st.setSampleRate(sampleRate);
st.setChannels(channels);
//其他配置...
}
逻辑主要靠putSamples()
和receiveSamples()
这两个方法搞定,配合音频读写循环跑一遍,基本就能出效果。Demo 里有完整流程,读音频、、播放都有示例,按着来就能跑通。
如果你还没碰过NDK
,这个 Demo 算是比较温柔的入门方式了。你只要关注业务逻辑,底层的音频交给SoundTouch
搞定就行了。反正现在项目都讲求效率,能省一步是一步。
顺便推荐几个相关资源,想进一步玩音频的可以看看:
如果你正好想给 App 加点有趣的玩法,像变声、语音特效,直接拿这个 Demo 改一改就能上手,省事还挺实用的。
408.81KB
文件大小:
评论区