git地址
应用展示
前景
曾经一直想做一款关于微信的软件,目标就是网上收集很多调皮捣蛋的语音或者录音变声,然后发送给某个微信好友,感觉很有意思
开发遇到的难题
- 收集很多好玩的语音素材
- 录制的音频如何变声
- 音频格式转换,微信只支持发送amr格式的音频文件
- 如何才能调用微信的发送音频代码
- 微信版本升级,如何做到我的软件热更新
这些是我前前后后遇到的所有问题,有很多问题都困扰了我很长时间,在我我不断努力坚持下克服种种困难,终于大功告成了!
收集语音素材问题解决
一开始这个问题我很头疼,去哪里找骚里骚气的语音呢?这个问题一度困扰我,一个软件数据才是重要支撑啊,突然有一天刷抖音发现了一个好玩的应用很皮语音包,这款APP提供了很多好玩的素材,大家可以下载看一看玩一玩
下载应用瞧了瞧,抓包了下妈了个B,抓不到,应该是app启用了SSL Pinning(又叫“ssl证书绑定“)
使用Xposed+JustTrustMe来突破这个问题使用方式可以抓到包了哦但是发现数据是加密的,那就需要知道加密算法了,通过ApkTool反编译很皮语音
我的天加固了…,好吧,看来还得脱壳,脱壳方案脱壳方案,脱壳完了终于可以分析了,分析过程就是耐心的过程,为了保护很皮语音加密算法就不公开了,嘿嘿,有素材了,编写个爬虫把数据,保存在数据库中,到这里素材问题解决了
哈哈,好开心,10几W条语音素材了!!!
录制音频如何变声
接下来就是变声功能的开发,QQ很早就出现了变声的功能,但是微信却迟迟不出此功能,我也不知道为啥!!!他不出那我们自己加,首先如何录音呢?作为一个资深andorid开发工程师,这个问题我不解释,录完音如何变声呢?这是个难点,首先我找打了库SoundTouch的变声库,集成了下和查询了资料,发现这个可以变声的很少不好,接下来有找到了另外一个库fmod尝试的集成了下不错,但是我对音律一窍不通的我,也不知道变声对应调整的参数,没办法只要去抄袭变音魔术师,好开心,得到了很多变音的语音素材,并且成功输出了wav的音频文件
音频格式转换amr问题(ffmpeg&amr)
音频方面的知识点
这里当时一直不了解如何转换的格式,最后去学习了解了下关于音频的知识,相关知识大家可以自行百度,我这里就总结下我所了解到的
音频文件的组成
我的理解就是,每个音频文件会有一个类似存放音频信息的区域,里面会存放对应音频的编码格式,时间长短,采样率丶声道数丶作者信息等,后面存放的就是经过编码的音频数据数据,有了这个原理,这也就我们能理解到播放器是如何正确的播放不同格式的音频了吧!年轻时候的我还一直天真的以为是通过后缀名呢…现在想想就可笑
PCM&WAV的关系
什么是PCM数据呢?我的理解就是没有经过编码的数据,单单就是录制出来的数据,没有通过压缩的数据,这就是传说中的高质量音频,哪pcm和wav又有什么关系呢?其实PCM+WAV的文件头=WAV格式的音频文件,wav格式音频文件是高品质的哦,相对的体积也很大哦
音频格式转换原理
有了上面的音频文件组成的原理,哪我们能不能做一下操作呢?