`
包su
  • 浏览: 31090 次
  • 来自: 南京
社区版块
存档分类
最新评论

如何像talking tom那样,自动监听到外部声音,和,简单的变声_3

 
阅读更多

前言

我们该说点什么呢?

自说自话有两部分:

1. 你的代码能自动监听到人的声音吗?

2. 你对录音进行了怎样的处理,听起来,噪音没有那么的明显,而且,比较卡通

 

第一篇和第二篇,描述了自说自话的大体过程。在大部分机型上,自说自话的part1,实现效果还不错

但是,part2的效果呢,嗯,这也是下面要阐述的内容

 

******************************************************************正文

 

在前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

下载,并且查看,你会发现,该工程基本上是https://github.com/nonameentername/soundtouch-android所阐述的(它的老版本吗?那时,作者还提供了../jni/*.java?)

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
分享到:
评论
1 楼 chiyou7 2013-08-23  
您好~  最近在开发一个变声软件 遇到点问题,可以请教一下你吗

相关推荐

Global site tag (gtag.js) - Google Analytics