很多网友对会说话的TOM猫的原理比较感兴趣,这里Android123就实现做一个简单的分析:

1. 音频采集

这点主要是通过Android设备的麦克风实时采集音频,由于Android平台的MediaRecorder类录制音频到文件,虽然可以通过空设备回调获得实时的音频流,不过为了降低开发者的难度,Android开发网推荐使用正统的AudioRecord和AudioTrack,首先我们仍然需要加入android.permission.RECORD_AUDIO这个权限。

android.media.AudioRecord类的read方法主要有3种重载形式:

int  read(short[] audioData, int offsetInShorts, int sizeInShorts)   //short在java中占用两个字节
int  read(byte[] audioData, int offsetInBytes, int sizeInBytes)  //byte在java中占用一个字节
int  read(ByteBuffer audioBuffer, int sizeInBytes)  //基于NIO的ByteBuffer类型

我们可以看到从麦克风中获取的音频无需经过文件系统直接通过AudioRecord类的read方法读入到我们预定的缓冲区中,这里需要注意的是采样率的大小必须有足够的缓冲区空间处理、

2. 变声处理

这点需要一些基本的音频处理方式,比如移调、变速,Android开发网推荐大家参考Adobe Audition的早期Cool Editi泄露的代码,当然音频处理算法比较多,大家可以自己实现。

3. 播放原始音频流

同样,处理完后考虑到效率我们仍然直接从内存流中播放,最简单的就是AudioTrack类,通过android.media.AudioTrack类的write方法,让Android声卡播放原始音频流。两种重载方法如下

int  write(short[] audioData, int offsetInShorts, int sizeInShorts) 
int  write(byte[] audioData, int offsetInBytes, int sizeInBytes)

tom猫变声原理解析相关推荐

  1. 变声原理:卷积和传递函数

    idea 关于系统 我们将一个空旷的房间类比于一个系统,如果我们在房间内放置一个声源,声音信号经过墙壁,天花板,地面,放置的种种物品的反射,最终会被我们人耳或者声音采集设备收集.这个系统显然对声音具有 ...

  2. 音频算法之小黄人变声 附完整C代码

    前面提及到<大话音频变声原理 附简单示例代码>与<声音变调算法PitchShift(模拟汤姆猫) 附完整C++算法实现代码> 都稍微讲过变声的原理和具体实现. 大家都知道,算法 ...

  3. 音视频开发必看:“秒变萝莉音”,游戏中的变声是如何实现的

    0.引 自从有了"变声",你永远猜不到隔着网线的另一边和你开黑的队友到底是男是女. 当然,天然会伪音的我们学不来,也没必要,这里主要跟大家分享一个一篇关于音视频开发中的变声实现的技 ...

  4. java 变声_“秒变萝莉音”,游戏中的变声是如何实现的?

    原标题:"秒变萝莉音",游戏中的变声是如何实现的? 本文作者 作者:soso密斯密斯 1 前言 这边先穿插一下变声相关的知识 ,这一章主要讲音频的处理. 大家应该也接触过这类应用, ...

  5. android 改变音乐格式,Android音视频开发(三):变声

    简介 前面两章我们介绍了PCM音频格式的录制和播放,分别是使用AudioRecord录制,使用AudioTrack播放,其实得到了PCM格式的音频,我们并不能随意在播放器中播放,因为PCM格式的音频, ...

  6. 音视频开发之旅(五) -----变声 FMOD和soundTouch使用和对比

    1前言 这边先穿插一下变声相关的知识 ,这一章主要讲音频的处理.大家应该也接触过这类应用,比如QQ的变声,或者在游戏直播里,一些主播使用的变速器,那么,到底是如何做到这样的效果呢?这一篇文章将会给大家 ...

  7. 通过开源项目SoundTouch实现类似Tom猫的变声功能

    SoundTouch是一个开源的音频处理库,用于改变音频流或音频文件的节奏.音调和播放速率. 通过调节Tempo.Pitch和Playback Rate可以实现类似Tom猫的变声效果,对于这三个参数官 ...

  8. 实时语音变声技术原理解析:“大叔变小萝莉”

    游戏社交化是近年来游戏行业发展的重要趋势,如何提高游戏的社交属性已成为各大游戏厂商游戏策划的重要组成部分.游戏中玩家的互动形式也不再止于语音聊天,有了更为高阶的需求,比如:玩家在"吃鸡&qu ...

  9. 会说话的TOM猫的原理是什么

    很多网友对会说话的TOM猫的原理比较感兴趣,这里Android123就实现做一个简单的分析: 1. 音频采集 这点主要是通过Android设备的麦克风实时采集音频,由于Android平台的MediaR ...

最新文章

  1. jdbc mysql - Column count doesn't match value count at row 1.
  2. IIS 上传文件大小配置步骤(默认200K)
  3. 链表(单链表、双链表、内核链表)
  4. IntelliJ IDEA 配置chrome插件调试js代码
  5. 特斯拉全自动驾驶订阅包来了:199美元包月 老用户99美元
  6. 【leveldb】资料
  7. 揭秘React同构应用
  8. Android ExpandableListView实现列表可扩展点击显示内容或隐藏内容
  9. 软件测试面试题(一)
  10. 家庭影院的Dolby音效如何设置
  11. 量子计算机采用量子力学原理,物理学:量子计算机的工作是不是就是根据量子力学原理造的?...
  12. 认知层次不同的人,是很难沟通的
  13. K_A19_002 基于STM32等单片机采集水位检测传感数据 串口与OLED0.96双显示
  14. arduino步进电机程序库_Arduino入门教程15(步进电机驱动库的使用):Arduino Uno R3+ULN2003+步进电机 使用Stepper驱动库,控制步进电机转动角度...
  15. CMD 常用命令总结
  16. 鸿蒙系统就是个垃圾系统,华为鸿蒙系统是什么?鸿蒙系统和安卓系统有什么区别?...
  17. 初学orCAD原理图
  18. 【计算机科学基础】计算理论基础
  19. 【stm32f407】SPI实验 驱动W25Q128
  20. Veusz教程(1)——导入数据

热门文章

  1. android 模拟器截屏 保存到模拟器,天天模拟器屏幕截图保存在哪里?天天模拟器图库位置介绍...
  2. msgbox窗口学习总结窗体复合框
  3. OGRE粒子系统脚本详解
  4. c++高级编程学习笔记4
  5. ubuntu卷组安装
  6. 解决问题——无法连接到更新服务器。我们将稍后再试,你也可以立即进行检查。如果问题仍然存在,请确保你已连接到Internet
  7. c语言 符号自动换行,单片机串口发送字符为什么会自动换行?
  8. “期货投资管理”的资管软件开发都需要用到什么开发语言和环境
  9. 计算机毕业设计(14)python毕设作品之校园运动场地预约系统
  10. html5 JavaScript 邮箱地址验证