Download streampa/stream.py from faeea/StreamPA: direct link, hf CLI and curl.
- Browser
- Download file 1.29 kB
-
https://huggingface.co/faeea/StreamPA/resolve/main/streampa/stream.py
- Command line
-
hf download hf://faeea/StreamPA/streampa/stream.py
-
curl -L -o stream.py https://huggingface.co/faeea/StreamPA/resolve/main/streampa/stream.py
1.29 kB
| import argparse | |
| import json | |
| from pathlib import Path | |
| import soundfile as sf | |
| from .pipeline import StreamPAPipeline | |
| def main(): | |
| p=argparse.ArgumentParser(description='Append raw audio blocks and emit each StreamPA prefix') | |
| p.add_argument('--audio',required=True) | |
| p.add_argument('--bundle-dir',required=True) | |
| p.add_argument('--device',default='cpu') | |
| p.add_argument('--threads',type=int,default=2) | |
| p.add_argument('--block-samples',type=int,default=1600) | |
| p.add_argument('--output',required=True) | |
| a=p.parse_args() | |
| session=StreamPAPipeline(a.bundle_dir,a.device,a.threads).create_session() | |
| dest=Path(a.output); dest.parent.mkdir(parents=True,exist_ok=True) | |
| with sf.SoundFile(a.audio) as audio, dest.open('x',encoding='utf-8') as f: | |
| if audio.samplerate!=16000 or audio.channels!=1: raise ValueError('Input must be mono 16000-Hz WAV') | |
| while True: | |
| block=audio.read(a.block_samples,dtype='float32') | |
| if not len(block): break | |
| for row in session.append(block): | |
| f.write(json.dumps(row,allow_nan=False)+'\n'); f.flush() | |
| f.write(json.dumps(session.finish(),allow_nan=False)+'\n') | |
| print(json.dumps(dict(output=str(dest),prefixes=session.prefix_index))) | |
| if __name__=='__main__': main() | |