Skip to content

GkmasObjectManager GUI v1.2

Choose a tag to compare

@AllenHeartcore AllenHeartcore released this 20 Apr 05:19

A Python OOP interface with Gakuen Idolm@ster's object database ("manifest").


Running the Flask GUI

$ pip install -r requirements.txt
$ python server.py

Using the Python Module

import GkmasObjectManager as gom

m = gom.fetch(pc=True)  # live loading from server
m.export("manifest.json")  # supports ProtoDB/JSON/CSV

m_old = gom.load("octocacheevai")  # loading from local 'octocacheevai'
m_diff = gom.fetch(m_old.revision._get_canon_repr())  # fetch update
m_new = m_old + m_diff  # apply update
assert m_new == gom.fetch()

m.download_preset("presets/namecard_kit.yml")  # implies export dir

m.download(
    "sud_vo_adv_unit.*",
    path="mainstory_voicelines",
    convert_audio=True,  # default, may omit
    audio_format="mp3",  # applies to all subsongs, may take a while
    unpack_subsongs=True,  # unpack ZIP to output directory
)
m.download("adv_unit.*", path="mainstory_scripts")  # auto converts to JSON

Using the SoVITS Dataset Maker

$ python sovits_dataset.py -h
usage: sovits_dataset.py [-h] [-o OUTPUT] [-f FORMAT] [-b BITRATE] [-c] [-m] [-g] [-d CACHE_DIR] [-p] character

Creates a dataset for training a voice cloning model.

positional arguments:
  character                 Character name

options:
  --output OUTPUT           Output filename, default to 'sovits_dataset_v{REVISION}_{CHARACTER}[_greedy][_captioned].{FORMAT}'
  --format FORMAT           Output format, default to .wav
  --bitrate BITRATE         Output bitrate, default to 128kbps
  --caption                 Include captions
  --merge                   Merge dataset into one audio file (otherwise export as ZIP)
  --greedy                  Search *beyond* adventures with character abbrev in filename (e.g., appearance in others' stories)
  --cache-dir CACHE_DIR     Cache directory, default to ./.sovits-cache
  --purge-cache             Clean up cache after use

$ python sovits_dataset.py fktn -d D:/tmp/gkmas/.sovits-cache -g -c -m -f mp3
- Character is Fujita KoToNe
- [G]reedily cache all voice packs
- Include adventure [c]aption
- [M]erge samples into one file
- Output [f]ormat is .mp3

Character Abbreviations

Hanami SaKI Tsukimura TeMaRi Fujita KoToNe Arimura MAO Katsuragi LiLJa Kuramoto ChiNA
Shiun SuMiKa Shinosawa HiRO Himesaki RiNaMi Hanami UME Hataya MiSuZu Juo SeNA
Amaya TsuBaMe Juo KuNiO Neo ASaRi VOcal TRainer DAnce TRainer VIsual TRainer
Kayo RiNHa Aoi NaDeshiKo Shirakusa ShiON Shirakusa GekKA Kuroi TaKaO

Changelog

  • Backend
    • [Feature/Manifest] Live manifest fetch of PC version by DMM GAMES
    • [Feature/Manifest] Manifest add (for applying diff patches)
    • [Feature/Manifest] YAML downloading scheme presets
    • [Feature/Object] Record 'Last-Modified' at asset request; reflect in mtime of exported files and frontend
    • [Feature/Media] Extract multiple subsongs from voiceline ACB, export as ZIP, and optionally unpack
    • [Feature/Adv] Adventure script parser (courtesy of Hatsuboshi_Teleprompter, Gakumas-Commu-Parser)
    • [Feature] SoVITS- and diff-svc-compatible dataset maker script with cache & caption (transcript) support
    • [Fix/Manifest] Accelerate manifest search by concatenating regexes & vectorization with filter
    • [Fix/Media] Remove deprecated GPT image captioning engine
    • [Style] Patch security loopholes according to CodeQL
    • [Style] Replace insecure/dispreferred standard libraries (advised by Julian Berman)
      • os.path -> pathlib.Path
      • hashlib, pycryptodome -> cryptography
      • multiprocessing, futures -> asyncio ("nworker" param is therefore deprecated)
  • Frontend
    • [Feature/Search] Add "entries per page" option in search result page (valid range is 12~96, with step size of 12)
    • [Feature/View] Display multiple subsongs for voiceline ACBs
    • [Fix] Add Neo Asari to the cohort (due to an April Fools' event)
    • [Fix] Revise accent color scheme (courtesy of @vertesan and their site)

Development Roadmap

  • Backend
    • [Manifest] Export as database
    • [Media] 'File exists' check with conversion
    • [Adv] Story context/alias parser
    • [Docs] Check class docstrings and PyLint warnings
    • [Docs] img/sud file structure in README
  • Frontend
    • [Home] 'Manifest Load/Export' buttons
    • [Search] Filter search by assetbundle-/resource- only
    • [View] Embedded Unity model preview (powered by mari-mari-dance)
    • [View] Progress bars for downloading, MD5 checksum, and ffmpeg conversion
    • [Adv] Storyline editor (the codename would be GkmasAdventurer)
    • Deploy on GCP (may involve high-concurrency middleware)