{"id":33325058,"url":"https://github.com/supertone-inc/supertonic","last_synced_at":"2025-11-24T11:01:17.147Z","repository":{"id":324886133,"uuid":"1098852899","full_name":"supertone-inc/supertonic","owner":"supertone-inc","description":"Lightning-fast, on-device TTS — running natively via ONNX.","archived":false,"fork":false,"pushed_at":"2025-11-18T11:15:05.000Z","size":282,"stargazers_count":15,"open_issues_count":1,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-11-18T13:19:41.824Z","etag":null,"topics":["cpp","csharp","go","ios","java","lightweight","nodejs","on-device","python","rust","swift","text-to-speech","tt","tts","web"],"latest_commit_sha":null,"homepage":"https://huggingface.co/spaces/Supertone/supertonic","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/supertone-inc.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-11-18T08:23:58.000Z","updated_at":"2025-11-18T13:07:53.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/supertone-inc/supertonic","commit_stats":null,"previous_names":["supertone-inc/supertonic"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/supertone-inc/supertonic","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/supertone-inc%2Fsupertonic","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/supertone-inc%2Fsupertonic/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/supertone-inc%2Fsupertonic/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/supertone-inc%2Fsupertonic/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/supertone-inc","download_url":"https://codeload.github.com/supertone-inc/supertonic/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/supertone-inc%2Fsupertonic/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":285762950,"owners_count":27227464,"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","status":"online","status_checked_at":"2025-11-22T02:00:05.934Z","response_time":64,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["cpp","csharp","go","ios","java","lightweight","nodejs","on-device","python","rust","swift","text-to-speech","tt","tts","web"],"created_at":"2025-11-20T07:00:17.681Z","updated_at":"2025-11-24T11:01:17.140Z","avatar_url":"https://github.com/supertone-inc.png","language":"JavaScript","funding_links":[],"categories":["Repos","cpp","AI开源项目","Colab Notebooks","人工智能","📱 Mobile Development"],"sub_categories":["AI 工具","Supertonic TTS","语音合成"],"readme":"# Supertonic — Lightning Fast, On-Device TTS\n\n[![Demo](https://img.shields.io/badge/🤗%20Hugging%20Face-Demo-yellow)](https://huggingface.co/spaces/Supertone/supertonic#interactive-demo)\n[![Models](https://img.shields.io/badge/🤗%20Hugging%20Face-Models-blue)](https://huggingface.co/Supertone/supertonic)\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"img/Supertonic_IMG_v02_4x.webp\" alt=\"Supertonic Banner\"\u003e\n\u003c/p\u003e\n\n**Supertonic** is a lightning-fast, on-device text-to-speech system designed for **extreme performance** with minimal computational overhead. Powered by ONNX Runtime, it runs entirely on your device—no cloud, no API calls, no privacy concerns.\n\n\u003e 🎧 **Try it now**: Experience Supertonic in your browser with our [**Interactive Demo**](https://huggingface.co/spaces/Supertone/supertonic#interactive-demo), or get started with pre-trained models from [**Hugging Face Hub**](https://huggingface.co/Supertone/supertonic)\n\n### Table of Contents\n\n- [Why Supertonic?](#why-supertonic)\n- [See it in Action](#see-it-in-action)\n- [Language Support](#language-support)\n- [Getting Started](#getting-started)\n- [Performance](#performance)\n- [Citation](#citation)\n- [License](#license)\n\n## Why Supertonic?\n\n- **⚡ Blazingly Fast**: Generates speech up to **167× faster than real-time** on consumer hardware (M4 Pro)—unmatched by any other TTS system\n- **🪶 Ultra Lightweight**: Only **66M parameters**, optimized for efficient on-device performance with minimal footprint\n- **📱 On-Device Capable**: **Complete privacy** and **zero latency**—all processing happens locally on your device\n- **🎨 Natural Text Handling**: Seamlessly processes numbers, dates, currency, abbreviations, and complex expressions without pre-processing\n- **⚙️ Highly Configurable**: Adjust inference steps, batch processing, and other parameters to match your specific needs\n- **🧩 Flexible Deployment**: Deploy seamlessly across servers, browsers, and edge devices with multiple runtime backends.\n\n## See it in Action\n\nWatch Supertonic running on a **Raspberry Pi**—demonstrating on-device, real-time text-to-speech synthesis:\n\nhttps://github.com/user-attachments/assets/ea66f6d6-7bc5-4308-8a88-1ce3e07400d2\n\n## Language Support\n\nWe provide ready-to-use TTS inference examples across multiple ecosystems:\n\n| Language/Platform | Path | Description |\n|-------------------|------|-------------|\n| [**Python**](py/) | `py/` | ONNX Runtime inference |\n| [**Node.js**](nodejs/) | `nodejs/` | Server-side JavaScript |\n| [**Browser**](web/) | `web/` | WebGPU/WASM inference |\n| [**Java**](java/) | `java/` | Cross-platform JVM |\n| [**C++**](cpp/) | `cpp/` | High-performance C++ |\n| [**C#**](csharp/) | `csharp/` | .NET ecosystem |\n| [**Go**](go/) | `go/` | Go implementation |\n| [**Swift**](swift/) | `swift/` | macOS applications |\n| [**iOS**](ios/) | `ios/` | Native iOS apps |\n| [**Rust**](rust/) | `rust/` | Memory-safe systems |\n\n\u003e For detailed usage instructions, please refer to the README.md in each language directory.\n\n## Getting Started\n\nFirst, clone the repository:\n\n```bash\ngit clone https://github.com/supertone-inc/supertonic.git\ncd supertonic\n```\n\n### Prerequisites\n\nBefore running the examples, download the ONNX models and preset voices, and place them in the `assets` directory:\n\n\u003e **Note:** The Hugging Face repository uses Git LFS. Please ensure Git LFS is installed and initialized before cloning or pulling large model files.\n\u003e - macOS: `brew install git-lfs \u0026\u0026 git lfs install`\n\u003e - Generic: see `https://git-lfs.com` for installers\n\n```bash\ngit clone https://huggingface.co/Supertone/supertonic assets\n```\n\n### Quick Start\n\n**Python Example** ([Details](py/))\n```bash\ncd py\nuv sync\nuv run example_onnx.py\n```\n\n**Node.js Example** ([Details](nodejs/))\n```bash\ncd nodejs\nnpm install\nnpm start\n```\n\n**Browser Example** ([Details](web/))\n```bash\ncd web\nnpm install\nnpm run dev\n```\n\n**Java Example** ([Details](java/))\n```bash\ncd java\nmvn clean install\nmvn exec:java\n```\n\n**C++ Example** ([Details](cpp/))\n```bash\ncd cpp\nmkdir build \u0026\u0026 cd build\ncmake .. \u0026\u0026 cmake --build . --config Release\n./example_onnx\n```\n\n**C# Example** ([Details](csharp/))\n```bash\ncd csharp\ndotnet restore\ndotnet run\n```\n\n**Go Example** ([Details](go/))\n```bash\ncd go\ngo mod download\ngo run example_onnx.go helper.go\n```\n\n**Swift Example** ([Details](swift/))\n```bash\ncd swift\nswift build -c release\n.build/release/example_onnx\n```\n\n**Rust Example** ([Details](rust/))\n```bash\ncd rust\ncargo build --release\n./target/release/example_onnx\n```\n\n**iOS Example** ([Details](ios/))\n```bash\ncd ios/ExampleiOSApp\nxcodegen generate\nopen ExampleiOSApp.xcodeproj\n```\n- In Xcode: Targets → ExampleiOSApp → Signing: select your Team\n- Choose your iPhone as run destination → Build \u0026 Run\n\n\n### Technical Details\n\n- **Runtime**: ONNX Runtime for cross-platform inference (CPU-optimized; GPU mode is not tested)\n- **Browser Support**: onnxruntime-web for client-side inference\n- **Batch Processing**: Supports batch inference for improved throughput\n- **Audio Output**: Outputs 16-bit WAV files\n\n## Performance\n\nWe evaluated Supertonic's performance (with 2 inference steps) using two key metrics across input texts of varying lengths: Short (59 chars), Mid (152 chars), and Long (266 chars).\n\n**Metrics:**\n- **Characters per Second**: Measures throughput by dividing the number of input characters by the time required to generate audio. Higher is better.\n- **Real-time Factor (RTF)**: Measures the time taken to synthesize audio relative to its duration. Lower is better (e.g., RTF of 0.1 means it takes 0.1 seconds to generate one second of audio).\n\n### Characters per Second\n| System | Short (59 chars) | Mid (152 chars) | Long (266 chars) |\n|--------|-----------------|----------------|-----------------|\n| **Supertonic** (M4 pro - CPU) | 912 | 1048 | 1263 |\n| **Supertonic** (M4 pro - WebGPU) | 996 | 1801 | 2509 |\n| **Supertonic** (RTX4090) | 2615 | 6548 | 12164 |\n| `API` [ElevenLabs Flash v2.5](https://elevenlabs.io/docs/api-reference/text-to-speech/convert) | 144 | 209 | 287 |\n| `API` [OpenAI TTS-1](https://platform.openai.com/docs/guides/text-to-speech) | 37 | 55 | 82 |\n| `API` [Gemini 2.5 Flash TTS](https://ai.google.dev/gemini-api/docs/speech-generation) | 12 | 18 | 24 |\n| `API` [Supertone Sona speech 1](https://docs.supertoneapi.com/en/api-reference/endpoints/text-to-speech) | 38 | 64 | 92 |\n| `Open` [Kokoro](https://github.com/hexgrad/kokoro/) | 104 | 107 | 117 |\n| `Open` [NeuTTS Air](https://github.com/neuphonic/neutts-air) | 37 | 42 | 47 |\n\n\u003e **Notes:**  \n\u003e `API` = Cloud-based API services (measured from Seoul)  \n\u003e `Open` = Open-source models  \n\u003e Supertonic (M4 pro - CPU) and (M4 pro - WebGPU): Tested with ONNX  \n\u003e Supertonic (RTX4090): Tested with PyTorch model  \n\u003e Kokoro: Tested on M4 Pro CPU with ONNX  \n\u003e NeuTTS Air: Tested on M4 Pro CPU with Q8-GGUF\n\n### Real-time Factor\n\n| System | Short (59 chars) | Mid (152 chars) | Long (266 chars) |\n|--------|-----------------|----------------|-----------------|\n| **Supertonic** (M4 pro - CPU) | 0.015 | 0.013 | 0.012 |\n| **Supertonic** (M4 pro - WebGPU) | 0.014 | 0.007 | 0.006 |\n| **Supertonic** (RTX4090) | 0.005 | 0.002 | 0.001 |\n| `API` [ElevenLabs Flash v2.5](https://elevenlabs.io/docs/api-reference/text-to-speech/convert) | 0.133 | 0.077 | 0.057 |\n| `API` [OpenAI TTS-1](https://platform.openai.com/docs/guides/text-to-speech) | 0.471 | 0.302 | 0.201 |\n| `API` [Gemini 2.5 Flash TTS](https://ai.google.dev/gemini-api/docs/speech-generation) | 1.060 | 0.673 | 0.541 |\n| `API` [Supertone Sona speech 1](https://docs.supertoneapi.com/en/api-reference/endpoints/text-to-speech) | 0.372 | 0.206 | 0.163 |\n| `Open` [Kokoro](https://github.com/hexgrad/kokoro/) | 0.144 | 0.124 | 0.126 |\n| `Open` [NeuTTS Air](https://github.com/neuphonic/neutts-air) | 0.390 | 0.338 | 0.343 |\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eAdditional Performance Data (5-step inference)\u003c/b\u003e\u003c/summary\u003e\n\n\u003cbr\u003e\n\n**Characters per Second (5-step)**\n\n| System | Short (59 chars) | Mid (152 chars) | Long (266 chars) |\n|--------|-----------------|----------------|-----------------|\n| **Supertonic** (M4 pro - CPU) | 596 | 691 | 850 |\n| **Supertonic** (M4 pro - WebGPU) | 570 | 1118 | 1546 |\n| **Supertonic** (RTX4090) | 1286 | 3757 | 6242 |\n\n**Real-time Factor (5-step)**\n\n| System | Short (59 chars) | Mid (152 chars) | Long (266 chars) |\n|--------|-----------------|----------------|-----------------|\n| **Supertonic** (M4 pro - CPU) | 0.023 | 0.019 | 0.018 |\n| **Supertonic** (M4 pro - WebGPU) | 0.024 | 0.012 | 0.010 |\n| **Supertonic** (RTX4090) | 0.011 | 0.004 | 0.002 |\n\n\u003c/details\u003e\n\n### Natural Text Handling\n\nSupertonic is designed to handle complex, real-world text inputs that contain numbers, currency symbols, abbreviations, dates, and proper nouns.\n\n\u003e 🎧 **View audio samples more easily**: Check out our [**Interactive Demo**](https://huggingface.co/spaces/Supertone/supertonic#text-handling) for a better viewing experience of all audio examples\n\n**Overview of Test Cases:**\n\n| Category | Key Challenges | Supertonic | ElevenLabs | OpenAI | Gemini |\n|:--------:|:--------------:|:----------:|:----------:|:------:|:------:|\n| Financial Expression | Decimal currency, abbreviated magnitudes (M, K), currency symbols, currency codes | ✅ | ❌ | ❌ | ❌ |\n| Time and Date | Time notation, abbreviated weekdays/months, date formats | ✅ | ❌ | ❌ | ❌ |\n| Phone Number | Area codes, hyphens, extensions (ext.) | ✅ | ❌ | ❌ | ❌ |\n| Technical Unit | Decimal numbers with units, abbreviated technical notations | ✅ | ❌ | ❌ | ❌ |\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eExample 1: Financial Expression\u003c/b\u003e\u003c/summary\u003e\n\n\u003cbr\u003e\n\n**Text:**\n\u003e \"The startup secured **$5.2M** in venture capital, a huge leap from their initial **$450K** seed round.\"\n\n**Challenges:**\n- Decimal point in currency ($5.2M should be read as \"five point two million\")\n- Abbreviated magnitude units (M for million, K for thousand)\n- Currency symbol ($) that needs to be properly pronounced as \"dollars\"\n\n**Audio Samples:**\n\n| System | Result | Audio Sample |\n|--------|--------|--------------|\n| **Supertonic** | ✅ | [🎧 Play Audio](https://drive.google.com/file/d/1eancUOhiSXCVoTu9ddh4S-OcVQaWrPV-/view?usp=sharing) |\n| ElevenLabs Flash v2.5 | ❌ | [🎧 Play Audio](https://drive.google.com/file/d/1-r2scv7XQ1crIDu6QOh3eqVl445W6ap_/view?usp=sharing) |\n| OpenAI TTS-1 | ❌ | [🎧 Play Audio](https://drive.google.com/file/d/1MFDXMjfmsAVOqwPx7iveS0KUJtZvcwxB/view?usp=sharing) |\n| Gemini 2.5 Flash TTS | ❌ | [🎧 Play Audio](https://drive.google.com/file/d/1dEHpNzfMUucFTJPQK0k4RcFZvPwQTt09/view?usp=sharing) |\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eExample 2: Time and Date\u003c/b\u003e\u003c/summary\u003e\n\n\u003cbr\u003e\n\n**Text:**\n\u003e \"The train delay was announced at **4:45 PM** on **Wed, Apr 3, 2024** due to track maintenance.\"\n\n**Challenges:**\n- Time expression with PM notation (4:45 PM)\n- Abbreviated weekday (Wed)\n- Abbreviated month (Apr)\n- Full date format (Apr 3, 2024)\n\n**Audio Samples:**\n\n| System | Result | Audio Sample |\n|--------|--------|--------------|\n| **Supertonic** | ✅ | [🎧 Play Audio](https://drive.google.com/file/d/1ehkZU8eiizBenG2DgR5tzBGQBvHS0Uaj/view?usp=sharing) |\n| ElevenLabs Flash v2.5 | ❌ | [🎧 Play Audio](https://drive.google.com/file/d/1ta3r6jFyebmA-sT44l8EaEQcMLVmuOEr/view?usp=sharing) |\n| OpenAI TTS-1 | ❌ | [🎧 Play Audio](https://drive.google.com/file/d/1sskmem9AzHAQ3Hv8DRSZoqX_pye-CXuU/view?usp=sharing) |\n| Gemini 2.5 Flash TTS | ❌ | [🎧 Play Audio](https://drive.google.com/file/d/1zx9X8oMsLMXW0Zx_SURoqjju-By2yh_n/view?usp=sharing) |\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eExample 3: Phone Number\u003c/b\u003e\u003c/summary\u003e\n\n\u003cbr\u003e\n\n**Text:**\n\u003e \"You can reach the hotel front desk at **(212) 555-0142 ext. 402** anytime.\"\n\n**Challenges:**\n- Area code in parentheses that should be read as separate digits\n- Phone number with hyphen separator (555-0142)\n- Abbreviated extension notation (ext.)\n- Extension number (402)\n\n**Audio Samples:**\n\n| System | Result | Audio Sample |\n|--------|--------|--------------|\n| **Supertonic** | ✅ | [🎧 Play Audio](https://drive.google.com/file/d/1z-e5iTsihryMR8ll1-N1YXkB2CIJYJ6F/view?usp=sharing) |\n| ElevenLabs Flash v2.5 | ❌ | [🎧 Play Audio](https://drive.google.com/file/d/1HAzVXFTZfZm0VEK2laSpsMTxzufcuaxA/view?usp=sharing) |\n| OpenAI TTS-1 | ❌ | [🎧 Play Audio](https://drive.google.com/file/d/15tjfAmb3GbjP_kmvD7zSdIWkhtAaCPOg/view?usp=sharing) |\n| Gemini 2.5 Flash TTS | ❌ | [🎧 Play Audio](https://drive.google.com/file/d/1BCL8n7yligUZyso970ud7Gf5NWb1OhKD/view?usp=sharing) |\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eExample 4: Technical Unit\u003c/b\u003e\u003c/summary\u003e\n\n\u003cbr\u003e\n\n**Text:**\n\u003e \"Our drone battery lasts **2.3h** when flying at **30kph** with full camera payload.\"\n\n**Challenges:**\n- Decimal time duration with abbreviation (2.3h = two point three hours)\n- Speed unit with abbreviation (30kph = thirty kilometers per hour)\n- Technical abbreviations (h for hours, kph for kilometers per hour)\n- Technical/engineering context requiring proper pronunciation\n\n**Audio Samples:**\n\n| System | Result | Audio Sample |\n|--------|--------|--------------|\n| **Supertonic** | ✅ | [🎧 Play Audio](https://drive.google.com/file/d/1kvOBvswFkLfmr8hGplH0V2XiMxy1shYf/view?usp=sharing) |\n| ElevenLabs Flash v2.5 | ❌ | [🎧 Play Audio](https://drive.google.com/file/d/1_SzfjWJe5YEd0t3R7DztkYhHcI_av48p/view?usp=sharing) |\n| OpenAI TTS-1 | ❌ | [🎧 Play Audio](https://drive.google.com/file/d/1P5BSilj5xFPTV2Xz6yW5jitKZohO9o-6/view?usp=sharing) |\n| Gemini 2.5 Flash TTS | ❌ | [🎧 Play Audio](https://drive.google.com/file/d/1GU82SnWC50OvC8CZNjhxvNZFKQb7I9_Y/view?usp=sharing) |\n\n\u003c/details\u003e\n\n\u003e **Note:** These samples demonstrate how each system handles text normalization and pronunciation of complex expressions **without requiring pre-processing or phonetic annotations**.\n\n## Citation\n\nThe following papers describe the core technologies used in Supertonic. If you use this system in your research or find these techniques useful, please consider citing the relevant papers:\n\n### SupertonicTTS: Main Architecture\n\nThis paper introduces the overall architecture of SupertonicTTS, including the speech autoencoder, flow-matching based text-to-latent module, and efficient design choices.\n\n```bibtex\n@article{kim2025supertonic,\n  title={SupertonicTTS: Towards Highly Efficient and Streamlined Text-to-Speech System},\n  author={Kim, Hyeongju and Yang, Jinhyeok and Yu, Yechan and Ji, Seunghun and Morton, Jacob and Bous, Frederik and Byun, Joon and Lee, Juheon},\n  journal={arXiv preprint arXiv:2503.23108},\n  year={2025},\n  url={https://arxiv.org/abs/2503.23108}\n}\n```\n\n### Length-Aware RoPE: Text-Speech Alignment\n\nThis paper presents Length-Aware Rotary Position Embedding (LARoPE), which improves text-speech alignment in cross-attention mechanisms.\n\n```bibtex\n@article{kim2025larope,\n  title={Length-Aware Rotary Position Embedding for Text-Speech Alignment},\n  author={Kim, Hyeongju and Lee, Juheon and Yang, Jinhyeok and Morton, Jacob},\n  journal={arXiv preprint arXiv:2509.11084},\n  year={2025},\n  url={https://arxiv.org/abs/2509.11084}\n}\n```\n\n### Self-Purifying Flow Matching: Training with Noisy Labels\n\nThis paper describes the self-purification technique for training flow matching models robustly with noisy or unreliable labels.\n\n```bibtex\n@article{kim2025spfm,\n  title={Training Flow Matching Models with Reliable Labels via Self-Purification},\n  author={Kim, Hyeongju and Yu, Yechan and Yi, June Young and Lee, Juheon},\n  journal={arXiv preprint arXiv:2509.19091},\n  year={2025},\n  url={https://arxiv.org/abs/2509.19091}\n}\n```\n\n## License\n\nThis project’s sample code is released under the MIT License. - see the [LICENSE](https://github.com/supertone-inc/supertonic?tab=MIT-1-ov-file) for details.\n\nThe accompanying model is released under the OpenRAIL-M License. - see the [LICENSE](https://huggingface.co/Supertone/supertonic/blob/main/LICENSE) file for details.\n\nThis model was trained using PyTorch, which is licensed under the BSD 3-Clause License but is not redistributed with this project. - see the [LICENSE](https://docs.pytorch.org/FBGEMM/general/License.html) for details.\n\nCopyright (c) 2025 Supertone Inc.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsupertone-inc%2Fsupertonic","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsupertone-inc%2Fsupertonic","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsupertone-inc%2Fsupertonic/lists"}