Ignore short silent clips
[scannr.git] / scannr.py
blob:a/scannr.py -> blob:b/scannr.py
--- a/scannr.py
+++ b/scannr.py
@@ -1,3 +1,7 @@
+import logging
+logging.basicConfig(level=logging.DEBUG,
+                    format='%(asctime)s\t%(levelname)s\t%(message)s')
+
 import snd
 import time
 from datetime import date
@@ -6,14 +10,15 @@
 import wave
 
 filename = "demo.wav"
+MIN_LENGTH = 90000
 
 def worker(filename):
     """thread worker function
     http://www.doughellmann.com/PyMOTW/threading/
-
     https://github.com/uskr/pynma
-
-http://stackoverflow.com/questions/1092531/event-system-in-python """
+ffmpeg -i 2012-09-29-1348911268.34-demo.wav -ar 8000 -ab 4.75k test.3gp
+http://stackoverflow.com/questions/2559746/getting-error-while-converting-wav-to-amr-using-ffmpeg
+"""
     print 'Worker for '+filename
     
     return
@@ -25,16 +30,18 @@
 def record_to_async_file():
     "Records from the microphone and outputs the resulting data to `path`"
     sample_width, data = snd.record()
-    data = snd.pack('<' + ('h'*len(data)), *data)
-    path = filename
-    dispatcher.send( signal='FILE_CREATED', sender=filename, filename=filename)
-    wf = wave.open(path, 'wb')
-    wf.setnchannels(1)
-    wf.setsampwidth(sample_width)
-    wf.setframerate(snd.RATE)
-    wf.writeframes(data)
-    wf.close()
-    print("done - result written to "+path)
+    print str(len(data))
+    if len(data) > MIN_LENGTH:
+        data = snd.pack('<' + ('h'*len(data)), *data)
+        path = filename
+        dispatcher.send( signal='FILE_CREATED', sender=filename, filename=filename)
+        wf = wave.open(path, 'wb')
+        wf.setnchannels(1)
+        wf.setsampwidth(sample_width)
+        wf.setframerate(snd.RATE)
+        wf.writeframes(data)
+        wf.close()
+        print("done - result "+str(len(data))+" frames written to "+path)
 
 dispatcher.connect( filenameMaker, signal='SND_STARTED', sender=dispatcher.Any )
 dispatcher.connect( worker, signal='FILE_CREATED', sender=dispatcher.Any )
@@ -42,3 +49,4 @@
 while True:
     print "ready to record"
     record_to_async_file()
+