diff options
author | rago <rago@google.com> | 2015-10-15 19:12:17 -0700 |
---|---|---|
committer | rago <rago@google.com> | 2015-10-15 19:12:17 -0700 |
commit | d8ec0bbad2303bfe8fc60fdc77383e33e7a7589a (patch) | |
tree | 144bd0158f473f5ed112a3b7abe2780949937f0a /LoopbackApp/app | |
parent | 39b0cffceb8efd9cb30e5554fb3fcb6520692e61 (diff) | |
download | drrickorang-d8ec0bbad2303bfe8fc60fdc77383e33e7a7589a.tar.gz |
Added energy threshold to correlation/noise gate to improve confidence level. Using -60 dB threshold
Diffstat (limited to 'LoopbackApp/app')
-rw-r--r-- | LoopbackApp/app/src/main/AndroidManifest.xml | 2 | ||||
-rw-r--r-- | LoopbackApp/app/src/main/java/org/drrickorang/loopback/Correlation.java | 19 |
2 files changed, 17 insertions, 4 deletions
diff --git a/LoopbackApp/app/src/main/AndroidManifest.xml b/LoopbackApp/app/src/main/AndroidManifest.xml index 1122313..6e62d7a 100644 --- a/LoopbackApp/app/src/main/AndroidManifest.xml +++ b/LoopbackApp/app/src/main/AndroidManifest.xml @@ -24,7 +24,7 @@ package="org.drrickorang.loopback" android:versionCode="7" - android:versionName="0.5"> + android:versionName="0.6"> <uses-permission android:name="android.permission.RECORD_AUDIO"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> diff --git a/LoopbackApp/app/src/main/java/org/drrickorang/loopback/Correlation.java b/LoopbackApp/app/src/main/java/org/drrickorang/loopback/Correlation.java index 8cb8479..1e92fca 100644 --- a/LoopbackApp/app/src/main/java/org/drrickorang/loopback/Correlation.java +++ b/LoopbackApp/app/src/main/java/org/drrickorang/loopback/Correlation.java @@ -35,6 +35,8 @@ public class Correlation { public double mEstimatedLatencyMs = 0; public double mEstimatedLatencyConfidence = 0.0; + private double mAmplitudeThreshold = 0.001; // 0.001 = -60 dB noise + public void init(int blockSize, int samplingRate) { mBlockSize = blockSize; @@ -47,7 +49,7 @@ public class Correlation { log("Started Auto Correlation for data with " + data.length + " points"); mSamplingRate = samplingRate; - downsampleData(data, mDataDownsampled); + downsampleData(data, mDataDownsampled, mAmplitudeThreshold); //correlation vector autocorrelation(mDataDownsampled, mDataAutocorrelated); @@ -101,7 +103,7 @@ public class Correlation { } - private boolean downsampleData(double [] data, double [] dataDownsampled) { + private boolean downsampleData(double [] data, double [] dataDownsampled, double threshold) { boolean status; for (int i = 0; i < mBlockSize; i++) { @@ -111,6 +113,8 @@ public class Correlation { int N = data.length; //all samples available double groupSize = (double) N / mBlockSize; + int ignored = 0; + int currentIndex = 0; double nextGroup = groupSize; for (int i = 0; i < N && currentIndex < mBlockSize; i++) { @@ -123,9 +127,18 @@ public class Correlation { if (currentIndex >= mBlockSize) { break; } - dataDownsampled[currentIndex] += Math.abs(data[i]); + + double value = Math.abs(data[i]); + if (value >= threshold) { + dataDownsampled[currentIndex] += value; + } else { + ignored++; + } } + log(String.format(" Threshold: %.3f, ignored:%d/%d (%%.2f)", + threshold, ignored, N, (double) ignored/(double)N)); + status = true; return status; } |