Mercurial > hg > auditok
view demos/echo.py @ 331:9741b52f194a
Reformat code and documentation
author | Amine Sehili <amine.sehili@gmail.com> |
---|---|
date | Thu, 24 Oct 2019 20:49:51 +0200 |
parents | 9be2d0ca4c00 |
children |
line wrap: on
line source
from auditok import ( ADSFactory, AudioEnergyValidator, StreamTokenizer, player_for, ) import pyaudio import sys try: energy_threshold = 45 duration = 10 # seconds if len(sys.argv) > 1: energy_threshold = float(sys.argv[1]) if len(sys.argv) > 2: duration = float(sys.argv[2]) # record = True so that we'll be able to rewind the source. # max_time = 10: read 10 seconds from the microphone asource = ADSFactory.ads(record=True, max_time=duration) validator = AudioEnergyValidator( sample_width=asource.get_sample_width(), energy_threshold=energy_threshold, ) tokenizer = StreamTokenizer( validator=validator, min_length=20, max_length=250, max_continuous_silence=30, ) player = player_for(asource) def echo(data, start, end): print("Acoustic activity at: {0}--{1}".format(start, end)) player.play(b"".join(data)) asource.open() print( "\n ** Make some noise (dur:{}, energy:{})...".format( duration, energy_threshold ) ) tokenizer.tokenize(asource, callback=echo) asource.close() player.stop() except KeyboardInterrupt: player.stop() asource.close() sys.exit(0) except Exception as e: sys.stderr.write(str(e) + "\n") sys.exit(1)