mirror of
https://github.com/mudler/LocalAI.git
synced 2026-10-28 09:08:54 -04:00
feat(gallery): add experimental Fish Drama 3 (#12789)
Offer the community GGUF with Q4 experts and a Q8 backbone through existing audio-cpp routing. Document cloning inputs, memory needs, and the Fish Audio Community License. Keep automatic task selection for voice cloning. The existing audio.cpp pin defaults to top_k 4097, so no sampling override or backend bump is needed. Assisted-by: Codex:gpt-5 Co-authored-by: Ettore Di Giacinto <mudler@localai.io>
This commit is contained in:
1 parent
b53b2b54c9
commit
560527e2e1
2 files changed
+95
No files matched your search
@@ -68908,6 +68908,52 @@
|
||||
- filename: audio-cpp/yue2-3b/sidecars/yue2-vae-config.json
|
||||
sha256: f0191bb9694009956de44e0c361a6f1334760be4c8f848e599bde242a54a0970
|
||||
uri: huggingface://audio-cpp/Yue2-3B-GGUF/sidecars/yue2-vae-config.json
|
||||
- name: audio-cpp-fish-drama3
|
||||
url: github:mudler/LocalAI/gallery/virtual.yaml@master
|
||||
urls:
|
||||
- https://huggingface.co/fishaudio/drama-3
|
||||
- https://huggingface.co/Jmica/Drama-3-GGUF
|
||||
- https://huggingface.co/Jmica/Drama-3-GGUF/blob/17a5b40c5dc2c2be986f5371a7e650108b828e29/LICENSE
|
||||
- https://github.com/0xShug0/audio.cpp
|
||||
description: |
|
||||
Fish Audio Drama 3 is an experimental community port served by audio-cpp.
|
||||
This GGUF uses Q4_K_S experts and an 8-bit (Q8) backbone. The download is
|
||||
approximately 24.6 GB; runtime memory requirements exceed the weight size.
|
||||
Allow additional memory for inference and reference audio processing.
|
||||
|
||||
For voice cloning, supply a server-local reference WAV path in the OpenAI
|
||||
`voice` field and its transcript in `params.reference_text` (or
|
||||
`params.ref_text`). Cloning requires reference audio and a matching
|
||||
transcript; plain TTS can run without a reference. No named preset voices
|
||||
are provided. Use only reference audio for which you have rights and consent.
|
||||
|
||||
The Fish Audio Community License governs the weights, not MIT. Review its
|
||||
use and redistribution terms before installation. This community port is
|
||||
experimental and is not an official Fish Audio serving implementation.
|
||||
license: other
|
||||
tags:
|
||||
- audio-cpp
|
||||
- fish-drama3
|
||||
- experimental
|
||||
- tts
|
||||
- text-to-speech
|
||||
- voice-cloning
|
||||
- gguf
|
||||
- quantized
|
||||
overrides:
|
||||
backend: audio-cpp
|
||||
known_usecases:
|
||||
- tts
|
||||
name: audio-cpp-fish-drama3
|
||||
options:
|
||||
- family:fish_drama3
|
||||
- backend:best
|
||||
parameters:
|
||||
model: audio-cpp/drama-3-backbone-8bit-experts-Q4_K_S.gguf
|
||||
files:
|
||||
- filename: audio-cpp/drama-3-backbone-8bit-experts-Q4_K_S.gguf
|
||||
sha256: 05af716baf78e7c20863b9ccebb3ebdeca9607dd3ea7d0b72c35079e675b212b
|
||||
uri: https://huggingface.co/Jmica/Drama-3-GGUF/resolve/17a5b40c5dc2c2be986f5371a7e650108b828e29/drama-3-backbone-8bit-experts-Q4_K_S.gguf
|
||||
- name: audio-cpp-indextts-2.5
|
||||
url: github:mudler/LocalAI/gallery/virtual.yaml@master
|
||||
urls:
|
||||
|
||||
@@ -0,0 +1,49 @@
|
||||
# SPDX-License-Identifier: MIT
|
||||
"""Offline Drama 3 gallery regression. Requires PyYAML; downloads no weights."""
|
||||
import pathlib
|
||||
import unittest
|
||||
|
||||
import yaml
|
||||
|
||||
|
||||
ROOT = pathlib.Path(__file__).resolve().parents[1]
|
||||
NAME = "audio-cpp-fish-drama3"
|
||||
FILE = "drama-3-backbone-8bit-experts-Q4_K_S.gguf"
|
||||
REVISION = "17a5b40c5dc2c2be986f5371a7e650108b828e29"
|
||||
SHA256 = "05af716baf78e7c20863b9ccebb3ebdeca9607dd3ea7d0b72c35079e675b212b"
|
||||
|
||||
|
||||
class Drama3GalleryTest(unittest.TestCase):
|
||||
def test_gallery_entry(self):
|
||||
entries = yaml.safe_load((ROOT / "gallery/index.yaml").read_text())
|
||||
matches = [entry for entry in entries if entry["name"] == NAME]
|
||||
self.assertEqual(len(matches), 1, "expected exactly one Drama 3 entry")
|
||||
entry = matches[0]
|
||||
self.assertEqual(entry["url"], "github:mudler/LocalAI/gallery/virtual.yaml@master")
|
||||
yaml.safe_load((ROOT / "gallery/virtual.yaml").read_text())
|
||||
self.assertEqual(entry["license"], "other")
|
||||
self.assertIn("https://huggingface.co/Jmica/Drama-3-GGUF/blob/" + REVISION + "/LICENSE", entry["urls"])
|
||||
self.assertIn("plain TTS can run without a reference", entry["description"])
|
||||
self.assertTrue({"tts", "voice-cloning", "experimental", "gguf"} <= set(entry["tags"]))
|
||||
overrides = entry["overrides"]
|
||||
self.assertEqual(overrides["name"], NAME)
|
||||
self.assertEqual(overrides["backend"], "audio-cpp")
|
||||
self.assertEqual(overrides["known_usecases"], ["tts"])
|
||||
# Do not pin task:tts: the router must still select voice cloning.
|
||||
self.assertEqual(set(overrides["options"]), {"family:fish_drama3", "backend:best"})
|
||||
# LLM top_k is not forwarded by the TTS RPC. The existing audio.cpp
|
||||
# c6abb443 pin defaults to 4097 in fish_drama3/session.cpp:138.
|
||||
self.assertEqual(overrides["parameters"], {"model": "audio-cpp/" + FILE})
|
||||
self.assertNotIn("voices", overrides.get("tts", {}))
|
||||
self.assertEqual(entry["files"], [{
|
||||
"filename": "audio-cpp/" + FILE,
|
||||
"sha256": SHA256,
|
||||
"uri": "https://huggingface.co/Jmica/Drama-3-GGUF/resolve/" + REVISION + "/" + FILE,
|
||||
}])
|
||||
for text in ("experimental", "community port", "reference", "transcript",
|
||||
"24.6 GB", "memory", "Fish Audio Community License"):
|
||||
self.assertIn(text, entry["description"])
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
Reference in new issue
Block a user