zoukankan      html  css  js  c++  java
  • 会说话的TOM猫的原理是什么

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

  • 相关阅读:
    详解CUDA编程
    卷积神经网络详解
    python操作Excel读写--使用xlrd
    pycharm启动慢 –xms -xmx相关参数设置
    pycharm开发python利器入门
    win10安装windows live writer 错误:OnCatalogResult:0x80190194
    curl 模拟请求
    Python AES_ECB_PKCS5加密代码
    如何让eclipse恢复默认布局
    eclipse中项目jdk1.8刷新下就变成1.5的解决办法
  • 原文地址:https://www.cnblogs.com/jacktu/p/2325464.html
Copyright © 2011-2022 走看看