-
Notifications
You must be signed in to change notification settings - Fork 724
/
Copy pathsegment.py
27 lines (24 loc) · 946 Bytes
/
segment.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#!/usr/bin/env python3
"""
Segment speech endlessly from the default audio device.
"""
# MIT license (c) 2022, see LICENSE for more information.
# Author: David Huggins-Daines <dhdaines@gmail.com>
from pocketsphinx import Segmenter
import subprocess
seg = Segmenter()
incmd = f"sox -q -r {seg.sample_rate} -c 1 -b 16 -e signed-integer -d -t raw -".split()
outcmd = f"sox -q -t raw -r {seg.sample_rate} -c 1 -b 16 -e signed-integer -".split()
with subprocess.Popen(incmd, stdout=subprocess.PIPE) as sox:
try:
for idx, speech in enumerate(seg.segment(sox.stdout)):
outfile = "%03d_%.2f-%.2f.wav" % (
idx,
speech.start_time,
speech.end_time,
)
with subprocess.Popen(outcmd + [outfile], stdin=subprocess.PIPE) as soxout:
soxout.stdin.write(speech.pcm)
print("Wrote %s" % outfile)
except KeyboardInterrupt:
pass