54 lines
2 KiB
Python
54 lines
2 KiB
Python
|
|
import argparse
|
||
|
|
import random
|
||
|
|
import time
|
||
|
|
|
||
|
|
from .generator import random_command, render
|
||
|
|
from .llm import llm_command
|
||
|
|
|
||
|
|
|
||
|
|
def main() -> None:
|
||
|
|
parser = argparse.ArgumentParser(
|
||
|
|
description="ipin-vr: generator poleceń do terapii afazji"
|
||
|
|
)
|
||
|
|
parser.add_argument("--level", type=int, choices=[1, 2, 3], default=1,
|
||
|
|
metavar="{1,2,3}", help="poziom trudności (domyślnie: 1)")
|
||
|
|
parser.add_argument("--count", type=int, default=5, metavar="N",
|
||
|
|
help="liczba poleceń (domyślnie: 5)")
|
||
|
|
parser.add_argument("--delay", type=float, default=4.0, metavar="S",
|
||
|
|
help="pauza między poleceniami w sekundach (domyślnie: 4.0)")
|
||
|
|
parser.add_argument("--voice", metavar="PATH",
|
||
|
|
help="ścieżka do modelu Piper .onnx")
|
||
|
|
parser.add_argument("--no-audio", action="store_true",
|
||
|
|
help="wyłącza TTS")
|
||
|
|
parser.add_argument("--llm", action="store_true",
|
||
|
|
help="użyj LLM do wyboru poleceń")
|
||
|
|
parser.add_argument("--llm-endpoint",
|
||
|
|
default="http://localhost:8080/v1/chat/completions",
|
||
|
|
metavar="URL", help="endpoint llama.cpp")
|
||
|
|
parser.add_argument("--llm-model", default="local", metavar="NAME",
|
||
|
|
help="nazwa modelu")
|
||
|
|
parser.add_argument("--seed", type=int, metavar="N",
|
||
|
|
help="deterministyczny generator losowy")
|
||
|
|
args = parser.parse_args()
|
||
|
|
|
||
|
|
if args.seed is not None:
|
||
|
|
random.seed(args.seed)
|
||
|
|
|
||
|
|
use_audio = (not args.no_audio) and (args.voice is not None)
|
||
|
|
|
||
|
|
for i in range(1, args.count + 1):
|
||
|
|
if args.llm:
|
||
|
|
cmd = llm_command(args.level, args.llm_endpoint, args.llm_model)
|
||
|
|
else:
|
||
|
|
cmd = random_command(args.level)
|
||
|
|
|
||
|
|
text = render(cmd)
|
||
|
|
print(f"{i}. {text}")
|
||
|
|
|
||
|
|
if use_audio:
|
||
|
|
from .tts import speak
|
||
|
|
speak(text, args.voice)
|
||
|
|
|
||
|
|
if i < args.count:
|
||
|
|
time.sleep(args.delay)
|