zoukankan      html  css  js  c++  java
  • Unity Microphone 录音时 检测声音大小

    刚开始以为只取录音时的最后一个sample来判断音量大小,发现都检测不到。

    后来搜索了一下,原来需要取一段sample来判断,有的是这一段取平均值作为音量大小。我这里是取出一段sample中的峰值(peak)作为音量

    audio.clip.GetData 得到的值是0-1,所以 我乘上 99 来把音量分为四个等级(0-24-49-74-99)
     1 public float Volume
     2 {
     3     get
     4     {
     5         if (Microphone.IsRecording(null))
     6         {
     7             // 采样数
     8             int sampleSize = 128;
     9             float[] samples = new float[sampleSize];
    10             int startPosition = Microphone.GetPosition(null) - (sampleSize+1);
    11             // 得到数据
    12             this.audio.clip.GetData(samples, startPosition);
    13 
    14             // Getting a peak on the last 128 samples
    15             float levelMax = 0;
    16             for (int i = 0; i < sampleSize; ++i)
    17             {
    18                 float wavePeak = samples[i];
    19                 if (levelMax < wavePeak)
    20                     levelMax = wavePeak;
    21             }
    22 
    23             return levelMax * 99;
    24         }
    25         return 0;
    26     }
    27 }
  • 相关阅读:
    Redis教程_2
    Redis教程_1
    机器学习概念_2
    机器学习概念_1
    [极客大挑战 2019]LoveSQL
    [极客大挑战 2019]EasySQL
    [SUCTF 2019]EasySQL
    [强网杯 2019]随便注
    [HCTF 2018] WarmUp
    php代码函数笔记
  • 原文地址:https://www.cnblogs.com/gabo/p/4421281.html
Copyright © 2011-2022 走看看