{"id":28800980,"url":"https://github.com/takagiy/strcuta-py","last_synced_at":"2025-07-06T19:02:34.177Z","repository":{"id":57471720,"uuid":"245358785","full_name":"takagiy/strcuta-py","owner":"takagiy","description":"strc“uta” - Loading UTAU voice banks into the Python data structure","archived":false,"fork":false,"pushed_at":"2020-03-13T13:44:43.000Z","size":89,"stargazers_count":6,"open_issues_count":1,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-04-21T01:54:02.424Z","etag":null,"topics":["json","python","singing-synthesis","singing-voice","speech-synthesis","utau","utauplugin","voice-bank","voice-synthesis"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsl-1.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/takagiy.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE_1_0.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-03-06T07:44:02.000Z","updated_at":"2023-03-12T06:20:31.000Z","dependencies_parsed_at":"2022-08-30T13:50:52.320Z","dependency_job_id":null,"html_url":"https://github.com/takagiy/strcuta-py","commit_stats":null,"previous_names":[],"tags_count":14,"template":false,"template_full_name":null,"purl":"pkg:github/takagiy/strcuta-py","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/takagiy%2Fstrcuta-py","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/takagiy%2Fstrcuta-py/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/takagiy%2Fstrcuta-py/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/takagiy%2Fstrcuta-py/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/takagiy","download_url":"https://codeload.github.com/takagiy/strcuta-py/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/takagiy%2Fstrcuta-py/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":260507007,"owners_count":23019454,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["json","python","singing-synthesis","singing-voice","speech-synthesis","utau","utauplugin","voice-bank","voice-synthesis"],"created_at":"2025-06-18T07:05:46.352Z","updated_at":"2025-07-06T19:02:34.170Z","avatar_url":"https://github.com/takagiy.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003c!-- Copyright (C) Yuki Takagi 2020 --\u003e\n\u003c!-- Distributed under the Boost Software License, Version 1.0. --\u003e\n\u003c!-- (See accompanying file LICENSE_1_0.txt or copy at --\u003e\n\u003c!-- https://www.boost.org/LICENSE_1_0.txt) --\u003e\n\n# strcuta - Loading UTAU voice banks into the Python data structure [![PyPI](https://img.shields.io/pypi/v/strcuta)](https://pypi.org/project/strcuta) [![Github repository](https://img.shields.io/badge/github-repo-green)](https://github.com/takagiy/strcuta-py) [![Release history](https://img.shields.io/badge/pypi-look%20for%20early%20releases-orange)](https://pypi.org/project/strcuta/#history) [![License](https://img.shields.io/pypi/l/strcuta)](https://github.com/takagiy/strcuta-py/blob/master/LICENSE_1_0.txt)\n\n## Little example\n\n```python\nfrom strcuta import voicebank\n\n# Load the voice bank \"Yamine Renri VCV ver.1.5\" (Thanks to the owner :D).\nrenri = voicebank.load(\"../闇音レンリ・連続音Ver1.5\")\n\n# Resolve the spell (u-ta) and the pitch (F#5) into the voice as a wave data in\n# accordance with the \"oto.ini\"s and the \"prefix.map\".\nuta = renri.voice(\"u た\", \"F#5\")\n\n# Save the data with the WAVE format.\nuta.write(\"uta_fs5.wav\")\n\n# Cut the specific segment of the voice and then save it.\n# \"Overlap\"\nuta.ovl().write(\"uta_ovl.wav\")\n# \"Preutterance\"\nuta.pre().write(\"uta_pre.wav\")\n# \"Consonant\". con() or fixed()\nuta.con().write(\"uta_vc-.wav\")\n# \"Vowel\". vow() or stretchable()\nuta.vow().write(\"uta_-v.wav\")\n# Except for the preutterance\nuta.intime().write(\"uta_intime.wav\")\n\n# Also play voices with the \"sounddevice\" package. (This is an optional\n# feature. Install the \"strcuta[play]\" instead of the \"strcuta\" to install the\n# \"sounddevice\" together.)\nuta.play()\nuta.con().play() \n```\n\nCurrently, `strcuta` can load -\n  * `*.wav`\n  * `*.frq`\n  * `oto.ini`\n  * `prefix.map`.\n\nYou can find the early releases in the [release history](https://pypi.org/project/strcuta/#history).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftakagiy%2Fstrcuta-py","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftakagiy%2Fstrcuta-py","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftakagiy%2Fstrcuta-py/lists"}