您好,欢迎来到[编程问答]网站首页   源码下载   电子书籍   软件下载   专题
当前位置:首页 >> 编程问答 >> Android >> Android 怎么实现变声呀 ??如:男声变女声,男声变机器人声,女声变童声这样的用户体验效果

Android 怎么实现变声呀 ??如:男声变女声,男声变机器人声,女声变童声这样的用户体验效果

来源:网络整理     时间:2016/5/25 12:22:50     关键词:Android

关于网友提出的“Android 怎么实现变声呀 ??如:男声变女声,男声变机器人声,女声变童声这样的用户体验效果”问题疑问,本网通过在网上对“Android 怎么实现变声呀 ??如:男声变女声,男声变机器人声,女声变童声这样的用户体验效果”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:

问题:Android 怎么实现变声呀 ??如:男声变女声,男声变机器人声,女声变童声这样的用户体验效果
描述:

实现魔音的思路: 1)获取通话音频流.2)把获取到的音频流通过某种算法,某种数字处理技术,改变原有音频流.3)将改变后的音频流传出去,让通话对方听到改变后的音频流,感觉到说话方声音的变化.

①: 如何获取通话音频流.

Android本身没有提供获取通话流的接口,让上层程序去调用***方法获取到具体音频流.也不能通过内录的方式录制到音频流.目前来说可行的只有通过外录,录制MIC声音获取到通话音频流.目前这种方法已经尝试过了,可以通过MIC录音.判断接通电话时,调用MediaRecord.start()方法录音.这种方式录到的文件可以播放.通过MIC录音,现在可以录制到双方通话,自己说话声音大,对方说话声音小.

关于为什么MIC能录制到对方的声音,我觉得应该是通过听筒把对方声音扩散出来后,MIC将声音作为声源,和自己说话声一起被录制到录音文件了.

我认为通过MIC录音对于魔音这个功能似乎很牵强,噪音多,如果用这种声音源做处理,处理后再把处理后的音效播放出去,应该对方早就听到说话方原来的声音了.

②: 如何处理音频,让音频失真

这个就要用到其他第三方技术了,如IIR(Infinite Impulse Response)数字滤波器,这个技术用到了高等数学很多数学公式,网上有详细的介绍,大家可以了解下.

我看到changebox(变声盒子)用到了这个技术.

还有就是第三方类库,soundtouch这个东西,他是用C++写的,关于改变声音的类库.

我看到会说话的汤姆猫在用这个技术.这些技术本身涉及的领域比较多,看懂这些代码,理解这些技术也是一项挑战.

③: 如何把这些处理后的结果传给用户,让用户感知说话方声音变化

这个我还没具体研究过,曾经考虑过把这些处理后的声音用AudioTracck播放,现在觉得从前两步骤得到处理后的声音,再播放的话,延迟会很严重的,通话对方会听到一次原声(系统通话自身传播的声音),一次改变后的声音(声音处理后传播的声音).总之是了解越深入,发现问题越多.


解决方案1:

试一下soundTouch~~

解决方案2:

汤姆猫android版本做的很好啊....?可以借鉴下...

解决方案3:

变声太那个了,还是变身吧。

解决方案4:

给个提示呀!各位大虾


以上介绍了“Android 怎么实现变声呀 ??如:男声变女声,男声变机器人声,女声变童声这样的用户体验效果”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/1299085.html

相关图片

相关文章