From: Maxious Date: Sat, 29 Sep 2012 13:42:22 +0000 Subject: Ignore short silent clips X-Git-Url: https://maxious.lambdacomplex.org/git/?p=scannr.git&a=commitdiff&h=3ccb8814393bb3f12076b6d07fc7d7931413764e --- Ignore short silent clips --- --- /dev/null +++ b/README.txt @@ -1,1 +1,1 @@ - +ffmpeg from http://ffmpeg.zeranoe.com/builds/ --- a/scannr.py +++ b/scannr.py @@ -1,32 +1,52 @@ +import logging +logging.basicConfig(level=logging.DEBUG, + format='%(asctime)s\t%(levelname)s\t%(message)s') + import snd import time from datetime import date import threading +from pydispatch import dispatcher +import wave -filename = "" +filename = "demo.wav" +MIN_LENGTH = 90000 + def worker(filename): """thread worker function http://www.doughellmann.com/PyMOTW/threading/ - - https://github.com/uskr/pynma""" + https://github.com/uskr/pynma +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 def filenameMaker(): global filename - while True: - filename = date.today().isoformat()+'-'+str(time.time())+'-demo.wav' - time.sleep(5) + filename = date.today().isoformat()+'-'+str(time.time())+'-demo.wav' +def record_to_async_file(): + "Records from the microphone and outputs the resulting data to `path`" + sample_width, data = snd.record() + 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) - -threads = [] -fm = threading.Thread(target=filenameMaker) -fm.daemon = True -fm.start() +dispatcher.connect( filenameMaker, signal='SND_STARTED', sender=dispatcher.Any ) +dispatcher.connect( worker, signal='FILE_CREATED', sender=dispatcher.Any ) print "Scannr started..." while True: print "ready to record" - snd.record_to_file(filename) - t = threading.Thread(target=worker,args=(filename,)) - t.start() + record_to_async_file() + --- a/snd.py +++ b/snd.py @@ -10,12 +10,14 @@ from array import array from struct import unpack, pack import threading +from pydispatch import dispatcher CHANNELS = 1 THRESHOLD = 500 CHUNK_SIZE = 1024 FORMAT = pyaudio.paInt16 RATE = 44100 +MAX_SILENT = 30 def is_silent(L): "Returns `True` if below the 'silent' threshold" @@ -97,9 +99,10 @@ num_silent += 1 print num_silent elif not silent and not snd_started: + dispatcher.send( signal='SND_STARTED') snd_started = True print snd_started - if snd_started and num_silent > 30: + if snd_started and num_silent > MAX_SILENT: break sample_width = p.get_sample_size(FORMAT) --- /dev/null +++ b/trunklog.php @@ -1,1 +1,31 @@ - +"; +if (($handle = fopen("C:\Users\Madoka\AppData\Roaming\UniTrunker\S00000001\UniTrunker-20120411.LOG", "r")) !== FALSE) { + while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) { + + if ($row > 0 && count($data) == 9) { + + echo ""; + for ($c=0; $c < count($data); $c++) { + echo ''.$data[$c] . "\n"; + } + echo ""; + } + $row++; + } + fclose($handle); +} +echo ""; +?>