前言
我们该说点什么呢?
自说自话有两部分:
1. 你的代码能自动监听到人的声音吗?
2. 你对录音进行了怎样的处理,听起来,噪音没有那么的明显,而且,比较卡通
第一篇和第二篇,描述了自说自话的大体过程。在大部分机型上,自说自话的part1,实现效果还不错
但是,part2的效果呢,嗯,这也是下面要阐述的内容
******************************************************************正文
![](/qrcode.jpg)
在前2篇文章中,我们手动对wav进行了处理,如:放大了音量(通过倍乘sample),加快了语速(通过每隔多少步,去除一个sample)
嗯,在某些机型上,你发现,该方法的效果还不错,但是在主流的机型上(比如:三星的s3,nexus,,,),你会感到明显的噪音
你会检查,你录制的源文件是否发生了错误(是否根源已经错了),但是,当你删除了所有的音频处理过程,你会发现:源文件没有问题
那么,只证明了:你的wav处理,非常的山寨
1.跳一次
有很多的开源项目,来处理声音,outfit7采用了soundtouch(最后,事实证明,它是最可行的)
通过soundtouch,你可以修改声音的Tempo (time stretch),Pitch (key), Playback Rate(一个萌点的配置:TEMP = -10; PITCH = 10; RATE = 0;)
通过修改上述三项,你基本上可以从一个源声音,获得一个新声音(如:man, women, animal, 或者,robot, 外星人)
它证明了:你还不够专业
2.走入
这是它的官网:http://soundtouch.surina.net/
在这里,它介绍了如何为android编译so:http://soundtouch.surina.net/README-SoundTouch-Android.html
(你会发现按照它的步骤,编译起来,远比ffmepg要轻松许多,而且,随着深入,调用该so,也不需要再另起一个进程)
(一个bug:请在soundtouch-jni.cpp中,将Java_net_surina_soundtouch_getVersionString改为Java_net_surina_soundtouch_SoundTouch_getVersionString
good luck)
3.给我命令行
一个音频处理的门外汉,只需要一个接口(而不是繁琐的子过程),来完成一件工作
当你编译了soundtouch,你将面临一个难题,如何使用SoundTouch.cpp
然后,在官网上,你发现了soundstretch还存在着(它提供了命令行)
当正准备欣喜时,你发现它是一个可执行文件(在android上面,是否你可以调用一个.binary)
3.1.i needsoundstretch
请搜索stackoverflow.com,它基本上可以告诉你任何:http://stackoverflow.com/questions/1978228/soundtouch-on-android/13625168#13625168
https://github.com/nonameentername/soundtouch-android
通过看名字,你将发现它为android而生,并且通过git,你可以下载整个工程
但是,你将发现,作者少了一些核心的文件,特别是../jni/*.java
3.2.you needsoundstretch?
http://blog.csdn.net/mahaichao540174345/article/details/7966283
它描述了编译soundtouch的过程,该文章比较早(因为soundtouch官网上,已经介绍了怎么编译,并且提供了*.mk)
但是,它提供了一个编译完整的eclipse工程,地址:http://download.csdn.net/download/mahaichao540174345/4562620
3.3.你得到了什么
SoundStretch.process(String inFile, String outFile,float tempoDelta, float pitchDelta, float rateDelta)
soundtouch还将改变的声音存储到了一个新的wav中,方便你,后续来利用该wav(有什么用?如:图片+音频->视频)
4.小结
我们没有阐述任何的方法,我们只是再用别人的方法
stay foolish
如果你了解更多的soundtouch方面的知识,请联系我,3x
5.第三方资料
http://www.aplu.ch/classdoc/jaw/ch/aplu/jaw/SoundTouch.html
OpenAL4Android
http://pielot.org/2011/11/10/openal4android-2/
其他资料
移植soundtouch 到android 通过JNI来调用(一)
http://blog.csdn.net/luowenlong860502/article/details/8150687
声音去噪
http://www.shouyanwang.org/thread-1742-1-1.html.html
http://www.shouyanwang.org/thread-1741-1-1.html.html