mirror of
https://github.com/snapotter-hq/SnapOtter.git
synced 2026-08-03 07:46:42 +02:00
Found and fixed during a full local Docker build validation (amd64/arm64, all four fleet targets, AI bundle installs, QA harness) and the follow-up bug sweep requested afterward. None of the affected scripts run in CI, so these had been silently broken indefinitely. - docker/feature-manifest.json: pythonVersion was a flat "3.11", but the amd64 base (Ubuntu 24.04) ships Python 3.12 while arm64 (Debian bookworm) ships 3.11. Changed to a per-arch object matching the file's existing convention. - tests/qa/api-sweep.mts and verify-ai.mts: bare "@snapotter/shared" import can't resolve since tests/ is not a pnpm workspace member, making both silently unrunnable via their own documented command on any fresh checkout. Switched to a relative import. - tests/qa/generate-ledger.mts: wrote to docs/qa/ without creating the directory first; docs/ is gitignored except COMMUNITY_GUIDE.md, so a fresh checkout threw ENOENT. - Seven QA Playwright spec files (input-preview, settings, settings-extended, multifile, output-preview, pipeline-ui, smoke) had ~115 fixture() calls using directory names that don't exist. Resolved every call programmatically against the real fixture tree. - packages/ai/src/bridge.ts: AI dispatcher restart (happens on every bundle install) was falsely counted as a crash, risking permanent dispatcher disable after enough legitimate restarts within the crash window. Added a shuttingDown flag checked at all three recordCrash() call sites. - packages/image-engine/src/operations/auto-enhance.ts: image-enhancement hung 40+ seconds on large RAW photos (confirmed on a real 20.2MP file) in Sharp's .clahe() step, whose cost scales with total pixel count regardless of tile size. Added a 16-megapixel cap above which CLAHE is skipped; verified against the real file (40+s -> 2.0s) with no regression to other RAW formats or normal-sized images. Fixing this surfaced a second, smaller bug where the saturation step's CLAHE compensation boost was keyed off the raw toggle instead of whether CLAHE actually ran. - Two QA-harness robustness gaps closed per "fix everything, even the small bugs": the passport-photo/erase-object input-preview tests now skip cleanly with a clear reason on a container without their AI bundle installed, and docker-compose.qa.yml's hardcoded project/container name (the actual root cause of a mid-validation container swap between two concurrent sessions) is now parameterized via QA_PROJECT_NAME. Full validation report is local-only per repo convention.
506 lines
18 KiB
JSON
506 lines
18 KiB
JSON
{
|
|
"manifestVersion": 2,
|
|
"imageVersion": "2.0.0",
|
|
"pythonVersion": { "amd64": "3.12", "arm64": "3.11" },
|
|
"basePackages": ["numpy==1.26.4", "Pillow==12.2.0", "opencv-python-headless==4.10.0.84"],
|
|
"bundleRepo": "deepsafe/feature-bundles",
|
|
"bundles": {
|
|
"background-removal": {
|
|
"name": "Background Removal",
|
|
"description": "Remove image backgrounds with AI",
|
|
"estimatedSize": "4-5 GB",
|
|
"archives": {
|
|
"amd64-gpu": {
|
|
"file": "v2.0.0/background-removal-amd64-gpu.tar.gz",
|
|
"sha256": "a1dfbdd5862fd32c7719ca79b0c7e4b76a327330a5991ddad98a2761abca10cb",
|
|
"compressedSize": 4808242472,
|
|
"extractedSize": 0
|
|
},
|
|
"arm64-cpu": {
|
|
"file": "v2.0.0/background-removal-arm64-cpu.tar.gz",
|
|
"sha256": "cbb570b81bfd740dd05e265dd8c93ade53a9f41fdd30cc8b3fbc47a8daa824af",
|
|
"compressedSize": 4631430295,
|
|
"extractedSize": 0
|
|
}
|
|
},
|
|
"packages": {
|
|
"common": ["rembg==2.0.62"],
|
|
"amd64": ["onnxruntime-gpu==1.20.1", "mediapipe>=0.10.21"],
|
|
"arm64": ["onnxruntime==1.20.1", "mediapipe>=0.10.18"]
|
|
},
|
|
"pipFlags": {},
|
|
"postInstall": [],
|
|
"models": [
|
|
{
|
|
"id": "rembg-u2net",
|
|
"downloadFn": "rembg_session",
|
|
"args": ["u2net"]
|
|
},
|
|
{
|
|
"id": "rembg-isnet-general-use",
|
|
"downloadFn": "rembg_session",
|
|
"args": ["isnet-general-use"]
|
|
},
|
|
{
|
|
"id": "rembg-bria-rmbg",
|
|
"downloadFn": "rembg_session",
|
|
"args": ["bria-rmbg"]
|
|
},
|
|
{
|
|
"id": "rembg-birefnet-general-lite",
|
|
"downloadFn": "rembg_session",
|
|
"args": ["birefnet-general-lite"]
|
|
},
|
|
{
|
|
"id": "rembg-birefnet-portrait",
|
|
"downloadFn": "rembg_session",
|
|
"args": ["birefnet-portrait"]
|
|
},
|
|
{
|
|
"id": "rembg-birefnet-general",
|
|
"downloadFn": "rembg_session",
|
|
"args": ["birefnet-general"]
|
|
},
|
|
{
|
|
"id": "rembg-birefnet-matting",
|
|
"downloadFn": "rembg_session",
|
|
"args": ["birefnet-matting"]
|
|
},
|
|
{
|
|
"id": "rembg-birefnet-hr-matting",
|
|
"downloadFn": "rembg_session",
|
|
"args": ["birefnet-hr-matting"]
|
|
}
|
|
],
|
|
"enablesTools": [
|
|
"remove-background",
|
|
"passport-photo",
|
|
"transparency-fixer",
|
|
"background-replace",
|
|
"blur-background"
|
|
]
|
|
},
|
|
"face-detection": {
|
|
"name": "Face Detection",
|
|
"description": "Detect and blur faces, fix red-eye, smart crop",
|
|
"estimatedSize": "200-300 MB",
|
|
"archives": {
|
|
"amd64-gpu": {
|
|
"file": "v2.0.0/face-detection-amd64-gpu.tar.gz",
|
|
"sha256": "0ee28b86dac88c60e005604ba0595746f455ec97f08d0c8307ba9b57e131bc7f",
|
|
"compressedSize": 75358868,
|
|
"extractedSize": 209838080
|
|
},
|
|
"arm64-cpu": {
|
|
"file": "v2.0.0/face-detection-arm64-cpu.tar.gz",
|
|
"sha256": "8ad922514aba1721de154d370f9335f78c5ce5aceade5b19515e0192d4367909",
|
|
"compressedSize": 222878753,
|
|
"extractedSize": 704276480
|
|
}
|
|
},
|
|
"packages": {
|
|
"common": [],
|
|
"amd64": ["mediapipe>=0.10.21"],
|
|
"arm64": ["mediapipe>=0.10.18"]
|
|
},
|
|
"pipFlags": {},
|
|
"postInstall": [],
|
|
"models": [
|
|
{
|
|
"id": "mediapipe-face-detector",
|
|
"url": "https://storage.googleapis.com/mediapipe-models/face_detector/blaze_face_short_range/float16/latest/blaze_face_short_range.tflite",
|
|
"path": "mediapipe/blaze_face_short_range.tflite",
|
|
"minSize": 100000
|
|
},
|
|
{
|
|
"id": "mediapipe-face-landmarker",
|
|
"url": "https://storage.googleapis.com/mediapipe-models/face_landmarker/face_landmarker/float16/latest/face_landmarker.task",
|
|
"path": "mediapipe/face_landmarker.task",
|
|
"minSize": 1000000
|
|
}
|
|
],
|
|
"enablesTools": ["blur-faces", "red-eye-removal", "smart-crop"]
|
|
},
|
|
"object-eraser-colorize": {
|
|
"name": "Object Eraser & Colorize",
|
|
"description": "Erase objects from photos and colorize B&W images",
|
|
"estimatedSize": "1-2 GB",
|
|
"archives": {
|
|
"amd64-gpu": {
|
|
"file": "v2.0.0/object-eraser-colorize-amd64-gpu.tar.gz",
|
|
"sha256": "a3f6cd2eca9e5dd907497d0d58ca5f6532887bb748e4062de0f4fb9815782c31",
|
|
"compressedSize": 1545472964,
|
|
"extractedSize": 2249379840
|
|
},
|
|
"arm64-cpu": {
|
|
"file": "v2.0.0/object-eraser-colorize-arm64-cpu.tar.gz",
|
|
"sha256": "e043d91acca20b3259711fd3a54521890f624b9952e617159f21a97216830630",
|
|
"compressedSize": 1266922599,
|
|
"extractedSize": 0
|
|
}
|
|
},
|
|
"packages": {
|
|
"common": ["huggingface-hub"],
|
|
"amd64": ["onnxruntime-gpu==1.20.1"],
|
|
"arm64": ["onnxruntime==1.20.1"]
|
|
},
|
|
"pipFlags": {},
|
|
"postInstall": [],
|
|
"models": [
|
|
{
|
|
"id": "lama-onnx",
|
|
"downloadFn": "hf_snapshot",
|
|
"args": ["Carve/LaMa-ONNX", "lama"],
|
|
"file": "lama_fp32.onnx",
|
|
"path": "lama/lama_fp32.onnx",
|
|
"minSize": 100000000
|
|
},
|
|
{
|
|
"id": "ddcolor-onnx",
|
|
"downloadFn": "hf_snapshot",
|
|
"args": ["facefusion/models-3.0.0", "ddcolor"],
|
|
"file": "ddcolor.onnx",
|
|
"path": "ddcolor/ddcolor.onnx",
|
|
"minSize": 50000000
|
|
},
|
|
{
|
|
"id": "opencv-colorize-prototxt",
|
|
"url": "https://raw.githubusercontent.com/richzhang/colorization/caffe/colorization/models/colorization_deploy_v2.prototxt",
|
|
"path": "colorize-opencv/colorization_deploy_v2.prototxt",
|
|
"minSize": 0
|
|
},
|
|
{
|
|
"id": "opencv-colorize-caffemodel",
|
|
"downloadFn": "hf_snapshot",
|
|
"args": ["BilalSardar/Black-N-White-To-Color", "colorize-opencv"],
|
|
"file": "colorization_release_v2.caffemodel",
|
|
"path": "colorize-opencv/colorization_release_v2.caffemodel",
|
|
"minSize": 100000000,
|
|
"repoType": "space"
|
|
},
|
|
{
|
|
"id": "opencv-colorize-points",
|
|
"url": "https://raw.githubusercontent.com/richzhang/colorization/caffe/colorization/resources/pts_in_hull.npy",
|
|
"path": "colorize-opencv/pts_in_hull.npy",
|
|
"minSize": 0
|
|
}
|
|
],
|
|
"enablesTools": ["erase-object", "colorize", "ai-canvas-expand"]
|
|
},
|
|
"upscale-enhance": {
|
|
"name": "Upscale & Enhance",
|
|
"description": "AI upscaling, face enhancement, and noise removal",
|
|
"estimatedSize": "4-5 GB",
|
|
"archives": {
|
|
"amd64-gpu": {
|
|
"file": "v2.0.0/upscale-enhance-amd64-gpu.tar.gz",
|
|
"sha256": "37f0e7a62dcb83b2dc0760532fb41ac9d1c40d336abe1aea01d889ad039ebc65",
|
|
"compressedSize": 5314188723,
|
|
"extractedSize": 8412712960
|
|
},
|
|
"arm64-cpu": {
|
|
"file": "v2.0.0/upscale-enhance-arm64-cpu.tar.gz",
|
|
"sha256": "de65321f1cc5d5664c63e38e49cd39c36fe88e0569d666821e982ff6d6999bea",
|
|
"compressedSize": 2262502457,
|
|
"extractedSize": 0
|
|
}
|
|
},
|
|
"packages": {
|
|
"common": ["codeformer-pip==0.0.4", "huggingface-hub", "einops", "setuptools<75"],
|
|
"amd64": [
|
|
"torch==2.7.0+cu126 torchvision==0.22.0+cu126 --index-url https://download.pytorch.org/whl/cu126",
|
|
"lpips",
|
|
"basicsr==1.4.2",
|
|
"realesrgan==0.3.0",
|
|
"mediapipe>=0.10.21"
|
|
],
|
|
"arm64": [
|
|
"torch==2.7.0 torchvision==0.22.0 --index-url https://download.pytorch.org/whl/cpu",
|
|
"lpips",
|
|
"basicsr==1.4.2",
|
|
"realesrgan==0.3.0",
|
|
"mediapipe>=0.10.18"
|
|
]
|
|
},
|
|
"pipFlags": {
|
|
"codeformer-pip==0.0.4": "--no-deps",
|
|
"basicsr==1.4.2": "--no-build-isolation"
|
|
},
|
|
"postInstall": ["numpy==1.26.4"],
|
|
"models": [
|
|
{
|
|
"id": "realesrgan-x4plus",
|
|
"url": "https://github.com/xinntao/Real-ESRGAN/releases/download/v0.1.0/RealESRGAN_x4plus.pth",
|
|
"path": "realesrgan/RealESRGAN_x4plus.pth",
|
|
"minSize": 60000000
|
|
},
|
|
{
|
|
"id": "gfpgan-v1.3",
|
|
"url": "https://github.com/TencentARC/GFPGAN/releases/download/v1.3.0/GFPGANv1.3.pth",
|
|
"path": "gfpgan/GFPGANv1.3.pth",
|
|
"minSize": 300000000
|
|
},
|
|
{
|
|
"id": "codeformer-pth",
|
|
"url": "https://github.com/sczhou/CodeFormer/releases/download/v0.1.0/codeformer.pth",
|
|
"path": "codeformer/codeformer.pth",
|
|
"minSize": 350000000
|
|
},
|
|
{
|
|
"id": "codeformer-onnx",
|
|
"downloadFn": "hf_snapshot",
|
|
"args": ["facefusion/models-3.0.0", "codeformer"],
|
|
"file": "codeformer.onnx",
|
|
"path": "codeformer/codeformer.onnx",
|
|
"minSize": 100000000
|
|
},
|
|
{
|
|
"id": "facexlib-detection",
|
|
"url": "https://github.com/xinntao/facexlib/releases/download/v0.1.0/detection_Resnet50_Final.pth",
|
|
"path": "gfpgan/facelib/detection_Resnet50_Final.pth",
|
|
"minSize": 100000000
|
|
},
|
|
{
|
|
"id": "facexlib-parsing",
|
|
"url": "https://github.com/xinntao/facexlib/releases/download/v0.2.2/parsing_parsenet.pth",
|
|
"path": "gfpgan/facelib/parsing_parsenet.pth",
|
|
"minSize": 80000000
|
|
},
|
|
{
|
|
"id": "scunet-color-real",
|
|
"url": "https://github.com/cszn/KAIR/releases/download/v1.0/scunet_color_real_psnr.pth",
|
|
"path": "scunet/scunet_color_real_psnr.pth",
|
|
"minSize": 3000000
|
|
},
|
|
{
|
|
"id": "nafnet-sidd",
|
|
"downloadFn": "hf_snapshot",
|
|
"args": ["mikestealth/nafnet-models", "nafnet"],
|
|
"file": "NAFNet-SIDD-width64.pth",
|
|
"path": "nafnet/NAFNet-SIDD-width64.pth",
|
|
"minSize": 60000000
|
|
}
|
|
],
|
|
"patches": [
|
|
{
|
|
"file": "basicsr/data/degradations.py",
|
|
"search": "from torchvision.transforms.functional_tensor import rgb_to_grayscale",
|
|
"replace": "from torchvision.transforms.functional import rgb_to_grayscale"
|
|
}
|
|
],
|
|
"enablesTools": ["upscale", "enhance-faces", "noise-removal"]
|
|
},
|
|
"photo-restoration": {
|
|
"name": "Photo Restoration",
|
|
"description": "Restore old or damaged photos",
|
|
"estimatedSize": "800 MB - 1 GB",
|
|
"archives": {
|
|
"amd64-gpu": {
|
|
"file": "v2.0.0/photo-restoration-amd64-gpu.tar.gz",
|
|
"sha256": "2ccac73c862f04dafc8d7ecc6543bbe8481b9d796a53a9c4e7cf34e53f261a24",
|
|
"compressedSize": 4698091043,
|
|
"extractedSize": 8246353920
|
|
},
|
|
"arm64-cpu": {
|
|
"file": "v2.0.0/photo-restoration-arm64-cpu.tar.gz",
|
|
"sha256": "13afbaae45d84f1148d00b76a20115283ab3f75d7b2a9e33b940c9bf800b40e1",
|
|
"compressedSize": 1367026285,
|
|
"extractedSize": 0
|
|
}
|
|
},
|
|
"packages": {
|
|
"common": ["codeformer-pip==0.0.4", "huggingface-hub", "setuptools<75"],
|
|
"amd64": [
|
|
"onnxruntime-gpu==1.20.1",
|
|
"mediapipe>=0.10.21",
|
|
"torch==2.7.0+cu126 torchvision==0.22.0+cu126 --index-url https://download.pytorch.org/whl/cu126",
|
|
"lpips",
|
|
"basicsr==1.4.2",
|
|
"realesrgan==0.3.0"
|
|
],
|
|
"arm64": [
|
|
"torch==2.7.0 torchvision==0.22.0 --index-url https://download.pytorch.org/whl/cpu",
|
|
"onnxruntime==1.20.1",
|
|
"mediapipe>=0.10.18",
|
|
"lpips",
|
|
"basicsr==1.4.2",
|
|
"realesrgan==0.3.0"
|
|
]
|
|
},
|
|
"pipFlags": {
|
|
"codeformer-pip==0.0.4": "--no-deps",
|
|
"basicsr==1.4.2": "--no-build-isolation"
|
|
},
|
|
"postInstall": ["numpy==1.26.4"],
|
|
"models": [
|
|
{
|
|
"id": "lama-onnx",
|
|
"downloadFn": "hf_snapshot",
|
|
"args": ["Carve/LaMa-ONNX", "lama"],
|
|
"file": "lama_fp32.onnx",
|
|
"path": "lama/lama_fp32.onnx",
|
|
"minSize": 100000000
|
|
},
|
|
{
|
|
"id": "codeformer-onnx",
|
|
"downloadFn": "hf_snapshot",
|
|
"args": ["facefusion/models-3.0.0", "codeformer"],
|
|
"file": "codeformer.onnx",
|
|
"path": "codeformer/codeformer.onnx",
|
|
"minSize": 100000000
|
|
},
|
|
{
|
|
"id": "realesrgan-x4plus",
|
|
"url": "https://github.com/xinntao/Real-ESRGAN/releases/download/v0.1.0/RealESRGAN_x4plus.pth",
|
|
"path": "realesrgan/RealESRGAN_x4plus.pth",
|
|
"minSize": 60000000
|
|
},
|
|
{
|
|
"id": "facexlib-detection",
|
|
"url": "https://github.com/xinntao/facexlib/releases/download/v0.1.0/detection_Resnet50_Final.pth",
|
|
"path": "gfpgan/facelib/detection_Resnet50_Final.pth",
|
|
"minSize": 100000000
|
|
},
|
|
{
|
|
"id": "facexlib-parsing",
|
|
"url": "https://github.com/xinntao/facexlib/releases/download/v0.2.2/parsing_parsenet.pth",
|
|
"path": "gfpgan/facelib/parsing_parsenet.pth",
|
|
"minSize": 80000000
|
|
},
|
|
{
|
|
"id": "mediapipe-face-detector",
|
|
"url": "https://storage.googleapis.com/mediapipe-models/face_detector/blaze_face_short_range/float16/latest/blaze_face_short_range.tflite",
|
|
"path": "mediapipe/blaze_face_short_range.tflite",
|
|
"minSize": 100000
|
|
},
|
|
{
|
|
"id": "mediapipe-face-landmarker",
|
|
"url": "https://storage.googleapis.com/mediapipe-models/face_landmarker/face_landmarker/float16/latest/face_landmarker.task",
|
|
"path": "mediapipe/face_landmarker.task",
|
|
"minSize": 1000000
|
|
},
|
|
{
|
|
"id": "scunet-color-real",
|
|
"url": "https://github.com/cszn/KAIR/releases/download/v1.0/scunet_color_real_psnr.pth",
|
|
"path": "scunet/scunet_color_real_psnr.pth",
|
|
"minSize": 3000000
|
|
}
|
|
],
|
|
"patches": [
|
|
{
|
|
"file": "basicsr/data/degradations.py",
|
|
"search": "from torchvision.transforms.functional_tensor import rgb_to_grayscale",
|
|
"replace": "from torchvision.transforms.functional import rgb_to_grayscale"
|
|
}
|
|
],
|
|
"enablesTools": ["restore-photo"]
|
|
},
|
|
"ocr": {
|
|
"name": "OCR",
|
|
"description": "Extract text from images",
|
|
"estimatedSize": "3-4 GB",
|
|
"archives": {
|
|
"amd64-gpu": {
|
|
"file": "v2.0.0/ocr-amd64-gpu.tar.gz",
|
|
"sha256": "80db475eb442899cedad3590b18f080225deaf50985224b302475fbfdf5883f6",
|
|
"compressedSize": 5927587552,
|
|
"extractedSize": 9367838720
|
|
},
|
|
"arm64-cpu": {
|
|
"file": "v2.0.0/ocr-arm64-cpu.tar.gz",
|
|
"sha256": "5c40dfc5f3147dd61bf8f3b24604eefb5591e6412a2ca61f7e2fb7e1c7d11b9c",
|
|
"compressedSize": 1977460762,
|
|
"extractedSize": 0
|
|
}
|
|
},
|
|
"packages": {
|
|
"common": ["huggingface-hub"],
|
|
"amd64": [
|
|
"paddlepaddle-gpu>=3.2.1 --index-url https://www.paddlepaddle.org.cn/packages/stable/cu126/ --extra-index-url https://pypi.org/simple/",
|
|
"paddleocr[doc-parser]>=3.4.0,<3.5.0"
|
|
],
|
|
"arm64": ["paddlepaddle>=3.2.1", "paddleocr[doc-parser]>=3.4.0,<3.5.0"]
|
|
},
|
|
"pipFlags": {},
|
|
"postInstall": [],
|
|
"models": [
|
|
{
|
|
"id": "paddleocr-server-det",
|
|
"downloadFn": "hf_snapshot",
|
|
"args": ["PaddlePaddle/PP-OCRv5_server_det", "PP-OCRv5_server_det"]
|
|
},
|
|
{
|
|
"id": "paddleocr-server-rec",
|
|
"downloadFn": "hf_snapshot",
|
|
"args": ["PaddlePaddle/PP-OCRv5_server_rec", "PP-OCRv5_server_rec"]
|
|
},
|
|
{
|
|
"id": "paddleocr-mobile-det",
|
|
"downloadFn": "hf_snapshot",
|
|
"args": ["PaddlePaddle/PP-OCRv5_mobile_det", "PP-OCRv5_mobile_det"]
|
|
},
|
|
{
|
|
"id": "paddleocr-mobile-rec",
|
|
"downloadFn": "hf_snapshot",
|
|
"args": ["PaddlePaddle/PP-OCRv5_mobile_rec", "PP-OCRv5_mobile_rec"]
|
|
},
|
|
{
|
|
"id": "paddleocr-latin-rec",
|
|
"downloadFn": "hf_snapshot",
|
|
"args": ["PaddlePaddle/latin_PP-OCRv5_mobile_rec", "latin_PP-OCRv5_mobile_rec"]
|
|
},
|
|
{
|
|
"id": "paddleocr-korean-rec",
|
|
"downloadFn": "hf_snapshot",
|
|
"args": ["PaddlePaddle/korean_PP-OCRv5_mobile_rec", "korean_PP-OCRv5_mobile_rec"]
|
|
},
|
|
{
|
|
"id": "paddleocr-textline-ori",
|
|
"downloadFn": "hf_snapshot",
|
|
"args": ["PaddlePaddle/PP-LCNet_x1_0_textline_ori", "PP-LCNet_x1_0_textline_ori"]
|
|
},
|
|
{
|
|
"id": "paddleocr-vl",
|
|
"downloadFn": "hf_snapshot",
|
|
"args": ["PaddlePaddle/PaddleOCR-VL-1.5", "PaddleOCR-VL-1.5"]
|
|
}
|
|
],
|
|
"enablesTools": ["ocr", "ocr-pdf"]
|
|
},
|
|
"transcription": {
|
|
"name": "Transcription",
|
|
"description": "Speech to text for audio and video (subtitles)",
|
|
"estimatedSize": "~600 MB",
|
|
"archives": {
|
|
"amd64-gpu": {
|
|
"file": "v2.0.0/transcription-amd64-gpu.tar.gz",
|
|
"sha256": "3033d480c6183df66855d78c355233dbc86a754d07414e544e1df1038337c9e1",
|
|
"compressedSize": 559189061,
|
|
"extractedSize": 845987840
|
|
},
|
|
"arm64-cpu": {
|
|
"file": "v2.0.0/transcription-arm64-cpu.tar.gz",
|
|
"sha256": "6184434bc10986677d15e96e22b6998c3a780d6619b6457b8854c01dfd0f9a28",
|
|
"compressedSize": 531990919,
|
|
"extractedSize": 0
|
|
}
|
|
},
|
|
"packages": {
|
|
"common": ["faster-whisper>=1.0.0"],
|
|
"amd64": [],
|
|
"arm64": []
|
|
},
|
|
"pipFlags": {},
|
|
"postInstall": [],
|
|
"models": [
|
|
{
|
|
"id": "faster-whisper-small",
|
|
"downloadFn": "hf_snapshot",
|
|
"args": ["Systran/faster-whisper-small", "faster-whisper-small"]
|
|
}
|
|
],
|
|
"enablesTools": ["transcribe-audio", "auto-subtitles"]
|
|
}
|
|
}
|
|
}
|