很多网友对会说话的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. Linux存储的基本管理
  2. 招募 | 《大数据实践课》课程实践企业合作项目
  3. 王者荣耀活动精选 Blink 第三弹来袭!
  4. 编译Bitcoin BCH configure: error: libdb_cxx headers missing ,终于解决了
  5. MySQL三大范式详解(小白也能懂哦)
  6. Markdown 11种基本语法
  7. Django 电脑使用管理
  8. JSF –渴望的CDI bean
  9. Kubernetes学习总结(10)—— 何为云原生,与 kubernetes 是什么关系
  10. 开源天生就不是为了赚钱!
  11. [CentOS 7] TexLive2017中kpsewhich Bug的修复
  12. fmd单片机c语言教程,ft62f08x_c语言 FMD单片机C语言列子程序 - 下载 - 搜珍网
  13. 交换机的基本交换配置
  14. 最新抖音视频无水印解析接口及原理
  15. seata-order-service2006模块
  16. 相亲也内卷?被程序员的相亲规划整不会了......
  17. 用opencv方法遍历文件夹图片(比较清晰)
  18. 解密韦德之膝:康复因再世华佗
  19. ajax去掉session,PHP中解决ajax请求session过时退出登陆问题
  20. Photoshop2021 出现不可恢复的问题,即将退出

热门文章

  1. 9款免费且超实用的响应式网页测试工具
  2. pandas中drop用法_机器学习笔记:Pandas的delete、drop函数的用法
  3. 滴滴云A100 40G 性能测试 V100陪练!
  4. CentOS 6.5 安装使用iscsi-initiator
  5. matlab与单边带系统仿真,基于Matlab 单边带系统仿真研究
  6. javaWeb开发的放推特项目之推特发布
  7. 干支纪年法简便算法_传感智库丨流速面积法测量明渠断面流量
  8. 微信SDK中含有的支付功能怎么去掉?
  9. 开启人工智能的大门,引领AI时代
  10. 用python写一个魂斗罗