"""Самодиагностика MuScriptor: проверить сервер, прокси и саму транскрипцию. Запуск в ноутбуке (пока пускач работает в соседней ячейке): python3 plus/selfcheck.py или с явными портами: python3 plus/selfcheck.py --server 8222 --proxy 8223 --url https://... """ import argparse import json import math import os import struct import sys import time import urllib.error import urllib.request import wave PROBE = "/tmp/muscriptor_probe.wav" PROBE_FREQS = (523.25, 659.25, 783.99) # C5, E5, G5 def make_probe(path=PROBE, seconds=2.0, rate=44100): """Короткий аккорд: три ноты с затуханием, чтобы было что транскрибировать.""" total = int(seconds * rate) buffer = [0.0] * total for index, freq in enumerate(PROBE_FREQS): start = int((0.15 + 0.35 * index) * rate) length = int(0.9 * rate) for i in range(length): if start + i >= total: break envelope = math.exp(-4.0 * i / rate) buffer[start + i] += 0.28 * envelope * ( math.sin(2 * math.pi * freq * i / rate) + 0.35 * math.sin(4 * math.pi * freq * i / rate) + 0.15 * math.sin(6 * math.pi * freq * i / rate)) with wave.open(path, "w") as handle: handle.setnchannels(1) handle.setsampwidth(2) handle.setframerate(rate) handle.writeframes(b"".join(struct.pack("