zoukankan      html  css  js  c++  java
  • 8.2.1 捕获声音以进行分析

        正如之前所描述的那样,声音是经过某种物质的震动,这这些振动可以被麦克风所捕获。麦克风将通过空气传播的振动转换成一个变化的电流。当计算机使用麦克风来捕获声音时,该声音将会被数字化。具体而言,特定大小(样本大小)的振幅样本会被每秒钟采集多次(采样率)。这个数据称为PCM(脉冲编码调制)流,其形成数字音频的基础。将他们结合在一起,这些以数字PCM流形式表示的样本就形成了捕获的音频的波形。采样率越高,则表示越准确,且可捕获的音频频率越高。

        我们在第7章中了解到,当开始使用AudioRecord类时,可以将这些参数传递给AudioRecord类的构造函数以创建对象。要回顾每个参数的意思,请参阅7.4节。

        下面快速回顾一下使用AudioRecord类型的对象捕获音频所需要的步骤。

     1     private int frequency=8000;
     2     private int channelConfiguration=AudioFormat.CHANNEL_CONFIGURATION_MONO;
     3     private int audioEncoding=AudioFormat.ENCODING_PCM_16BIT;
     4     int bufferSize=AudioTrack.getMinBufferSize(frequency, channelConfiguration, audioEncoding);
     5     AudioTrack audioRtack=new AudioTrack(AudioManager.STREAM_MUSIC, frequency, channelConfiguration, audioEncoding, bufferSize, AudioTrack.MODE_STREAM);
     6     short [] buffer=new short[blockSize];
     7     audioRecord.startRecording();
     8     while(started){
     9         int bufferReadResult=audioRecord.read(buffer, 0,blockSize);
    10     }
    11     audioRecord.stop();

         上述代码实际上并未对捕获的音频进行任何的处理。通常我们想要将它写入到一个文件,或者以一些其他的方式分析它。

  • 相关阅读:
    css 弹出框
    net stop 出现1060错误
    a href=#与 a href=javascript:void(0) 的区别
    ubuntu如何安装Mac主题
    js arguments.callee & caller的用法及区别
    js函数——setinterval和setTimeout
    highcharts简介
    highcharts柱状图和饼图的数据填充
    jqgrid的外观重绘
    laravel定时任务
  • 原文地址:https://www.cnblogs.com/ZSS-Android/p/3951799.html
Copyright © 2011-2022 走看看