很多网友对会说话的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)

转载于:https://www.cnblogs.com/jacktu/archive/2012/01/18/2325464.html

会说话的TOM猫的原理是什么相关推荐

  1. tom猫变声原理解析

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

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

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

  3. iOS开发脚踏实地学习day02-图片查看器和TOM猫

    1.在.m文件中使用self.XX和_XX有什么区别? 在用懒加载,使用getter,让对象在最需要的时候创建时,用_XX实现不了,一定要用self.XX才可以. 前者调用该类的setter或gett ...

  4. 猫学习IOS(四)UI半小时就搞定Tom猫

    阿土 首先对影响 下载项目的源材料: Tom猫游戏代码iOS 素材http://blog.csdn.net/u013357243/article/details/44457357 效果图 以前风靡一时 ...

  5. 猫猫学IOS(四)UI之半小时搞定Tom猫

    话不多说 先上效果 项目源码素材下载地址: Tom猫游戏代码iOS 素材http://blog.csdn.net/u013357243/article/details/44457357 效果图 曾经风 ...

  6. IOS开发学习之路--第一篇--TOM猫

    当初刚出ipad的时候,tom猫是非常流行的,而如今比这个应用绚丽的软件比比皆是,但是这个是ios编程的基础,所以通过自身的学习来完成一个TOM也是挺有意义的. 项目目的: 1)更好的理解UIButt ...

  7. (素材源代码)猫猫学IOS(四)UI之半小时搞定Tom猫

    下载地址:http://download.csdn.net/detail/u013357243/8514915 以下是执行图片展示 制作思路以及代码解析 猫猫学IOS(四)UI之半小时搞定Tom猫这里 ...

  8. 【iOS开发-45】Tom猫案例:动画、imageNamed与imageWithContentOfFile对内存影响、图片文件夹放哪儿以及文档注释

    今天tom猫案例效果: (1)最傻最笨的办法: --所有的点击都是按钮,只不过有6个有图标的按钮,有些头部.左右脚.肚子.尾巴那块也是一个按钮,只不过没背景没文字没边框的按钮用户按不到而已. --这里 ...

  9. 0324的学习笔记----里面最重要的就是一个tom猫的动画,和涉及到的内存问题(创建imageview的两种方式,imagenamed就会形成缓存,占用很多内

    还是可以自己对着视频,或者自己有空的时候在做一遍,把按钮做全面的,比较有意思. 看视频的时间是:2015.11.2日上午. 0324: 01-作业-QQ登陆界面 (1) 键盘的退出:[self.vie ...

最新文章

  1. idea中项目失去svn控制
  2. 初始 DQN 程序 所遇到的问题
  3. 国外计算机音乐专业,音乐留学干货 | 国外电子音乐专业留学如何?
  4. python生成指定长度的列表_python – 如何将列表或字符串解析为固定长度的块
  5. 怎么通过华为三层交换机实现VLAN间通信?
  6. 多线程Socket的InputStream的困扰一天才解决的问题
  7. php中newself(),在php代码中新建对象用到的new self与new static有什么不同
  8. 代替httpclient JAVA_除了HttpClient,Java还有什么类似HttpClient的技术
  9. maven如何实现创建带源代码的jar包
  10. python tuple
  11. django如何连接mysql_Django如何连接mysql
  12. Alt+Shift+NumLock
  13. linux 磁盘序列号修改,linux 获取硬盘序列号解决思路
  14. ssci源刊里有开源期刊吗_2020年SCI期刊影响因子重磅发布!你投过的期刊涨了吗?...
  15. javaWeb--MVC
  16. 未转变者服务器车怎么得,未转变者刷车指令大全 | 手游网游页游攻略大全
  17. 学计算机画素描吗,用电脑制作一张素描画
  18. Web前端开发技术:实验14-16
  19. Linux部署war包项目
  20. [Python 爬虫之路3] 使用seletom,爬取淘女郎-美人库的内容

热门文章

  1. C++语言基础篇(二)
  2. CSDR华为云_浅谈华为云Stack中Global、Region、AZ、资源池以及主机组
  3. WordPress教程:如何隐藏并替换WordPress管理路径?
  4. 查询至少选了1班2号同学所选课的所有同学班号、学号
  5. 基于PySpark的航天日志分析(SQL分析)
  6. BI神器Power Query(16)-- PQ制作时间维度表(5)
  7. VS Code语言切换
  8. python射击小游戏源码_导弹发射小游戏——Python源代码
  9. 机器翻译古文也翻车?读了20次“苟富贵勿相忘”后,谷歌:没钱的人总会被遗忘...
  10. python面面观单元测试_第2周 python面面观