3

音量が特別なレベルに達すると、すでに「音声録音の開始」があります。ただし、欠点が 1 つあります。録音を開始すると、すでに 1/2 秒ほど逃しています。文章を話すと、最初の単語が失われます。

任意のアイデア (例が最適)。

最初にリスニングを開始し、ピークパワー、平均、ローパスを取得するとしましょう

 [recorder updateMeters];  ALPHA = 0.05;
peakPowerForChannel = pow(10, (0.05 * [recorder peakPowerForChannel:0]));
averagePowerForChannel = pow(10, (0.05 * [recorder averagePowerForChannel:0]));
lowPassResults = ALPHA * peakPowerForChannel + (1.0 - ALPHA) * lowPassResults;  
averagePassResults = ALPHA * averagePowerForChannel + (1.0 - ALPHA) * averagePassResults;   

録音するのに十分な大きさかどうか

 if (peakPowerForChannel > 0.08f) ) -> start recording

値未満の場合は停止します

  (peakPowerForChannel < 0.01f) -> stop record, start listening again

今のところ、平均ではなく、ピークパワーを聞くのが最善だとわかりました。しかし、それでも大丈夫ではありません。また、常に一時的な録音を行い、ピークが十分に高くなったら、今から 2 秒から開始することも考えました。そのようなものですが、ここでは実現する方法がわかりません。したがって、実用的な提案は大歓迎です。

ありがとうクリス

4

1 に答える 1

0

あなたが言ったように、短い 1/2 秒のチャンクを継続的に記録します。これは、パワー レベルに達し、無期限の記録が開始されると、無限に拡大します。録音が停止すると、欠落している 1/2 秒のオープニングが含まれている必要があります。

于 2010-07-30T19:39:40.250 に答える