Text-to-Speech
Transformers
Safetensors
rumik_oss
text-generation
tts
indic
expressive
mimi
speech
custom_code
Instructions to use arvindcodex11/MYRA-oss-1 with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use arvindcodex11/MYRA-oss-1 with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("text-to-speech", model="arvindcodex11/MYRA-oss-1", trust_remote_code=True)# pip install -U transformers accelerate # Load model directly from transformers import AutoModelForCausalLM model = AutoModelForCausalLM.from_pretrained("arvindcodex11/MYRA-oss-1", trust_remote_code=True, device_map="auto") - Notebooks
- Google Colab
- Kaggle
Upload folder using huggingface_hub
Browse filesThis view is limited to 50 files because it contains too many changes. See raw diff
- .gitattributes +28 -0
- LICENSE +430 -0
- NOTICE +53 -0
- README.md +389 -1
- assets/architecture.png +3 -0
- assets/cer-full.png +3 -0
- assets/cer-full.svg +481 -0
- assets/cer-selected.png +3 -0
- assets/cer-selected.svg +240 -0
- assets/favicon.jpg +0 -0
- assets/indicemo-by-delivery.png +3 -0
- assets/indicemo-by-delivery.svg +459 -0
- assets/indicemo-overall.png +3 -0
- assets/indicemo-overall.svg +209 -0
- assets/nova-detector-breakdown.png +3 -0
- assets/nova-results.png +3 -0
- assets/nova-results.svg +249 -0
- assets/rumik-capabilities.png +3 -0
- assets/rumik-logo.png +3 -0
- assets/wer-full.png +3 -0
- assets/wer-full.svg +481 -0
- assets/wer-selected.png +3 -0
- assets/wer-selected.svg +240 -0
- benchmarks/cer-methodology.md +3 -0
- benchmarks/cer-reported-scores.json +212 -0
- benchmarks/evaluation.md +59 -0
- benchmarks/wer-reported-scores.json +311 -0
- codec/config.json +52 -0
- codec/model.safetensors +3 -0
- codec/preprocessor_config.json +10 -0
- config.json +98 -0
- configuration_rumik_oss.py +55 -0
- generation_config.json +7 -0
- model-00001-of-00002.safetensors +3 -0
- model-00002-of-00002.safetensors +3 -0
- model.safetensors.index.json +304 -0
- modeling_rumik_oss.py +161 -0
- requirements-server.txt +5 -0
- requirements.txt +7 -0
- samples/aisha.wav +3 -0
- samples/ira-professional-steady.wav +3 -0
- samples/ira-sad-slow.wav +3 -0
- samples/ira.wav +3 -0
- samples/showcase/01-the-second-cup.wav +3 -0
- samples/showcase/02-one-last-message.wav +3 -0
- samples/showcase/03-we-made-it.wav +3 -0
- samples/showcase/04-a-broken-promise.wav +3 -0
- samples/showcase/05-ready-for-departure.wav +3 -0
- samples/showcase/06-home-again.wav +3 -0
- samples/showcase/07-a-place-to-read.wav +3 -0
.gitattributes
CHANGED
|
@@ -33,3 +33,31 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
|
|
| 33 |
*.zip filter=lfs diff=lfs merge=lfs -text
|
| 34 |
*.zst filter=lfs diff=lfs merge=lfs -text
|
| 35 |
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 33 |
*.zip filter=lfs diff=lfs merge=lfs -text
|
| 34 |
*.zst filter=lfs diff=lfs merge=lfs -text
|
| 35 |
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
| 36 |
+
assets/architecture.png filter=lfs diff=lfs merge=lfs -text
|
| 37 |
+
assets/indicemo-overall.png filter=lfs diff=lfs merge=lfs -text
|
| 38 |
+
assets/indicemo-by-delivery.png filter=lfs diff=lfs merge=lfs -text
|
| 39 |
+
assets/nova-results.png filter=lfs diff=lfs merge=lfs -text
|
| 40 |
+
samples/ira-professional-steady.wav filter=lfs diff=lfs merge=lfs -text
|
| 41 |
+
samples/ira-sad-slow.wav filter=lfs diff=lfs merge=lfs -text
|
| 42 |
+
samples/ira.wav filter=lfs diff=lfs merge=lfs -text
|
| 43 |
+
samples/aisha.wav filter=lfs diff=lfs merge=lfs -text
|
| 44 |
+
samples/siya.wav filter=lfs diff=lfs merge=lfs -text
|
| 45 |
+
samples/zoya.wav filter=lfs diff=lfs merge=lfs -text
|
| 46 |
+
assets/nova-detector-breakdown.png filter=lfs diff=lfs merge=lfs -text
|
| 47 |
+
assets/rumik-capabilities.png filter=lfs diff=lfs merge=lfs -text
|
| 48 |
+
assets/cer-selected.png filter=lfs diff=lfs merge=lfs -text
|
| 49 |
+
assets/cer-full.png filter=lfs diff=lfs merge=lfs -text
|
| 50 |
+
samples/showcase/01-the-second-cup.wav filter=lfs diff=lfs merge=lfs -text
|
| 51 |
+
samples/showcase/02-one-last-message.wav filter=lfs diff=lfs merge=lfs -text
|
| 52 |
+
samples/showcase/03-we-made-it.wav filter=lfs diff=lfs merge=lfs -text
|
| 53 |
+
samples/showcase/04-a-broken-promise.wav filter=lfs diff=lfs merge=lfs -text
|
| 54 |
+
samples/showcase/05-ready-for-departure.wav filter=lfs diff=lfs merge=lfs -text
|
| 55 |
+
samples/showcase/06-home-again.wav filter=lfs diff=lfs merge=lfs -text
|
| 56 |
+
samples/showcase/07-a-place-to-read.wav filter=lfs diff=lfs merge=lfs -text
|
| 57 |
+
samples/showcase/08-the-acceptance-letter.wav filter=lfs diff=lfs merge=lfs -text
|
| 58 |
+
samples/showcase/09-a-small-celebration.wav filter=lfs diff=lfs merge=lfs -text
|
| 59 |
+
samples/showcase/10-the-demo-is-ready.wav filter=lfs diff=lfs merge=lfs -text
|
| 60 |
+
tokenizer.json filter=lfs diff=lfs merge=lfs -text
|
| 61 |
+
assets/wer-selected.png filter=lfs diff=lfs merge=lfs -text
|
| 62 |
+
assets/wer-full.png filter=lfs diff=lfs merge=lfs -text
|
| 63 |
+
assets/rumik-logo.png filter=lfs diff=lfs merge=lfs -text
|
LICENSE
ADDED
|
@@ -0,0 +1,430 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
rumik-oss 1
|
| 2 |
+
Copyright 2026 Rumik AI
|
| 3 |
+
|
| 4 |
+
rumik-oss 1 is a derivative of CohereLabs/tiny-aya-fire and is released under
|
| 5 |
+
the Creative Commons Attribution-NonCommercial 4.0 International license
|
| 6 |
+
(CC-BY-NC 4.0), together with the Cohere Labs acceptable-use addendum that
|
| 7 |
+
governs the upstream model.
|
| 8 |
+
|
| 9 |
+
License ......... https://cohere.com/cohere-labs-cc-by-nc-license
|
| 10 |
+
Acceptable use .. https://docs.cohere.com/docs/cohere-labs-acceptable-use-policy
|
| 11 |
+
|
| 12 |
+
Use of this model is permitted for research and other non-commercial purposes
|
| 13 |
+
only, and must comply with the Cohere Labs Acceptable Use Policy in addition
|
| 14 |
+
to the terms below. Redistribution must retain this notice, the license link,
|
| 15 |
+
upstream notices, and an indication of any modifications made (see NOTICE).
|
| 16 |
+
|
| 17 |
+
The Mimi codec in codec/ is licensed separately by Kyutai under CC-BY-4.0
|
| 18 |
+
(https://creativecommons.org/licenses/by/4.0/). That permission applies to the
|
| 19 |
+
codec only, not to the tiny-aya-derived TTS weights.
|
| 20 |
+
|
| 21 |
+
=======================================================================
|
| 22 |
+
|
| 23 |
+
Attribution-NonCommercial 4.0 International
|
| 24 |
+
|
| 25 |
+
=======================================================================
|
| 26 |
+
|
| 27 |
+
Creative Commons Corporation ("Creative Commons") is not a law firm and
|
| 28 |
+
does not provide legal services or legal advice. Distribution of
|
| 29 |
+
Creative Commons public licenses does not create a lawyer-client or
|
| 30 |
+
other relationship. Creative Commons makes its licenses and related
|
| 31 |
+
information available on an "as-is" basis. Creative Commons gives no
|
| 32 |
+
warranties regarding its licenses, any material licensed under their
|
| 33 |
+
terms and conditions, or any related information. Creative Commons
|
| 34 |
+
disclaims all liability for damages resulting from their use to the
|
| 35 |
+
fullest extent possible.
|
| 36 |
+
|
| 37 |
+
Using Creative Commons Public Licenses
|
| 38 |
+
|
| 39 |
+
Creative Commons public licenses provide a standard set of terms and
|
| 40 |
+
conditions that creators and other rights holders may use to share
|
| 41 |
+
original works of authorship and other material subject to copyright
|
| 42 |
+
and certain other rights specified in the public license below. The
|
| 43 |
+
following considerations are for informational purposes only, are not
|
| 44 |
+
exhaustive, and do not form part of our licenses.
|
| 45 |
+
|
| 46 |
+
Considerations for licensors: Our public licenses are
|
| 47 |
+
intended for use by those authorized to give the public
|
| 48 |
+
permission to use material in ways otherwise restricted by
|
| 49 |
+
copyright and certain other rights. Our licenses are
|
| 50 |
+
irrevocable. Licensors should read and understand the terms
|
| 51 |
+
and conditions of the license they choose before applying it.
|
| 52 |
+
Licensors should also secure all rights necessary before
|
| 53 |
+
applying our licenses so that the public can reuse the
|
| 54 |
+
material as expected. Licensors should clearly mark any
|
| 55 |
+
material not subject to the license. This includes other CC-
|
| 56 |
+
licensed material, or material used under an exception or
|
| 57 |
+
limitation to copyright. More considerations for licensors:
|
| 58 |
+
wiki.creativecommons.org/Considerations_for_licensors
|
| 59 |
+
|
| 60 |
+
Considerations for the public: By using one of our public
|
| 61 |
+
licenses, a licensor grants the public permission to use the
|
| 62 |
+
licensed material under specified terms and conditions. If
|
| 63 |
+
the licensor's permission is not necessary for any reason--for
|
| 64 |
+
example, because of any applicable exception or limitation to
|
| 65 |
+
copyright--then that use is not regulated by the license. Our
|
| 66 |
+
licenses grant only permissions under copyright and certain
|
| 67 |
+
other rights that a licensor has authority to grant. Use of
|
| 68 |
+
the licensed material may still be restricted for other
|
| 69 |
+
reasons, including because others have copyright or other
|
| 70 |
+
rights in the material. A licensor may make special requests,
|
| 71 |
+
such as asking that all changes be marked or described.
|
| 72 |
+
Although not required by our licenses, you are encouraged to
|
| 73 |
+
respect those requests where reasonable. More considerations
|
| 74 |
+
for the public:
|
| 75 |
+
wiki.creativecommons.org/Considerations_for_licensees
|
| 76 |
+
|
| 77 |
+
=======================================================================
|
| 78 |
+
|
| 79 |
+
Creative Commons Attribution-NonCommercial 4.0 International Public
|
| 80 |
+
License
|
| 81 |
+
|
| 82 |
+
By exercising the Licensed Rights (defined below), You accept and agree
|
| 83 |
+
to be bound by the terms and conditions of this Creative Commons
|
| 84 |
+
Attribution-NonCommercial 4.0 International Public License ("Public
|
| 85 |
+
License"). To the extent this Public License may be interpreted as a
|
| 86 |
+
contract, You are granted the Licensed Rights in consideration of Your
|
| 87 |
+
acceptance of these terms and conditions, and the Licensor grants You
|
| 88 |
+
such rights in consideration of benefits the Licensor receives from
|
| 89 |
+
making the Licensed Material available under these terms and
|
| 90 |
+
conditions.
|
| 91 |
+
|
| 92 |
+
|
| 93 |
+
Section 1 -- Definitions.
|
| 94 |
+
|
| 95 |
+
a. Adapted Material means material subject to Copyright and Similar
|
| 96 |
+
Rights that is derived from or based upon the Licensed Material
|
| 97 |
+
and in which the Licensed Material is translated, altered,
|
| 98 |
+
arranged, transformed, or otherwise modified in a manner requiring
|
| 99 |
+
permission under the Copyright and Similar Rights held by the
|
| 100 |
+
Licensor. For purposes of this Public License, where the Licensed
|
| 101 |
+
Material is a musical work, performance, or sound recording,
|
| 102 |
+
Adapted Material is always produced where the Licensed Material is
|
| 103 |
+
synched in timed relation with a moving image.
|
| 104 |
+
|
| 105 |
+
b. Adapter's License means the license You apply to Your Copyright
|
| 106 |
+
and Similar Rights in Your contributions to Adapted Material in
|
| 107 |
+
accordance with the terms and conditions of this Public License.
|
| 108 |
+
|
| 109 |
+
c. Copyright and Similar Rights means copyright and/or similar rights
|
| 110 |
+
closely related to copyright including, without limitation,
|
| 111 |
+
performance, broadcast, sound recording, and Sui Generis Database
|
| 112 |
+
Rights, without regard to how the rights are labeled or
|
| 113 |
+
categorized. For purposes of this Public License, the rights
|
| 114 |
+
specified in Section 2(b)(1)-(2) are not Copyright and Similar
|
| 115 |
+
Rights.
|
| 116 |
+
d. Effective Technological Measures means those measures that, in the
|
| 117 |
+
absence of proper authority, may not be circumvented under laws
|
| 118 |
+
fulfilling obligations under Article 11 of the WIPO Copyright
|
| 119 |
+
Treaty adopted on December 20, 1996, and/or similar international
|
| 120 |
+
agreements.
|
| 121 |
+
|
| 122 |
+
e. Exceptions and Limitations means fair use, fair dealing, and/or
|
| 123 |
+
any other exception or limitation to Copyright and Similar Rights
|
| 124 |
+
that applies to Your use of the Licensed Material.
|
| 125 |
+
|
| 126 |
+
f. Licensed Material means the artistic or literary work, database,
|
| 127 |
+
or other material to which the Licensor applied this Public
|
| 128 |
+
License.
|
| 129 |
+
|
| 130 |
+
g. Licensed Rights means the rights granted to You subject to the
|
| 131 |
+
terms and conditions of this Public License, which are limited to
|
| 132 |
+
all Copyright and Similar Rights that apply to Your use of the
|
| 133 |
+
Licensed Material and that the Licensor has authority to license.
|
| 134 |
+
|
| 135 |
+
h. Licensor means the individual(s) or entity(ies) granting rights
|
| 136 |
+
under this Public License.
|
| 137 |
+
|
| 138 |
+
i. NonCommercial means not primarily intended for or directed towards
|
| 139 |
+
commercial advantage or monetary compensation. For purposes of
|
| 140 |
+
this Public License, the exchange of the Licensed Material for
|
| 141 |
+
other material subject to Copyright and Similar Rights by digital
|
| 142 |
+
file-sharing or similar means is NonCommercial provided there is
|
| 143 |
+
no payment of monetary compensation in connection with the
|
| 144 |
+
exchange.
|
| 145 |
+
|
| 146 |
+
j. Share means to provide material to the public by any means or
|
| 147 |
+
process that requires permission under the Licensed Rights, such
|
| 148 |
+
as reproduction, public display, public performance, distribution,
|
| 149 |
+
dissemination, communication, or importation, and to make material
|
| 150 |
+
available to the public including in ways that members of the
|
| 151 |
+
public may access the material from a place and at a time
|
| 152 |
+
individually chosen by them.
|
| 153 |
+
|
| 154 |
+
k. Sui Generis Database Rights means rights other than copyright
|
| 155 |
+
resulting from Directive 96/9/EC of the European Parliament and of
|
| 156 |
+
the Council of 11 March 1996 on the legal protection of databases,
|
| 157 |
+
as amended and/or succeeded, as well as other essentially
|
| 158 |
+
equivalent rights anywhere in the world.
|
| 159 |
+
|
| 160 |
+
l. You means the individual or entity exercising the Licensed Rights
|
| 161 |
+
under this Public License. Your has a corresponding meaning.
|
| 162 |
+
|
| 163 |
+
|
| 164 |
+
Section 2 -- Scope.
|
| 165 |
+
|
| 166 |
+
a. License grant.
|
| 167 |
+
|
| 168 |
+
1. Subject to the terms and conditions of this Public License,
|
| 169 |
+
the Licensor hereby grants You a worldwide, royalty-free,
|
| 170 |
+
non-sublicensable, non-exclusive, irrevocable license to
|
| 171 |
+
exercise the Licensed Rights in the Licensed Material to:
|
| 172 |
+
|
| 173 |
+
a. reproduce and Share the Licensed Material, in whole or
|
| 174 |
+
in part, for NonCommercial purposes only; and
|
| 175 |
+
|
| 176 |
+
b. produce, reproduce, and Share Adapted Material for
|
| 177 |
+
NonCommercial purposes only.
|
| 178 |
+
|
| 179 |
+
2. Exceptions and Limitations. For the avoidance of doubt, where
|
| 180 |
+
Exceptions and Limitations apply to Your use, this Public
|
| 181 |
+
License does not apply, and You do not need to comply with
|
| 182 |
+
its terms and conditions.
|
| 183 |
+
|
| 184 |
+
3. Term. The term of this Public License is specified in Section
|
| 185 |
+
6(a).
|
| 186 |
+
|
| 187 |
+
4. Media and formats; technical modifications allowed. The
|
| 188 |
+
Licensor authorizes You to exercise the Licensed Rights in
|
| 189 |
+
all media and formats whether now known or hereafter created,
|
| 190 |
+
and to make technical modifications necessary to do so. The
|
| 191 |
+
Licensor waives and/or agrees not to assert any right or
|
| 192 |
+
authority to forbid You from making technical modifications
|
| 193 |
+
necessary to exercise the Licensed Rights, including
|
| 194 |
+
technical modifications necessary to circumvent Effective
|
| 195 |
+
Technological Measures. For purposes of this Public License,
|
| 196 |
+
simply making modifications authorized by this Section 2(a)
|
| 197 |
+
(4) never produces Adapted Material.
|
| 198 |
+
|
| 199 |
+
5. Downstream recipients.
|
| 200 |
+
|
| 201 |
+
a. Offer from the Licensor -- Licensed Material. Every
|
| 202 |
+
recipient of the Licensed Material automatically
|
| 203 |
+
receives an offer from the Licensor to exercise the
|
| 204 |
+
Licensed Rights under the terms and conditions of this
|
| 205 |
+
Public License.
|
| 206 |
+
|
| 207 |
+
b. No downstream restrictions. You may not offer or impose
|
| 208 |
+
any additional or different terms or conditions on, or
|
| 209 |
+
apply any Effective Technological Measures to, the
|
| 210 |
+
Licensed Material if doing so restricts exercise of the
|
| 211 |
+
Licensed Rights by any recipient of the Licensed
|
| 212 |
+
Material.
|
| 213 |
+
|
| 214 |
+
6. No endorsement. Nothing in this Public License constitutes or
|
| 215 |
+
may be construed as permission to assert or imply that You
|
| 216 |
+
are, or that Your use of the Licensed Material is, connected
|
| 217 |
+
with, or sponsored, endorsed, or granted official status by,
|
| 218 |
+
the Licensor or others designated to receive attribution as
|
| 219 |
+
provided in Section 3(a)(1)(A)(i).
|
| 220 |
+
|
| 221 |
+
b. Other rights.
|
| 222 |
+
|
| 223 |
+
1. Moral rights, such as the right of integrity, are not
|
| 224 |
+
licensed under this Public License, nor are publicity,
|
| 225 |
+
privacy, and/or other similar personality rights; however, to
|
| 226 |
+
the extent possible, the Licensor waives and/or agrees not to
|
| 227 |
+
assert any such rights held by the Licensor to the limited
|
| 228 |
+
extent necessary to allow You to exercise the Licensed
|
| 229 |
+
Rights, but not otherwise.
|
| 230 |
+
|
| 231 |
+
2. Patent and trademark rights are not licensed under this
|
| 232 |
+
Public License.
|
| 233 |
+
|
| 234 |
+
3. To the extent possible, the Licensor waives any right to
|
| 235 |
+
collect royalties from You for the exercise of the Licensed
|
| 236 |
+
Rights, whether directly or through a collecting society
|
| 237 |
+
under any voluntary or waivable statutory or compulsory
|
| 238 |
+
licensing scheme. In all other cases the Licensor expressly
|
| 239 |
+
reserves any right to collect such royalties, including when
|
| 240 |
+
the Licensed Material is used other than for NonCommercial
|
| 241 |
+
purposes.
|
| 242 |
+
|
| 243 |
+
|
| 244 |
+
Section 3 -- License Conditions.
|
| 245 |
+
|
| 246 |
+
Your exercise of the Licensed Rights is expressly made subject to the
|
| 247 |
+
following conditions.
|
| 248 |
+
|
| 249 |
+
a. Attribution.
|
| 250 |
+
|
| 251 |
+
1. If You Share the Licensed Material (including in modified
|
| 252 |
+
form), You must:
|
| 253 |
+
|
| 254 |
+
a. retain the following if it is supplied by the Licensor
|
| 255 |
+
with the Licensed Material:
|
| 256 |
+
|
| 257 |
+
i. identification of the creator(s) of the Licensed
|
| 258 |
+
Material and any others designated to receive
|
| 259 |
+
attribution, in any reasonable manner requested by
|
| 260 |
+
the Licensor (including by pseudonym if
|
| 261 |
+
designated);
|
| 262 |
+
|
| 263 |
+
ii. a copyright notice;
|
| 264 |
+
|
| 265 |
+
iii. a notice that refers to this Public License;
|
| 266 |
+
|
| 267 |
+
iv. a notice that refers to the disclaimer of
|
| 268 |
+
warranties;
|
| 269 |
+
|
| 270 |
+
v. a URI or hyperlink to the Licensed Material to the
|
| 271 |
+
extent reasonably practicable;
|
| 272 |
+
|
| 273 |
+
b. indicate if You modified the Licensed Material and
|
| 274 |
+
retain an indication of any previous modifications; and
|
| 275 |
+
|
| 276 |
+
c. indicate the Licensed Material is licensed under this
|
| 277 |
+
Public License, and include the text of, or the URI or
|
| 278 |
+
hyperlink to, this Public License.
|
| 279 |
+
|
| 280 |
+
2. You may satisfy the conditions in Section 3(a)(1) in any
|
| 281 |
+
reasonable manner based on the medium, means, and context in
|
| 282 |
+
which You Share the Licensed Material. For example, it may be
|
| 283 |
+
reasonable to satisfy the conditions by providing a URI or
|
| 284 |
+
hyperlink to a resource that includes the required
|
| 285 |
+
information.
|
| 286 |
+
|
| 287 |
+
3. If requested by the Licensor, You must remove any of the
|
| 288 |
+
information required by Section 3(a)(1)(A) to the extent
|
| 289 |
+
reasonably practicable.
|
| 290 |
+
|
| 291 |
+
4. If You Share Adapted Material You produce, the Adapter's
|
| 292 |
+
License You apply must not prevent recipients of the Adapted
|
| 293 |
+
Material from complying with this Public License.
|
| 294 |
+
|
| 295 |
+
|
| 296 |
+
Section 4 -- Sui Generis Database Rights.
|
| 297 |
+
|
| 298 |
+
Where the Licensed Rights include Sui Generis Database Rights that
|
| 299 |
+
apply to Your use of the Licensed Material:
|
| 300 |
+
|
| 301 |
+
a. for the avoidance of doubt, Section 2(a)(1) grants You the right
|
| 302 |
+
to extract, reuse, reproduce, and Share all or a substantial
|
| 303 |
+
portion of the contents of the database for NonCommercial purposes
|
| 304 |
+
only;
|
| 305 |
+
|
| 306 |
+
b. if You include all or a substantial portion of the database
|
| 307 |
+
contents in a database in which You have Sui Generis Database
|
| 308 |
+
Rights, then the database in which You have Sui Generis Database
|
| 309 |
+
Rights (but not its individual contents) is Adapted Material; and
|
| 310 |
+
|
| 311 |
+
c. You must comply with the conditions in Section 3(a) if You Share
|
| 312 |
+
all or a substantial portion of the contents of the database.
|
| 313 |
+
|
| 314 |
+
For the avoidance of doubt, this Section 4 supplements and does not
|
| 315 |
+
replace Your obligations under this Public License where the Licensed
|
| 316 |
+
Rights include other Copyright and Similar Rights.
|
| 317 |
+
|
| 318 |
+
|
| 319 |
+
Section 5 -- Disclaimer of Warranties and Limitation of Liability.
|
| 320 |
+
|
| 321 |
+
a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE
|
| 322 |
+
EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS
|
| 323 |
+
AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF
|
| 324 |
+
ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS,
|
| 325 |
+
IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION,
|
| 326 |
+
WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR
|
| 327 |
+
PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS,
|
| 328 |
+
ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT
|
| 329 |
+
KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT
|
| 330 |
+
ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU.
|
| 331 |
+
|
| 332 |
+
b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE
|
| 333 |
+
TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION,
|
| 334 |
+
NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT,
|
| 335 |
+
INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES,
|
| 336 |
+
COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR
|
| 337 |
+
USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN
|
| 338 |
+
ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR
|
| 339 |
+
DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR
|
| 340 |
+
IN PART, THIS LIMITATION MAY NOT APPLY TO YOU.
|
| 341 |
+
|
| 342 |
+
c. The disclaimer of warranties and limitation of liability provided
|
| 343 |
+
above shall be interpreted in a manner that, to the extent
|
| 344 |
+
possible, most closely approximates an absolute disclaimer and
|
| 345 |
+
waiver of all liability.
|
| 346 |
+
|
| 347 |
+
|
| 348 |
+
Section 6 -- Term and Termination.
|
| 349 |
+
|
| 350 |
+
a. This Public License applies for the term of the Copyright and
|
| 351 |
+
Similar Rights licensed here. However, if You fail to comply with
|
| 352 |
+
this Public License, then Your rights under this Public License
|
| 353 |
+
terminate automatically.
|
| 354 |
+
|
| 355 |
+
b. Where Your right to use the Licensed Material has terminated under
|
| 356 |
+
Section 6(a), it reinstates:
|
| 357 |
+
|
| 358 |
+
1. automatically as of the date the violation is cured, provided
|
| 359 |
+
it is cured within 30 days of Your discovery of the
|
| 360 |
+
violation; or
|
| 361 |
+
|
| 362 |
+
2. upon express reinstatement by the Licensor.
|
| 363 |
+
|
| 364 |
+
For the avoidance of doubt, this Section 6(b) does not affect any
|
| 365 |
+
right the Licensor may have to seek remedies for Your violations
|
| 366 |
+
of this Public License.
|
| 367 |
+
|
| 368 |
+
c. For the avoidance of doubt, the Licensor may also offer the
|
| 369 |
+
Licensed Material under separate terms or conditions or stop
|
| 370 |
+
distributing the Licensed Material at any time; however, doing so
|
| 371 |
+
will not terminate this Public License.
|
| 372 |
+
|
| 373 |
+
d. Sections 1, 5, 6, 7, and 8 survive termination of this Public
|
| 374 |
+
License.
|
| 375 |
+
|
| 376 |
+
|
| 377 |
+
Section 7 -- Other Terms and Conditions.
|
| 378 |
+
|
| 379 |
+
a. The Licensor shall not be bound by any additional or different
|
| 380 |
+
terms or conditions communicated by You unless expressly agreed.
|
| 381 |
+
|
| 382 |
+
b. Any arrangements, understandings, or agreements regarding the
|
| 383 |
+
Licensed Material not stated herein are separate from and
|
| 384 |
+
independent of the terms and conditions of this Public License.
|
| 385 |
+
|
| 386 |
+
|
| 387 |
+
Section 8 -- Interpretation.
|
| 388 |
+
|
| 389 |
+
a. For the avoidance of doubt, this Public License does not, and
|
| 390 |
+
shall not be interpreted to, reduce, limit, restrict, or impose
|
| 391 |
+
conditions on any use of the Licensed Material that could lawfully
|
| 392 |
+
be made without permission under this Public License.
|
| 393 |
+
|
| 394 |
+
b. To the extent possible, if any provision of this Public License is
|
| 395 |
+
deemed unenforceable, it shall be automatically reformed to the
|
| 396 |
+
minimum extent necessary to make it enforceable. If the provision
|
| 397 |
+
cannot be reformed, it shall be severed from this Public License
|
| 398 |
+
without affecting the enforceability of the remaining terms and
|
| 399 |
+
conditions.
|
| 400 |
+
|
| 401 |
+
c. No term or condition of this Public License will be waived and no
|
| 402 |
+
failure to comply consented to unless expressly agreed to by the
|
| 403 |
+
Licensor.
|
| 404 |
+
|
| 405 |
+
d. Nothing in this Public License constitutes or may be interpreted
|
| 406 |
+
as a limitation upon, or waiver of, any privileges and immunities
|
| 407 |
+
that apply to the Licensor or You, including from the legal
|
| 408 |
+
processes of any jurisdiction or authority.
|
| 409 |
+
|
| 410 |
+
=======================================================================
|
| 411 |
+
|
| 412 |
+
Creative Commons is not a party to its public
|
| 413 |
+
licenses. Notwithstanding, Creative Commons may elect to apply one of
|
| 414 |
+
its public licenses to material it publishes and in those instances
|
| 415 |
+
will be considered the “Licensor.” The text of the Creative Commons
|
| 416 |
+
public licenses is dedicated to the public domain under the CC0 Public
|
| 417 |
+
Domain Dedication. Except for the limited purpose of indicating that
|
| 418 |
+
material is shared under a Creative Commons public license or as
|
| 419 |
+
otherwise permitted by the Creative Commons policies published at
|
| 420 |
+
creativecommons.org/policies, Creative Commons does not authorize the
|
| 421 |
+
use of the trademark "Creative Commons" or any other trademark or logo
|
| 422 |
+
of Creative Commons without its prior written consent including,
|
| 423 |
+
without limitation, in connection with any unauthorized modifications
|
| 424 |
+
to any of its public licenses or any other arrangements,
|
| 425 |
+
understandings, or agreements concerning use of licensed material. For
|
| 426 |
+
the avoidance of doubt, this paragraph does not form part of the
|
| 427 |
+
public licenses.
|
| 428 |
+
|
| 429 |
+
Creative Commons may be contacted at creativecommons.org.
|
| 430 |
+
|
NOTICE
ADDED
|
@@ -0,0 +1,53 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
rumik-oss 1
|
| 2 |
+
Copyright 2026 Rumik AI
|
| 3 |
+
|
| 4 |
+
This model is a derivative work. CC-BY-NC 4.0 requires that redistribution
|
| 5 |
+
indicate what was changed relative to the upstream material; this file records
|
| 6 |
+
those changes.
|
| 7 |
+
|
| 8 |
+
-----------------------------------------------------------------------
|
| 9 |
+
Lineage:
|
| 10 |
+
|
| 11 |
+
CohereLabs/tiny-aya-fire vocab 261,008
|
| 12 |
+
https://huggingface.co/CohereLabs/tiny-aya-fire
|
| 13 |
+
Licensed CC-BY-NC 4.0 with the Cohere Labs acceptable-use addendum.
|
| 14 |
+
|
| 15 |
+
-> rumik-ai/rumik-oss-1-base vocab 277,395
|
| 16 |
+
https://huggingface.co/rumik-ai/rumik-oss-1-base
|
| 17 |
+
Named-speaker text-to-speech training.
|
| 18 |
+
|
| 19 |
+
-> rumik-ai/rumik-oss-1 vocab 277,404 (this model)
|
| 20 |
+
Delivery-control fine-tuning and reinforcement learning.
|
| 21 |
+
-----------------------------------------------------------------------
|
| 22 |
+
|
| 23 |
+
Modifications made by Rumik AI, relative to tiny aya fire:
|
| 24 |
+
|
| 25 |
+
1. Vocabulary extended from 261,008 to 277,404 tokens:
|
| 26 |
+
- 16,384 Mimi codec unit tokens <code>_<quantizer>, ids 261008-277391
|
| 27 |
+
- 3 structure delimiters <text>, <audio>, </audio>, ids 277392-277394
|
| 28 |
+
- 9 delivery and vocalization tags, ids 277395-277403
|
| 29 |
+
The first two groups were added for rumik-oss 1 base; the tags were
|
| 30 |
+
added for rumik-oss 1. Input and output embedding matrices were
|
| 31 |
+
resized accordingly.
|
| 32 |
+
|
| 33 |
+
2. A stop-prediction head (`stop_predictor`) was added on top of the final
|
| 34 |
+
hidden state to terminate audio generation.
|
| 35 |
+
|
| 36 |
+
3. The model was post-trained for text-to-speech on multilingual Indic and
|
| 37 |
+
English speech data, followed by a reinforcement-learning stage.
|
| 38 |
+
|
| 39 |
+
4. Model class and configuration were reimplemented as RumikOSSForCausalLM /
|
| 40 |
+
RumikOSSConfig (model_type "rumik_oss"), subclassing the transformers
|
| 41 |
+
Cohere2 implementation.
|
| 42 |
+
|
| 43 |
+
5. The inherited chat template was removed. This is not a chat model and
|
| 44 |
+
does not take a `messages` list; it uses the flat prompt layout
|
| 45 |
+
documented in README.md.
|
| 46 |
+
|
| 47 |
+
-----------------------------------------------------------------------
|
| 48 |
+
Also bundled:
|
| 49 |
+
|
| 50 |
+
Mimi codec (codec/) - Kyutai
|
| 51 |
+
https://huggingface.co/kyutai/mimi
|
| 52 |
+
Licensed CC-BY-4.0. Redistributed unmodified.
|
| 53 |
+
-----------------------------------------------------------------------
|
README.md
CHANGED
|
@@ -1,3 +1,391 @@
|
|
| 1 |
---
|
| 2 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 3 |
---
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
---
|
| 2 |
+
pipeline_tag: text-to-speech
|
| 3 |
+
library_name: transformers
|
| 4 |
+
base_model: rumik-ai/rumik-oss-1-base
|
| 5 |
+
base_model_relation: finetune
|
| 6 |
+
license: cc-by-nc-4.0
|
| 7 |
+
language:
|
| 8 |
+
- hi
|
| 9 |
+
- bn
|
| 10 |
+
- ta
|
| 11 |
+
- te
|
| 12 |
+
- mr
|
| 13 |
+
- gu
|
| 14 |
+
- kn
|
| 15 |
+
- ml
|
| 16 |
+
- pa
|
| 17 |
+
- or
|
| 18 |
+
- as
|
| 19 |
+
- ur
|
| 20 |
+
- ne
|
| 21 |
+
- sa
|
| 22 |
+
- mai
|
| 23 |
+
- mni
|
| 24 |
+
- brx
|
| 25 |
+
- doi
|
| 26 |
+
- kok
|
| 27 |
+
- sat
|
| 28 |
+
- ks
|
| 29 |
+
- en
|
| 30 |
+
tags:
|
| 31 |
+
- tts
|
| 32 |
+
- text-to-speech
|
| 33 |
+
- indic
|
| 34 |
+
- expressive
|
| 35 |
+
- mimi
|
| 36 |
+
- speech
|
| 37 |
---
|
| 38 |
+
<p align="center">
|
| 39 |
+
<img src="https://huggingface.co/rumik-ai/rumik-oss-1/resolve/main/assets/rumik-logo.png" alt="rumik.ai" width="100%">
|
| 40 |
+
</p>
|
| 41 |
+
|
| 42 |
+
<p align="center">
|
| 43 |
+
<a href="https://rumik.ai/research/rumik-oss"><img src="https://img.shields.io/badge/blog-overview-555555" alt="blog"></a>
|
| 44 |
+
<a href="https://huggingface.co/spaces/rumik-ai/rumik-oss-1"><img src="https://img.shields.io/badge/hugging_face-demo-FFD21E" alt="hugging face demo"></a>
|
| 45 |
+
<!-- add report later-->
|
| 46 |
+
<img src="https://img.shields.io/badge/technical_report-coming_soon-3975B7" alt="technical report: coming soon">
|
| 47 |
+
<a href="https://x.com/rumik_ai"><img src="https://img.shields.io/badge/x-rumik__ai-111111" alt="follow rumik ai on x"></a>
|
| 48 |
+
<a href="https://discord.gg/wa7sWvq8ty"><img src="https://img.shields.io/badge/discord-join_us-5865F2" alt="join our discord"></a>
|
| 49 |
+
</p>
|
| 50 |
+
|
| 51 |
+
# rumik-oss 1
|
| 52 |
+
|
| 53 |
+

|
| 54 |
+
|
| 55 |
+
rumik-oss 1 is a **3b multilingual text-to-speech model** from rumik ai, trained on **fewer than 70,000 hours of speech** while performing competitively with existing TTS models. it combines code-switched synthesis, description-conditioned delivery, and inline vocalization control, with **24 khz audio output**.
|
| 56 |
+
|
| 57 |
+
we also release [rumik-oss 1 base](https://huggingface.co/rumik-ai/rumik-oss-1-base), our final speaker-conditioned checkpoint before post-training. it supports multilingual synthesis with ira, aisha, siya, and zoya and provides a starting point for the community to research and post-train the base model from scratch.
|
| 58 |
+
|
| 59 |
+
we describe the post-training of rumik-oss 1 and the decisions behind its training curriculum in our [blog](https://rumik.ai/research/rumik-oss). our **technical report** will provide an in-depth account of the architecture, data preparation, training, and evaluation.
|
| 60 |
+
|
| 61 |
+
## model overview
|
| 62 |
+
|
| 63 |
+
rumik-oss 1 extends tiny aya fire with discrete speech tokens from the mimi codec. following the flattened codec-token formulation used in [llama-mimi](https://arxiv.org/abs/2509.14882), text conditioning and audio generation share a single autoregressive sequence. the model predicts eight codebook tokens for each audio frame, in codebook order, before advancing to the next frame. generated tokens are regrouped into codec frames and reconstructed as a waveform by the frozen mimi decoder.
|
| 64 |
+
|
| 65 |
+
we release the model with 4 voices:
|
| 66 |
+
|
| 67 |
+
- Ira
|
| 68 |
+
- Aisha
|
| 69 |
+
- Siya
|
| 70 |
+
- Zoya
|
| 71 |
+
|
| 72 |
+
unlike other TTS models, where each voice is trained specifically for one language or performs best in one language, our voices perform equally well across all 22 languages.
|
| 73 |
+
|
| 74 |
+

|
| 75 |
+
|
| 76 |
+
## capabilities
|
| 77 |
+
|
| 78 |
+
- **multilingual synthesis:** 22 indic languages in their native scripts and romanized forms, plus english, with support for single-language and code-switched synthesis.
|
| 79 |
+
- **delivery conditioning:** control tone, accent, and pace through the description format for various scenarios.
|
| 80 |
+
- **vocalization control:** inline tags for laughter, chuckles, and sighs.
|
| 81 |
+
|
| 82 |
+
## delivery controls
|
| 83 |
+
|
| 84 |
+
the `<description="...">` prefix lets users control the global tone and pace of the audio, while inline tags let you insert `<laugh>`, `<chuckle>`, and `<sigh>` at the intended positions.
|
| 85 |
+
|
| 86 |
+
|
| 87 |
+
```text
|
| 88 |
+
<description="excited, Hindi accent, fast pace"> जल्दी आओ, हमारा नाम लिस्ट में है! <laugh> आज घर में जश्न होगा।
|
| 89 |
+
```
|
| 90 |
+
|
| 91 |
+
| control | values |
|
| 92 |
+
|---|---|
|
| 93 |
+
| speaker | `Ira`, `Aisha`, `Siya`, `Zoya` |
|
| 94 |
+
| tone | happy, sad, angry, excited, professional |
|
| 95 |
+
| accent | `Hindi`, `Telugu`, `Tamil`, `Kannada`, `Bengali`, `Punjabi`, `Indian English` |
|
| 96 |
+
| pace | slow, fast, steady |
|
| 97 |
+
| inline vocalization | `<laugh>`, `<chuckle>`, `<sigh>` |
|
| 98 |
+
|
| 99 |
+
## audio samples
|
| 100 |
+
|
| 101 |
+
**ira · hindi · sad · slow pace**
|
| 102 |
+
|
| 103 |
+
> माँ, आज फिर तुम्हारे लिए चाय बना दी। <sigh> कप ठंडा हो गया, पर तुम्हारा इंतज़ार नहीं।
|
| 104 |
+
|
| 105 |
+
<audio controls preload="none" src="https://huggingface.co/rumik-ai/rumik-oss-1/resolve/main/samples/showcase/01-the-second-cup.wav"><a href="https://huggingface.co/rumik-ai/rumik-oss-1/resolve/main/samples/showcase/01-the-second-cup.wav">listen</a></audio>
|
| 106 |
+
|
| 107 |
+
**aisha · english · sad · slow pace**
|
| 108 |
+
|
| 109 |
+
> I still play your last message, Dad. You only said, call me when you get home. I got home. I just never got to tell you.
|
| 110 |
+
|
| 111 |
+
<audio controls preload="none" src="https://huggingface.co/rumik-ai/rumik-oss-1/resolve/main/samples/showcase/02-one-last-message.wav"><a href="https://huggingface.co/rumik-ai/rumik-oss-1/resolve/main/samples/showcase/02-one-last-message.wav">listen</a></audio>
|
| 112 |
+
|
| 113 |
+
**siya · telugu · excited · fast pace**
|
| 114 |
+
|
| 115 |
+
> అమ్మా, నాకు ఉద్యోగం వచ్చింది! నిజంగా వచ్చింది! నువ్వు నా కోసం చేసిన ప్రతి త్యాగం నాకు గుర్తుంది. <laugh> ఈ రోజు నీకు నచ్చిన స్వీట్లు నేనే కొనిస్తాను!
|
| 116 |
+
|
| 117 |
+
<audio controls preload="none" src="https://huggingface.co/rumik-ai/rumik-oss-1/resolve/main/samples/showcase/03-we-made-it.wav"><a href="https://huggingface.co/rumik-ai/rumik-oss-1/resolve/main/samples/showcase/03-we-made-it.wav">listen</a></audio>
|
| 118 |
+
|
| 119 |
+
**zoya · tamil · angry · fast pace**
|
| 120 |
+
|
| 121 |
+
> நீ வருவேன்னு சொன்னதால்தான் இவ்வளவு நேரம் காத்திருந்தேன்! ஒரு போன் கூட பண்ண முடியலையா? ஒவ்வொரு முறையும் மன்னிப்பு கேட்டா மட்டும் எல்லாம் சரியாகிடாது!
|
| 122 |
+
|
| 123 |
+
<audio controls preload="none" src="https://huggingface.co/rumik-ai/rumik-oss-1/resolve/main/samples/showcase/04-a-broken-promise.wav"><a href="https://huggingface.co/rumik-ai/rumik-oss-1/resolve/main/samples/showcase/04-a-broken-promise.wav">listen</a></audio>
|
| 124 |
+
|
| 125 |
+
**ira · english · professional · steady pace**
|
| 126 |
+
|
| 127 |
+
> Good evening, passengers. Boarding for the flight to Bengaluru will begin shortly at gate twelve. Please keep your boarding pass ready. Thank you for your patience, and have a pleasant journey.
|
| 128 |
+
|
| 129 |
+
<audio controls preload="none" src="https://huggingface.co/rumik-ai/rumik-oss-1/resolve/main/samples/showcase/05-ready-for-departure.wav"><a href="https://huggingface.co/rumik-ai/rumik-oss-1/resolve/main/samples/showcase/05-ready-for-departure.wav">listen</a></audio>
|
| 130 |
+
|
| 131 |
+
**aisha · bengali · happy · steady pace**
|
| 132 |
+
|
| 133 |
+
> এত দিন পরে তোমাকে দেখে কী যে ভালো লাগছে! তোমার পছন্দের সব রান্না করেছি। আজ আর কোথাও যেতে দেব না, সবাই মিলে অনেক গল্প করব।
|
| 134 |
+
|
| 135 |
+
<audio controls preload="none" src="https://huggingface.co/rumik-ai/rumik-oss-1/resolve/main/samples/showcase/06-home-again.wav"><a href="https://huggingface.co/rumik-ai/rumik-oss-1/resolve/main/samples/showcase/06-home-again.wav">listen</a></audio>
|
| 136 |
+
|
| 137 |
+
**siya · kannada · professional · steady pace**
|
| 138 |
+
|
| 139 |
+
> ನಮ್ಮ ಹೊಸ ಗ್ರಂಥಾಲಯಕ್ಕೆ ಸ್ವಾಗತ. ಇಲ್ಲಿ ಕನ್ನಡ ಮತ್ತು ಇಂಗ್ಲಿಷ್ ಪುಸ್ತಕಗಳು ಲಭ್ಯವಿವೆ. ಸದಸ್ಯರಾಗಲು ನಿಮ್ಮ ಹೆಸರು ಮತ್ತು ವಿಳಾಸ ನೀಡಿ. ಓದಲು ಶಾಂತವಾದ ಸ್ಥಳವೂ ಇದೆ.
|
| 140 |
+
|
| 141 |
+
<audio controls preload="none" src="https://huggingface.co/rumik-ai/rumik-oss-1/resolve/main/samples/showcase/07-a-place-to-read.wav"><a href="https://huggingface.co/rumik-ai/rumik-oss-1/resolve/main/samples/showcase/07-a-place-to-read.wav">listen</a></audio>
|
| 142 |
+
|
| 143 |
+
**zoya · punjabi · excited · fast pace**
|
| 144 |
+
|
| 145 |
+
> ਮਾਂ, ਮੇਰਾ ਦਾਖ਼ਲਾ ਹੋ ਗਿਆ! ਸੱਚੀਂ, ਚਿੱਠੀ ਆ ਗਈ ਹੈ! ਜਿਹੜਾ ਸੁਪਨਾ ਅਸੀਂ ਇਕੱਠੇ ਵੇਖਿਆ ਸੀ, ਉਹ ਅੱਜ ਪੂਰਾ ਹੋ ਗਿਆ। ਹੁਣ ਸਭ ਨੂੰ ਫ਼ੋਨ ਕਰ!
|
| 146 |
+
|
| 147 |
+
<audio controls preload="none" src="https://huggingface.co/rumik-ai/rumik-oss-1/resolve/main/samples/showcase/08-the-acceptance-letter.wav"><a href="https://huggingface.co/rumik-ai/rumik-oss-1/resolve/main/samples/showcase/08-the-acceptance-letter.wav">listen</a></audio>
|
| 148 |
+
|
| 149 |
+
**ira · hindi + english · happy · steady pace**
|
| 150 |
+
|
| 151 |
+
> आज की meeting में सबको हमारा idea पसंद आया। I was so nervous, लेकिन तुमने कहा था ना, बस दिल से बोलो। <chuckle> अब coffee मेरी तरफ़ से, और cake तुम्हारी तरफ़ से!
|
| 152 |
+
|
| 153 |
+
<audio controls preload="none" src="https://huggingface.co/rumik-ai/rumik-oss-1/resolve/main/samples/showcase/09-a-small-celebration.wav"><a href="https://huggingface.co/rumik-ai/rumik-oss-1/resolve/main/samples/showcase/09-a-small-celebration.wav">listen</a></audio>
|
| 154 |
+
|
| 155 |
+
**aisha · telugu + english · professional · steady pace**
|
| 156 |
+
|
| 157 |
+
> మన కొత్త demo సిద్ధంగా ఉంది. You can choose a voice, change the pace, and try different languages. ముందుగా తెలుగులో ఒక వాక్యం విందాం, then we can switch to English.
|
| 158 |
+
|
| 159 |
+
<audio controls preload="none" src="https://huggingface.co/rumik-ai/rumik-oss-1/resolve/main/samples/showcase/10-the-demo-is-ready.wav"><a href="https://huggingface.co/rumik-ai/rumik-oss-1/resolve/main/samples/showcase/10-the-demo-is-ready.wav">listen</a></audio>
|
| 160 |
+
|
| 161 |
+
<details>
|
| 162 |
+
<summary>generation settings</summary>
|
| 163 |
+
|
| 164 |
+
temperature `0.8`, top-k `30`, top-p `1.0`, maximum `3072` tokens. [prompts and seeds](samples/showcase/manifest.json).
|
| 165 |
+
|
| 166 |
+
</details>
|
| 167 |
+
|
| 168 |
+
## benchmarks
|
| 169 |
+
|
| 170 |
+
to evaluate our specific use case, we need new benchmarks across different axes: expressiveness, consistency of non-verbal vocalizations, and basic WER/CER. there aren't any standardized benchmarks for multilingual indic TTS across these axes, so we present 3 benchmarks:
|
| 171 |
+
|
| 172 |
+
- IndicEmo: evaluates expressiveness.
|
| 173 |
+
- NoVA: evaluates adherence to non-verbal vocalization requests.
|
| 174 |
+
- WER/CER: evaluates word and character error rates across 15 languages.
|
| 175 |
+
|
| 176 |
+
|
| 177 |
+
|
| 178 |
+
### IndicEmo
|
| 179 |
+
|
| 180 |
+
[github](https://github.com/ira-rumik/IndicEmo)
|
| 181 |
+
|
| 182 |
+
we introduce IndicEmo to evaluate expressive delivery in code-switched speech. its 100 prompts combine two to five languages drawn from english, hindi, telugu, tamil, kannada, bengali, and punjabi, with equal coverage of happy, sad, angry, excited, and professional delivery.
|
| 183 |
+
|
| 184 |
+
three automated judges rate anonymized recordings on a five-point rubric covering tone, dynamics, phrasing, and sustained expression. results use the 98-prompt intersection with valid ratings from all judges, aggregating the median rating per recording into category means. rumik-oss 1 scores **2.92/5 overall** and **3.03/5 on the four emotion categories**.
|
| 185 |
+
|
| 186 |
+

|
| 187 |
+
|
| 188 |
+
<details>
|
| 189 |
+
<summary>scores and emotion breakdown</summary>
|
| 190 |
+
|
| 191 |
+
| system | overall / 5 | emotions only / 5 |
|
| 192 |
+
|---|---:|---:|
|
| 193 |
+
| gemini 3.1 flash tts preview | 4.58 | 4.66 |
|
| 194 |
+
| **rumik-oss 1** | **2.92** | **3.03** |
|
| 195 |
+
| cartesia sonic preview | 2.71 | 2.51 |
|
| 196 |
+
| cartesia sonic 3.5 | 2.32 | 2.18 |
|
| 197 |
+
| elevenlabs eleven v3 | 2.16 | 2.03 |
|
| 198 |
+
|
| 199 |
+

|
| 200 |
+
|
| 201 |
+
the emotions-only score excludes professional delivery. [evaluation protocol](benchmarks/evaluation.md#indicemo).
|
| 202 |
+
|
| 203 |
+
</details>
|
| 204 |
+
|
| 205 |
+
### NoVA
|
| 206 |
+
|
| 207 |
+
[github](https://github.com/ira-rumik/nova-bench)
|
| 208 |
+
|
| 209 |
+
NoVA evaluates adherence to inline laughter, chuckle, and sigh requests in english speech. each of its 149 prompts places a single vocalization at a specified word position. seven systems are evaluated over three synthesis runs using provider-specific prompting.
|
| 210 |
+
|
| 211 |
+
silk-asr, scribe v2, and a gemini verifier assess position-correct rendering. laugh and chuckle are pooled into one category; the final score averages laughter and sigh rendering rates across detectors, with unsupported categories contributing zero. rumik-oss 1 achieves a **0.884 rendering score**.
|
| 212 |
+
|
| 213 |
+

|
| 214 |
+
|
| 215 |
+
<details>
|
| 216 |
+
<summary>scores and detector breakdown</summary>
|
| 217 |
+
|
| 218 |
+
| system (voice) | rendering score |
|
| 219 |
+
|---|---:|
|
| 220 |
+
| grok tts (ara) | 0.972 |
|
| 221 |
+
| inworld tts-2 (ashley) | 0.941 |
|
| 222 |
+
| **rumik-oss 1 (ira)** | **0.884** |
|
| 223 |
+
| orpheus 3b (tara) | 0.813 |
|
| 224 |
+
| elevenlabs v3 (jessica) | 0.705 |
|
| 225 |
+
| gemini 3.1 flash tts (kore) | 0.664 |
|
| 226 |
+
| cartesia sonic 3.6 (monica) | 0.498 |
|
| 227 |
+
|
| 228 |
+

|
| 229 |
+
|
| 230 |
+
[evaluation protocol](benchmarks/evaluation.md#nova).
|
| 231 |
+
|
| 232 |
+
</details>
|
| 233 |
+
|
| 234 |
+
### WER / CER
|
| 235 |
+
|
| 236 |
+
[github](https://github.com/Demon-Sheriff/rumik-oss-bench)
|
| 237 |
+
|
| 238 |
+
we evaluate transcription fidelity using IndicConformer RNNT, comparing normalized ASR transcripts against the input text. the tables report WER and CER across 15 languages. we release the benchmark prompts, generation and scoring code, and per-sample results in [rumik-oss-bench](https://github.com/Demon-Sheriff/rumik-oss-bench), with normalization and scoring details in the [methodology](https://github.com/Demon-Sheriff/rumik-oss-bench/blob/main/METHODOLOGY.md).
|
| 239 |
+
|
| 240 |
+
#### WER (%)
|
| 241 |
+
|
| 242 |
+

|
| 243 |
+
|
| 244 |
+
<details>
|
| 245 |
+
<summary>all 15 languages · WER</summary>
|
| 246 |
+
|
| 247 |
+

|
| 248 |
+
|
| 249 |
+
[results](benchmarks/wer-reported-scores.json) · [evaluation protocol](benchmarks/evaluation.md#wer-and-cer)
|
| 250 |
+
|
| 251 |
+
</details>
|
| 252 |
+
|
| 253 |
+
#### CER (%)
|
| 254 |
+
|
| 255 |
+

|
| 256 |
+
|
| 257 |
+
<details>
|
| 258 |
+
<summary>all 15 languages · CER</summary>
|
| 259 |
+
|
| 260 |
+

|
| 261 |
+
|
| 262 |
+
[results](benchmarks/cer-reported-scores.json) · [evaluation protocol](benchmarks/evaluation.md#wer-and-cer)
|
| 263 |
+
|
| 264 |
+
</details>
|
| 265 |
+
|
| 266 |
+
## limitations
|
| 267 |
+
|
| 268 |
+
- **long-form synthesis:** training utterances are limited to 30 seconds; speaker and prosodic continuity over longer passages have not been evaluated. we do not recommend generating utterances longer than 35 seconds.
|
| 269 |
+
- **vocalization precision:** NoVA detectors report unrequested vocalizations in 2.9-5.4% of rumik-oss 1 outputs. NoVA evaluates english; equivalent tag adherence across languages has not been established.
|
| 270 |
+
|
| 271 |
+
## inference
|
| 272 |
+
|
| 273 |
+
rumik-oss 1 generates **audio tokens**. decoding them to a waveform is a
|
| 274 |
+
separate step that uses the [mimi](https://huggingface.co/kyutai/mimi) codec,
|
| 275 |
+
bundled in this repository under `codec/`.
|
| 276 |
+
|
| 277 |
+
`transformers.pipeline("text-to-speech")` is not supported for this model.
|
| 278 |
+
use the [one-shot example](#one-shot-example) to generate audio tokens with
|
| 279 |
+
`generate_audio()` and decode them into a waveform with mimi.
|
| 280 |
+
|
| 281 |
+
### installation
|
| 282 |
+
|
| 283 |
+
```bash
|
| 284 |
+
pip install -r requirements.txt
|
| 285 |
+
```
|
| 286 |
+
|
| 287 |
+
requires an nvidia gpu with cuda support. the one-shot example below also
|
| 288 |
+
needs `soundfile` to write a wav. `requirements-server.txt` adds the extras
|
| 289 |
+
needed only for the optional web ui.
|
| 290 |
+
|
| 291 |
+
### one-shot example
|
| 292 |
+
|
| 293 |
+
text in, `speech.wav` out:
|
| 294 |
+
|
| 295 |
+
```python
|
| 296 |
+
"""rumik-oss 1: text -> speech.wav"""
|
| 297 |
+
import soundfile as sf
|
| 298 |
+
import torch
|
| 299 |
+
from transformers import AutoModelForCausalLM, AutoTokenizer, MimiModel
|
| 300 |
+
|
| 301 |
+
REPO = "rumik-ai/rumik-oss-1"
|
| 302 |
+
SPEAKER = "Ira"
|
| 303 |
+
DESCRIPTION = "happy, Hindi accent, steady pace"
|
| 304 |
+
TEXT = "नमस्ते, आज आपका दिन कैसा रहा?"
|
| 305 |
+
|
| 306 |
+
tokenizer = AutoTokenizer.from_pretrained(REPO, trust_remote_code=True)
|
| 307 |
+
model = AutoModelForCausalLM.from_pretrained(
|
| 308 |
+
REPO, trust_remote_code=True, dtype=torch.bfloat16
|
| 309 |
+
).eval().cuda()
|
| 310 |
+
mimi = MimiModel.from_pretrained(REPO, subfolder="codec").eval().cuda()
|
| 311 |
+
|
| 312 |
+
# [BOS] <text> Ira: <description="..."> text <audio>
|
| 313 |
+
# the tokenizer adds [BOS] itself, so it is not written here
|
| 314 |
+
prompt = f'<text>{SPEAKER}: <description="{DESCRIPTION}"> {TEXT}<audio>'
|
| 315 |
+
inputs = tokenizer(prompt, return_tensors="pt").to(model.device)
|
| 316 |
+
|
| 317 |
+
# 1. text -> audio tokens
|
| 318 |
+
ids = model.generate_audio(**inputs, max_new_tokens=2048,
|
| 319 |
+
temperature=0.8, top_k=30, do_sample=True)
|
| 320 |
+
audio_tokens = ids[0].tolist()[inputs.input_ids.shape[1]:]
|
| 321 |
+
|
| 322 |
+
# 2. audio tokens -> codec frames -> waveform
|
| 323 |
+
codes = model.audio_tokens_to_codes(audio_tokens)
|
| 324 |
+
with torch.inference_mode():
|
| 325 |
+
wav = mimi.decode(codes.to(mimi.device)).audio_values[0, 0]
|
| 326 |
+
|
| 327 |
+
sf.write("speech.wav", wav.float().cpu().numpy(), 24000)
|
| 328 |
+
print(f"{len(audio_tokens)} tokens -> {len(audio_tokens) / 100:.2f}s -> speech.wav")
|
| 329 |
+
```
|
| 330 |
+
|
| 331 |
+
### web interface
|
| 332 |
+
|
| 333 |
+
an optional fastapi server with a browser ui is included:
|
| 334 |
+
|
| 335 |
+
```bash
|
| 336 |
+
pip install -r requirements-server.txt
|
| 337 |
+
python server.py --repo-id rumik-ai/rumik-oss-1 --host 127.0.0.1 --port 6006
|
| 338 |
+
```
|
| 339 |
+
|
| 340 |
+
open `http://127.0.0.1:6006/`, or post to it:
|
| 341 |
+
|
| 342 |
+
```bash
|
| 343 |
+
curl http://127.0.0.1:6006/v1/audio/speech \
|
| 344 |
+
-H 'Content-Type: application/json' \
|
| 345 |
+
-d '{
|
| 346 |
+
"speaker": "Ira",
|
| 347 |
+
"input": "<description=\"happy, Hindi accent, steady pace\"> नमस्ते, आज आपका दिन कैसा रहा?",
|
| 348 |
+
"temperature": 0.8,
|
| 349 |
+
"top_k": 30,
|
| 350 |
+
"max_new_tokens": 2048
|
| 351 |
+
}' \
|
| 352 |
+
--output speech.wav
|
| 353 |
+
```
|
| 354 |
+
|
| 355 |
+
## license
|
| 356 |
+
|
| 357 |
+
rumik-oss 1 is available for **research and non-commercial use** under [tiny aya fire's cc-by-nc 4.0 license with an acceptable-use addendum](https://cohere.com/cohere-labs-cc-by-nc-license).
|
| 358 |
+
|
| 359 |
+
permitted non-commercial uses include speech-synthesis research, benchmarking, teaching, and fine-tuning for research experiments. you may share the weights and adaptations under the applicable terms, retaining attribution, license links, upstream notices, and an indication of modifications. all use must comply with [cohere labs' acceptable-use policy](https://docs.cohere.com/docs/cohere-labs-acceptable-use-policy).
|
| 360 |
+
|
| 361 |
+
the license does not authorize commercial products, paid synthesis services, or other uses directed toward commercial advantage, including self-hosted deployments. those uses require separate permission from the relevant rights holders; a research label alone does not make a commercial activity non-commercial.
|
| 362 |
+
|
| 363 |
+
the [mimi codec](https://huggingface.co/kyutai/mimi) is licensed separately under [cc-by-4.0](https://creativecommons.org/licenses/by/4.0/), which permits reuse and adaptation, including commercially, with attribution and modification notices. that permission applies to the codec, not to the tiny aya-derived tts weights.
|
| 364 |
+
|
| 365 |
+
the full license text is in [`LICENSE`](LICENSE), and [`NOTICE`](NOTICE)
|
| 366 |
+
records the modifications made to tiny aya fire, as cc-by-nc 4.0 requires.
|
| 367 |
+
|
| 368 |
+
## acknowledgments
|
| 369 |
+
|
| 370 |
+
rumik-oss 1 builds on [tiny aya fire](https://huggingface.co/CohereLabs/tiny-aya-fire), [mimi](https://huggingface.co/kyutai/mimi), [llama-mimi](https://arxiv.org/abs/2509.14882), and [torchtitan](https://github.com/pytorch/torchtitan). we thank their authors for making this work available. our work wouldn't be possible without these foundations.
|
| 371 |
+
|
| 372 |
+
## training recipe
|
| 373 |
+
|
| 374 |
+
we plan to release the training recipe, including data manifests, preprocessing scripts, and training configurations, alongside the **technical report**. data releases are subject to source redistribution rights.
|
| 375 |
+
|
| 376 |
+
## contact
|
| 377 |
+
|
| 378 |
+
[research@rumik.ai](mailto:research@rumik.ai)
|
| 379 |
+
|
| 380 |
+
## citation
|
| 381 |
+
|
| 382 |
+
if you find rumik-oss 1 useful in your research, please cite our work:
|
| 383 |
+
|
| 384 |
+
```bibtex
|
| 385 |
+
@unpublished{govindu2026rumikoss1,
|
| 386 |
+
title = {{rumik-oss 1 technical report}},
|
| 387 |
+
author = {Govindu Pranav and Anant Shukla and Suryansh Shakya and Aman Anand and Vatsal Bharti},
|
| 388 |
+
year = {2026},
|
| 389 |
+
note = {In preparation}
|
| 390 |
+
}
|
| 391 |
+
```
|
assets/architecture.png
ADDED
|
Git LFS Details
|
assets/cer-full.png
ADDED
|
Git LFS Details
|
assets/cer-full.svg
ADDED
|
|
assets/cer-selected.png
ADDED
|
Git LFS Details
|
assets/cer-selected.svg
ADDED
|
|
assets/favicon.jpg
ADDED
|
|
assets/indicemo-by-delivery.png
ADDED
|
Git LFS Details
|
assets/indicemo-by-delivery.svg
ADDED
|
|
assets/indicemo-overall.png
ADDED
|
Git LFS Details
|
assets/indicemo-overall.svg
ADDED
|
|
assets/nova-detector-breakdown.png
ADDED
|
Git LFS Details
|
assets/nova-results.png
ADDED
|
Git LFS Details
|
assets/nova-results.svg
ADDED
|
|
assets/rumik-capabilities.png
ADDED
|
Git LFS Details
|
assets/rumik-logo.png
ADDED
|
Git LFS Details
|
assets/wer-full.png
ADDED
|
Git LFS Details
|
assets/wer-full.svg
ADDED
|
|
assets/wer-selected.png
ADDED
|
Git LFS Details
|
assets/wer-selected.svg
ADDED
|
|
benchmarks/cer-methodology.md
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# cer evaluation
|
| 2 |
+
|
| 3 |
+
[protocol](evaluation.md#wer-and-cer) · [results](cer-reported-scores.json)
|
benchmarks/cer-reported-scores.json
ADDED
|
@@ -0,0 +1,212 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"source": "internal evaluation harness; see benchmarks/evaluation.md",
|
| 3 |
+
"retrieved_utc": "2026-09-07T09:35:01.588484+00:00",
|
| 4 |
+
"metric": "CER (fraction)",
|
| 5 |
+
"recognizer": "IndicConformer (as reported)",
|
| 6 |
+
"source_systems": [
|
| 7 |
+
"rumik-oss 1",
|
| 8 |
+
"Cartesia Sonic 3.5",
|
| 9 |
+
"Gemini 3.1 Flash",
|
| 10 |
+
"ElevenLabs v3",
|
| 11 |
+
"Smallest Lightning v3.1",
|
| 12 |
+
"Sarvam Bulbul v3",
|
| 13 |
+
"Grok TTS"
|
| 14 |
+
],
|
| 15 |
+
"rows": [
|
| 16 |
+
{
|
| 17 |
+
"language": "Odia",
|
| 18 |
+
"cer": [
|
| 19 |
+
"0.0145",
|
| 20 |
+
null,
|
| 21 |
+
"0.0212",
|
| 22 |
+
null,
|
| 23 |
+
"0.0174",
|
| 24 |
+
"0.0499",
|
| 25 |
+
null
|
| 26 |
+
],
|
| 27 |
+
"source_verdict": "within noise"
|
| 28 |
+
},
|
| 29 |
+
{
|
| 30 |
+
"language": "Konkani",
|
| 31 |
+
"cer": [
|
| 32 |
+
"0.0485",
|
| 33 |
+
null,
|
| 34 |
+
"0.0496",
|
| 35 |
+
null,
|
| 36 |
+
null,
|
| 37 |
+
null,
|
| 38 |
+
null
|
| 39 |
+
],
|
| 40 |
+
"source_verdict": "within noise"
|
| 41 |
+
},
|
| 42 |
+
{
|
| 43 |
+
"language": "Maithili",
|
| 44 |
+
"cer": [
|
| 45 |
+
"0.0390",
|
| 46 |
+
null,
|
| 47 |
+
"0.0381",
|
| 48 |
+
null,
|
| 49 |
+
null,
|
| 50 |
+
null,
|
| 51 |
+
null
|
| 52 |
+
],
|
| 53 |
+
"source_verdict": "within noise"
|
| 54 |
+
},
|
| 55 |
+
{
|
| 56 |
+
"language": "Telugu",
|
| 57 |
+
"cer": [
|
| 58 |
+
"0.0127",
|
| 59 |
+
"0.0116",
|
| 60 |
+
"0.0186",
|
| 61 |
+
"0.0194",
|
| 62 |
+
null,
|
| 63 |
+
"0.0152",
|
| 64 |
+
null
|
| 65 |
+
],
|
| 66 |
+
"source_verdict": "within noise"
|
| 67 |
+
},
|
| 68 |
+
{
|
| 69 |
+
"language": "Assamese",
|
| 70 |
+
"cer": [
|
| 71 |
+
"0.0324",
|
| 72 |
+
null,
|
| 73 |
+
null,
|
| 74 |
+
"0.0310",
|
| 75 |
+
null,
|
| 76 |
+
null,
|
| 77 |
+
null
|
| 78 |
+
],
|
| 79 |
+
"source_verdict": "within noise"
|
| 80 |
+
},
|
| 81 |
+
{
|
| 82 |
+
"language": "Gujarati",
|
| 83 |
+
"cer": [
|
| 84 |
+
"0.0106",
|
| 85 |
+
"0.0077",
|
| 86 |
+
"0.0096",
|
| 87 |
+
"0.0136",
|
| 88 |
+
"0.0082",
|
| 89 |
+
"0.0527",
|
| 90 |
+
null
|
| 91 |
+
],
|
| 92 |
+
"source_verdict": "within noise"
|
| 93 |
+
},
|
| 94 |
+
{
|
| 95 |
+
"language": "Marathi",
|
| 96 |
+
"cer": [
|
| 97 |
+
"0.0086",
|
| 98 |
+
"0.0055",
|
| 99 |
+
"0.0061",
|
| 100 |
+
"0.0136",
|
| 101 |
+
"0.0079",
|
| 102 |
+
"0.0349",
|
| 103 |
+
null
|
| 104 |
+
],
|
| 105 |
+
"source_verdict": "within noise"
|
| 106 |
+
},
|
| 107 |
+
{
|
| 108 |
+
"language": "Kannada",
|
| 109 |
+
"cer": [
|
| 110 |
+
"0.0105",
|
| 111 |
+
"0.0074",
|
| 112 |
+
"0.0113",
|
| 113 |
+
"0.0126",
|
| 114 |
+
"0.0410",
|
| 115 |
+
"0.0315",
|
| 116 |
+
null
|
| 117 |
+
],
|
| 118 |
+
"source_verdict": "within noise"
|
| 119 |
+
},
|
| 120 |
+
{
|
| 121 |
+
"language": "Nepali",
|
| 122 |
+
"cer": [
|
| 123 |
+
"0.0198",
|
| 124 |
+
null,
|
| 125 |
+
"0.0162",
|
| 126 |
+
"0.0236",
|
| 127 |
+
null,
|
| 128 |
+
null,
|
| 129 |
+
null
|
| 130 |
+
],
|
| 131 |
+
"source_verdict": "within noise"
|
| 132 |
+
},
|
| 133 |
+
{
|
| 134 |
+
"language": "Hindi",
|
| 135 |
+
"cer": [
|
| 136 |
+
"0.0154",
|
| 137 |
+
"0.0113",
|
| 138 |
+
"0.0108",
|
| 139 |
+
"0.0154",
|
| 140 |
+
"0.0146",
|
| 141 |
+
"0.0403",
|
| 142 |
+
"0.0098"
|
| 143 |
+
],
|
| 144 |
+
"source_verdict": "within noise"
|
| 145 |
+
},
|
| 146 |
+
{
|
| 147 |
+
"language": "Malayalam",
|
| 148 |
+
"cer": [
|
| 149 |
+
"0.0224",
|
| 150 |
+
"0.0189",
|
| 151 |
+
"0.0233",
|
| 152 |
+
"0.0245",
|
| 153 |
+
"0.0224",
|
| 154 |
+
"0.0167",
|
| 155 |
+
null
|
| 156 |
+
],
|
| 157 |
+
"source_verdict": "within noise"
|
| 158 |
+
},
|
| 159 |
+
{
|
| 160 |
+
"language": "Tamil",
|
| 161 |
+
"cer": [
|
| 162 |
+
"0.0223",
|
| 163 |
+
"0.0196",
|
| 164 |
+
"0.0173",
|
| 165 |
+
"0.0225",
|
| 166 |
+
null,
|
| 167 |
+
"0.0164",
|
| 168 |
+
null
|
| 169 |
+
],
|
| 170 |
+
"source_verdict": "within noise"
|
| 171 |
+
},
|
| 172 |
+
{
|
| 173 |
+
"language": "Punjabi",
|
| 174 |
+
"cer": [
|
| 175 |
+
"0.0213",
|
| 176 |
+
"0.0140",
|
| 177 |
+
"0.0147",
|
| 178 |
+
"0.0254",
|
| 179 |
+
"0.0153",
|
| 180 |
+
"0.0686",
|
| 181 |
+
null
|
| 182 |
+
],
|
| 183 |
+
"source_verdict": "behind the best API"
|
| 184 |
+
},
|
| 185 |
+
{
|
| 186 |
+
"language": "Bengali",
|
| 187 |
+
"cer": [
|
| 188 |
+
"0.0302",
|
| 189 |
+
"0.0193",
|
| 190 |
+
"0.0233",
|
| 191 |
+
"0.0209",
|
| 192 |
+
"0.0219",
|
| 193 |
+
"0.0361",
|
| 194 |
+
null
|
| 195 |
+
],
|
| 196 |
+
"source_verdict": "behind the best API"
|
| 197 |
+
},
|
| 198 |
+
{
|
| 199 |
+
"language": "Urdu",
|
| 200 |
+
"cer": [
|
| 201 |
+
"0.0174",
|
| 202 |
+
null,
|
| 203 |
+
"0.0051",
|
| 204 |
+
"0.0072",
|
| 205 |
+
null,
|
| 206 |
+
null,
|
| 207 |
+
null
|
| 208 |
+
],
|
| 209 |
+
"source_verdict": "behind the best API"
|
| 210 |
+
}
|
| 211 |
+
]
|
| 212 |
+
}
|
benchmarks/evaluation.md
ADDED
|
@@ -0,0 +1,59 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# evaluation protocol
|
| 2 |
+
|
| 3 |
+
## indicemo
|
| 4 |
+
|
| 5 |
+
[repository](https://github.com/ira-rumik/IndicEmo)
|
| 6 |
+
|
| 7 |
+
100 prompts span five equally represented delivery categories: happy, sad,
|
| 8 |
+
angry, excited, and professional. each prompt combines two to five languages
|
| 9 |
+
from english, hindi, telugu, tamil, kannada, bengali, and punjabi. five systems
|
| 10 |
+
produce 500 recordings.
|
| 11 |
+
|
| 12 |
+
gemini 3.1 pro preview, qwen3.5-omni-plus, and gpt-realtime-2.1 score anonymized
|
| 13 |
+
recordings on a 1-5 rubric covering tone, dynamics, phrasing, and sustained
|
| 14 |
+
expression. aggregation uses the 98-prompt intersection with valid ratings from
|
| 15 |
+
all judges: median per recording, mean within category, then an unweighted
|
| 16 |
+
mean across categories. the emotions-only aggregate excludes professional.
|
| 17 |
+
|
| 18 |
+
rumik-oss-1 uses ira throughout; competing systems use language-conditioned
|
| 19 |
+
voices. statistical significance of ranking differences has not been evaluated.
|
| 20 |
+
|
| 21 |
+
## nova
|
| 22 |
+
|
| 23 |
+
[repository](https://github.com/ira-rumik/nova-bench) ·
|
| 24 |
+
[protocol](https://github.com/ira-rumik/nova-bench/blob/main/METHODOLOGY.md)
|
| 25 |
+
|
| 26 |
+
seven systems are evaluated on 149 single-tag english prompts from
|
| 27 |
+
nvv-superbench, with three synthesis runs per system. prompts use
|
| 28 |
+
provider-specific tags. rumik-oss-1 uses ira, with happy descriptions for
|
| 29 |
+
laugh/chuckle and sad descriptions for sigh.
|
| 30 |
+
|
| 31 |
+
silk-asr, scribe v2, and the nvv-superbench gemini verifier measure exact-position
|
| 32 |
+
rendering. laugh and chuckle are pooled into a laughter category. the aggregate
|
| 33 |
+
is the mean of laughter and sigh rendering rates, averaged across detectors.
|
| 34 |
+
unsupported categories contribute zero, including cartesia's absent sigh tag.
|
| 35 |
+
detector-level results report means and standard deviations across runs.
|
| 36 |
+
|
| 37 |
+
unrequested vocalization rates for rumik-oss-1 are 2.9% (silk-asr), 5.4%
|
| 38 |
+
(gemini), and 4.5% (scribe). gemini is conditioned on the requested event;
|
| 39 |
+
the transcribers receive audio only. silk-asr is developed by rumik; scribe
|
| 40 |
+
shares a provider with an evaluated system.
|
| 41 |
+
|
| 42 |
+
## wer and cer
|
| 43 |
+
|
| 44 |
+
[wer results](wer-reported-scores.json) · [cer results](cer-reported-scores.json)
|
| 45 |
+
|
| 46 |
+
the full comparison covers 15 languages. seven-language subsets are selected
|
| 47 |
+
post hoc by top-two numerical rank among displayed systems. the wer subset
|
| 48 |
+
includes malayalam in place of telugu. provider coverage varies by language;
|
| 49 |
+
grok results are available only for hindi.
|
| 50 |
+
|
| 51 |
+
the wer protocol specifies 100 shared prompts per model and language, scored
|
| 52 |
+
with indicconformer rnnt using normalized text. the cer evaluation reports
|
| 53 |
+
100 rumik recordings per language, except telugu with 99.
|
| 54 |
+
|
| 55 |
+
competitor sample counts, matched utterance coverage, normalization, and
|
| 56 |
+
recognizer versions have not been independently verified. confidence intervals
|
| 57 |
+
and significance tests are unavailable. wer and cer originate from separate
|
| 58 |
+
result snapshots; matched recordings between them and checkpoint equivalence
|
| 59 |
+
with the emotion/vocalization evaluations remain unverified.
|
benchmarks/wer-reported-scores.json
ADDED
|
@@ -0,0 +1,311 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"source": "internal evaluation harness; see benchmarks/evaluation.md",
|
| 3 |
+
"retrieved_utc": "2026-09-07T14:41:38.692153+00:00",
|
| 4 |
+
"metric": "WER (fraction)",
|
| 5 |
+
"source_systems": [
|
| 6 |
+
"rumik-oss 1",
|
| 7 |
+
"Cartesia",
|
| 8 |
+
"Gemini",
|
| 9 |
+
"ElevenLabs",
|
| 10 |
+
"Smallest",
|
| 11 |
+
"Sarvam",
|
| 12 |
+
"Grok",
|
| 13 |
+
"rumik hosted (Ira)"
|
| 14 |
+
],
|
| 15 |
+
"rows": [
|
| 16 |
+
{
|
| 17 |
+
"language": "Urdu",
|
| 18 |
+
"code": "ur",
|
| 19 |
+
"wer": [
|
| 20 |
+
"0.0348",
|
| 21 |
+
null,
|
| 22 |
+
"0.0219",
|
| 23 |
+
"0.0246",
|
| 24 |
+
null,
|
| 25 |
+
null,
|
| 26 |
+
null,
|
| 27 |
+
"0.0395"
|
| 28 |
+
]
|
| 29 |
+
},
|
| 30 |
+
{
|
| 31 |
+
"language": "Marathi",
|
| 32 |
+
"code": "mr",
|
| 33 |
+
"wer": [
|
| 34 |
+
"0.0503",
|
| 35 |
+
"0.0362",
|
| 36 |
+
"0.0377",
|
| 37 |
+
"0.0761",
|
| 38 |
+
"0.0467",
|
| 39 |
+
"0.0736",
|
| 40 |
+
null,
|
| 41 |
+
"0.1010"
|
| 42 |
+
]
|
| 43 |
+
},
|
| 44 |
+
{
|
| 45 |
+
"language": "Gujarati",
|
| 46 |
+
"code": "gu",
|
| 47 |
+
"wer": [
|
| 48 |
+
"0.0515",
|
| 49 |
+
"0.0443",
|
| 50 |
+
"0.0505",
|
| 51 |
+
"0.0654",
|
| 52 |
+
"0.0442",
|
| 53 |
+
"0.0982",
|
| 54 |
+
null,
|
| 55 |
+
"0.1029"
|
| 56 |
+
]
|
| 57 |
+
},
|
| 58 |
+
{
|
| 59 |
+
"language": "Hindi",
|
| 60 |
+
"code": "hi",
|
| 61 |
+
"wer": [
|
| 62 |
+
"0.0712",
|
| 63 |
+
"0.0521",
|
| 64 |
+
"0.0489",
|
| 65 |
+
"0.0688",
|
| 66 |
+
"0.0556",
|
| 67 |
+
"0.0981",
|
| 68 |
+
"0.0464",
|
| 69 |
+
"0.0764"
|
| 70 |
+
]
|
| 71 |
+
},
|
| 72 |
+
{
|
| 73 |
+
"language": "Punjabi",
|
| 74 |
+
"code": "pa",
|
| 75 |
+
"wer": [
|
| 76 |
+
"0.0781",
|
| 77 |
+
"0.0642",
|
| 78 |
+
"0.0635",
|
| 79 |
+
"0.0863",
|
| 80 |
+
"0.0641",
|
| 81 |
+
"0.1189",
|
| 82 |
+
null,
|
| 83 |
+
"0.1115"
|
| 84 |
+
]
|
| 85 |
+
},
|
| 86 |
+
{
|
| 87 |
+
"language": "Kannada",
|
| 88 |
+
"code": "kn",
|
| 89 |
+
"wer": [
|
| 90 |
+
"0.0788",
|
| 91 |
+
"0.0623",
|
| 92 |
+
"0.0899",
|
| 93 |
+
"0.0891",
|
| 94 |
+
"0.2464",
|
| 95 |
+
"0.0789",
|
| 96 |
+
null,
|
| 97 |
+
"0.0838"
|
| 98 |
+
]
|
| 99 |
+
},
|
| 100 |
+
{
|
| 101 |
+
"language": "Bengali",
|
| 102 |
+
"code": "bn",
|
| 103 |
+
"wer": [
|
| 104 |
+
"0.0975",
|
| 105 |
+
"0.0641",
|
| 106 |
+
"0.0784",
|
| 107 |
+
"0.0693",
|
| 108 |
+
"0.0777",
|
| 109 |
+
"0.0895",
|
| 110 |
+
null,
|
| 111 |
+
"0.2933"
|
| 112 |
+
]
|
| 113 |
+
},
|
| 114 |
+
{
|
| 115 |
+
"language": "Nepali",
|
| 116 |
+
"code": "ne",
|
| 117 |
+
"wer": [
|
| 118 |
+
"0.1128",
|
| 119 |
+
null,
|
| 120 |
+
"0.0930",
|
| 121 |
+
"0.1234",
|
| 122 |
+
null,
|
| 123 |
+
null,
|
| 124 |
+
null,
|
| 125 |
+
"0.1905"
|
| 126 |
+
]
|
| 127 |
+
},
|
| 128 |
+
{
|
| 129 |
+
"language": "Manipuri",
|
| 130 |
+
"code": "mni",
|
| 131 |
+
"wer": [
|
| 132 |
+
"0.1141",
|
| 133 |
+
null,
|
| 134 |
+
null,
|
| 135 |
+
null,
|
| 136 |
+
null,
|
| 137 |
+
null,
|
| 138 |
+
null,
|
| 139 |
+
"0.1267"
|
| 140 |
+
]
|
| 141 |
+
},
|
| 142 |
+
{
|
| 143 |
+
"language": "Telugu",
|
| 144 |
+
"code": "te",
|
| 145 |
+
"wer": [
|
| 146 |
+
"0.1233",
|
| 147 |
+
"0.1072",
|
| 148 |
+
"0.1514",
|
| 149 |
+
"0.1264",
|
| 150 |
+
null,
|
| 151 |
+
"0.0931",
|
| 152 |
+
null,
|
| 153 |
+
"0.1638"
|
| 154 |
+
]
|
| 155 |
+
},
|
| 156 |
+
{
|
| 157 |
+
"language": "Tamil",
|
| 158 |
+
"code": "ta",
|
| 159 |
+
"wer": [
|
| 160 |
+
"0.1237",
|
| 161 |
+
"0.1274",
|
| 162 |
+
"0.1130",
|
| 163 |
+
"0.1382",
|
| 164 |
+
null,
|
| 165 |
+
"0.1003",
|
| 166 |
+
null,
|
| 167 |
+
"0.2868"
|
| 168 |
+
]
|
| 169 |
+
},
|
| 170 |
+
{
|
| 171 |
+
"language": "Odia",
|
| 172 |
+
"code": "or",
|
| 173 |
+
"wer": [
|
| 174 |
+
"0.1263",
|
| 175 |
+
null,
|
| 176 |
+
"0.1344",
|
| 177 |
+
null,
|
| 178 |
+
"0.1197",
|
| 179 |
+
"0.1492",
|
| 180 |
+
null,
|
| 181 |
+
"0.1480"
|
| 182 |
+
]
|
| 183 |
+
},
|
| 184 |
+
{
|
| 185 |
+
"language": "Assamese",
|
| 186 |
+
"code": "as",
|
| 187 |
+
"wer": [
|
| 188 |
+
"0.1296",
|
| 189 |
+
null,
|
| 190 |
+
null,
|
| 191 |
+
"0.1260",
|
| 192 |
+
null,
|
| 193 |
+
null,
|
| 194 |
+
null,
|
| 195 |
+
"0.2779"
|
| 196 |
+
]
|
| 197 |
+
},
|
| 198 |
+
{
|
| 199 |
+
"language": "Malayalam",
|
| 200 |
+
"code": "ml",
|
| 201 |
+
"wer": [
|
| 202 |
+
"0.1460",
|
| 203 |
+
"0.1469",
|
| 204 |
+
"0.1755",
|
| 205 |
+
"0.1628",
|
| 206 |
+
"0.1562",
|
| 207 |
+
"0.1232",
|
| 208 |
+
null,
|
| 209 |
+
"0.3864"
|
| 210 |
+
]
|
| 211 |
+
},
|
| 212 |
+
{
|
| 213 |
+
"language": "Maithili",
|
| 214 |
+
"code": "mai",
|
| 215 |
+
"wer": [
|
| 216 |
+
"0.1741",
|
| 217 |
+
null,
|
| 218 |
+
"0.1781",
|
| 219 |
+
null,
|
| 220 |
+
null,
|
| 221 |
+
null,
|
| 222 |
+
null,
|
| 223 |
+
"0.1905"
|
| 224 |
+
]
|
| 225 |
+
},
|
| 226 |
+
{
|
| 227 |
+
"language": "Bodo",
|
| 228 |
+
"code": "brx",
|
| 229 |
+
"wer": [
|
| 230 |
+
"0.2113",
|
| 231 |
+
null,
|
| 232 |
+
null,
|
| 233 |
+
null,
|
| 234 |
+
null,
|
| 235 |
+
null,
|
| 236 |
+
null,
|
| 237 |
+
"0.2316"
|
| 238 |
+
]
|
| 239 |
+
},
|
| 240 |
+
{
|
| 241 |
+
"language": "Konkani",
|
| 242 |
+
"code": "kok",
|
| 243 |
+
"wer": [
|
| 244 |
+
"0.2156",
|
| 245 |
+
null,
|
| 246 |
+
"0.2348",
|
| 247 |
+
null,
|
| 248 |
+
null,
|
| 249 |
+
null,
|
| 250 |
+
null,
|
| 251 |
+
"0.2552"
|
| 252 |
+
]
|
| 253 |
+
},
|
| 254 |
+
{
|
| 255 |
+
"language": "Dogri",
|
| 256 |
+
"code": "doi",
|
| 257 |
+
"wer": [
|
| 258 |
+
"0.2196",
|
| 259 |
+
null,
|
| 260 |
+
null,
|
| 261 |
+
null,
|
| 262 |
+
null,
|
| 263 |
+
null,
|
| 264 |
+
null,
|
| 265 |
+
"0.2249"
|
| 266 |
+
]
|
| 267 |
+
},
|
| 268 |
+
{
|
| 269 |
+
"language": "Sanskrit",
|
| 270 |
+
"code": "sa",
|
| 271 |
+
"wer": [
|
| 272 |
+
"0.2431",
|
| 273 |
+
null,
|
| 274 |
+
null,
|
| 275 |
+
null,
|
| 276 |
+
null,
|
| 277 |
+
null,
|
| 278 |
+
null,
|
| 279 |
+
"0.2986"
|
| 280 |
+
]
|
| 281 |
+
},
|
| 282 |
+
{
|
| 283 |
+
"language": "Santali",
|
| 284 |
+
"code": "sat",
|
| 285 |
+
"wer": [
|
| 286 |
+
"0.2855",
|
| 287 |
+
null,
|
| 288 |
+
null,
|
| 289 |
+
null,
|
| 290 |
+
null,
|
| 291 |
+
null,
|
| 292 |
+
null,
|
| 293 |
+
"0.3071"
|
| 294 |
+
]
|
| 295 |
+
},
|
| 296 |
+
{
|
| 297 |
+
"language": "Kashmiri",
|
| 298 |
+
"code": "ks",
|
| 299 |
+
"wer": [
|
| 300 |
+
"0.4573",
|
| 301 |
+
null,
|
| 302 |
+
null,
|
| 303 |
+
null,
|
| 304 |
+
null,
|
| 305 |
+
null,
|
| 306 |
+
null,
|
| 307 |
+
"0.4819"
|
| 308 |
+
]
|
| 309 |
+
}
|
| 310 |
+
]
|
| 311 |
+
}
|
codec/config.json
ADDED
|
@@ -0,0 +1,52 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"_frame_rate": 12.5,
|
| 3 |
+
"architectures": [
|
| 4 |
+
"MimiModel"
|
| 5 |
+
],
|
| 6 |
+
"attention_bias": false,
|
| 7 |
+
"attention_dropout": 0.0,
|
| 8 |
+
"audio_channels": 1,
|
| 9 |
+
"codebook_dim": 256,
|
| 10 |
+
"codebook_size": 2048,
|
| 11 |
+
"compress": 2,
|
| 12 |
+
"dilation_growth_rate": 2,
|
| 13 |
+
"dtype": "float32",
|
| 14 |
+
"head_dim": 64,
|
| 15 |
+
"hidden_act": "gelu",
|
| 16 |
+
"hidden_size": 512,
|
| 17 |
+
"initializer_range": 0.02,
|
| 18 |
+
"intermediate_size": 2048,
|
| 19 |
+
"kernel_size": 7,
|
| 20 |
+
"last_kernel_size": 3,
|
| 21 |
+
"layer_scale_initial_scale": 0.01,
|
| 22 |
+
"max_position_embeddings": 8000,
|
| 23 |
+
"model_type": "mimi",
|
| 24 |
+
"norm_eps": 1e-05,
|
| 25 |
+
"normalize": false,
|
| 26 |
+
"num_attention_heads": 8,
|
| 27 |
+
"num_filters": 64,
|
| 28 |
+
"num_hidden_layers": 8,
|
| 29 |
+
"num_key_value_heads": 8,
|
| 30 |
+
"num_quantizers": 32,
|
| 31 |
+
"num_residual_layers": 1,
|
| 32 |
+
"num_semantic_quantizers": 1,
|
| 33 |
+
"pad_mode": "constant",
|
| 34 |
+
"residual_kernel_size": 3,
|
| 35 |
+
"rope_theta": 10000.0,
|
| 36 |
+
"sampling_rate": 24000,
|
| 37 |
+
"sliding_window": 250,
|
| 38 |
+
"transformers_version": "4.57.6",
|
| 39 |
+
"trim_right_ratio": 1.0,
|
| 40 |
+
"upsample_groups": 512,
|
| 41 |
+
"upsampling_ratios": [
|
| 42 |
+
8,
|
| 43 |
+
6,
|
| 44 |
+
5,
|
| 45 |
+
4
|
| 46 |
+
],
|
| 47 |
+
"use_cache": false,
|
| 48 |
+
"use_causal_conv": true,
|
| 49 |
+
"use_conv_shortcut": false,
|
| 50 |
+
"use_streaming": false,
|
| 51 |
+
"vector_quantization_hidden_dimension": 256
|
| 52 |
+
}
|
codec/model.safetensors
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:bac7e85083dcded655d24eaadde7e6eea34c0da1b35fa2d284e641bd2b942a5e
|
| 3 |
+
size 384649828
|
codec/preprocessor_config.json
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"chunk_length_s": null,
|
| 3 |
+
"feature_extractor_type": "EncodecFeatureExtractor",
|
| 4 |
+
"feature_size": 1,
|
| 5 |
+
"overlap": null,
|
| 6 |
+
"padding_side": "right",
|
| 7 |
+
"padding_value": 0.0,
|
| 8 |
+
"return_attention_mask": true,
|
| 9 |
+
"sampling_rate": 24000
|
| 10 |
+
}
|
config.json
ADDED
|
@@ -0,0 +1,98 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"_sliding_window_pattern": 4,
|
| 3 |
+
"architectures": [
|
| 4 |
+
"RumikOSSForCausalLM"
|
| 5 |
+
],
|
| 6 |
+
"attention_bias": false,
|
| 7 |
+
"attention_dropout": 0.0,
|
| 8 |
+
"audio_end_token_id": 277394,
|
| 9 |
+
"audio_start_token_id": 277393,
|
| 10 |
+
"auto_map": {
|
| 11 |
+
"AutoConfig": "configuration_rumik_oss.RumikOSSConfig",
|
| 12 |
+
"AutoModelForCausalLM": "modeling_rumik_oss.RumikOSSForCausalLM"
|
| 13 |
+
},
|
| 14 |
+
"bos_token_id": 2,
|
| 15 |
+
"codebook_size": 2048,
|
| 16 |
+
"dtype": "bfloat16",
|
| 17 |
+
"eos_token_id": 3,
|
| 18 |
+
"first_unit_id": 261008,
|
| 19 |
+
"frame_rate_hz": 12.5,
|
| 20 |
+
"head_dim": 128,
|
| 21 |
+
"hidden_act": "silu",
|
| 22 |
+
"hidden_size": 2048,
|
| 23 |
+
"initializer_range": 0.02,
|
| 24 |
+
"intermediate_size": 11008,
|
| 25 |
+
"last_unit_id": 277391,
|
| 26 |
+
"layer_norm_eps": 1e-05,
|
| 27 |
+
"layer_switch": 4,
|
| 28 |
+
"layer_types": [
|
| 29 |
+
"sliding_attention",
|
| 30 |
+
"sliding_attention",
|
| 31 |
+
"sliding_attention",
|
| 32 |
+
"full_attention",
|
| 33 |
+
"sliding_attention",
|
| 34 |
+
"sliding_attention",
|
| 35 |
+
"sliding_attention",
|
| 36 |
+
"full_attention",
|
| 37 |
+
"sliding_attention",
|
| 38 |
+
"sliding_attention",
|
| 39 |
+
"sliding_attention",
|
| 40 |
+
"full_attention",
|
| 41 |
+
"sliding_attention",
|
| 42 |
+
"sliding_attention",
|
| 43 |
+
"sliding_attention",
|
| 44 |
+
"full_attention",
|
| 45 |
+
"sliding_attention",
|
| 46 |
+
"sliding_attention",
|
| 47 |
+
"sliding_attention",
|
| 48 |
+
"full_attention",
|
| 49 |
+
"sliding_attention",
|
| 50 |
+
"sliding_attention",
|
| 51 |
+
"sliding_attention",
|
| 52 |
+
"full_attention",
|
| 53 |
+
"sliding_attention",
|
| 54 |
+
"sliding_attention",
|
| 55 |
+
"sliding_attention",
|
| 56 |
+
"full_attention",
|
| 57 |
+
"sliding_attention",
|
| 58 |
+
"sliding_attention",
|
| 59 |
+
"sliding_attention",
|
| 60 |
+
"full_attention",
|
| 61 |
+
"sliding_attention",
|
| 62 |
+
"sliding_attention",
|
| 63 |
+
"sliding_attention",
|
| 64 |
+
"full_attention"
|
| 65 |
+
],
|
| 66 |
+
"logit_scale": 1.0,
|
| 67 |
+
"max_position_embeddings": 8192,
|
| 68 |
+
"model_type": "rumik_oss",
|
| 69 |
+
"num_attention_heads": 16,
|
| 70 |
+
"num_hidden_layers": 36,
|
| 71 |
+
"num_key_value_heads": 4,
|
| 72 |
+
"num_quantizers": 8,
|
| 73 |
+
"order_of_interleaved_layers": "local_attn_first",
|
| 74 |
+
"pad_token_id": 0,
|
| 75 |
+
"position_embedding_type": "rope_gptj",
|
| 76 |
+
"rope_scaling": null,
|
| 77 |
+
"rope_theta": 50000,
|
| 78 |
+
"rotary_pct": 1.0,
|
| 79 |
+
"sliding_window": 4096,
|
| 80 |
+
"sliding_window_pattern": 4,
|
| 81 |
+
"speakers": [
|
| 82 |
+
"Ira",
|
| 83 |
+
"Aisha",
|
| 84 |
+
"Siya",
|
| 85 |
+
"Zoya"
|
| 86 |
+
],
|
| 87 |
+
"text_start_token_id": 277392,
|
| 88 |
+
"tie_word_embeddings": true,
|
| 89 |
+
"torch_dtype": "bfloat16",
|
| 90 |
+
"transformers_version": "4.57.6",
|
| 91 |
+
"use_cache": true,
|
| 92 |
+
"use_embedding_sharing": true,
|
| 93 |
+
"use_gated_activation": true,
|
| 94 |
+
"use_parallel_block": true,
|
| 95 |
+
"use_parallel_embedding": false,
|
| 96 |
+
"use_qk_norm": false,
|
| 97 |
+
"vocab_size": 277404
|
| 98 |
+
}
|
configuration_rumik_oss.py
ADDED
|
@@ -0,0 +1,55 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
"""Configuration for rumik-oss 1."""
|
| 2 |
+
|
| 3 |
+
from transformers import Cohere2Config
|
| 4 |
+
|
| 5 |
+
|
| 6 |
+
class RumikOSSConfig(Cohere2Config):
|
| 7 |
+
"""rumik-oss 1: tiny aya fire extended with flattened Mimi codec tokens.
|
| 8 |
+
|
| 9 |
+
Beyond the base Cohere2 fields, this records where the audio vocabulary
|
| 10 |
+
lives so that callers can map token ids to codec (code, quantizer) pairs
|
| 11 |
+
arithmetically, without loading the tokenizer or scanning its vocabulary.
|
| 12 |
+
|
| 13 |
+
The unit tokens are laid out code-major, quantizer-minor::
|
| 14 |
+
|
| 15 |
+
<0_0> <0_1> ... <0_7> <1_0> ... <2047_7>
|
| 16 |
+
|
| 17 |
+
so for any id in ``[first_unit_id, last_unit_id]``::
|
| 18 |
+
|
| 19 |
+
code = (token_id - first_unit_id) // num_quantizers
|
| 20 |
+
quantizer = (token_id - first_unit_id) % num_quantizers
|
| 21 |
+
"""
|
| 22 |
+
|
| 23 |
+
model_type = "rumik_oss"
|
| 24 |
+
|
| 25 |
+
def __init__(
|
| 26 |
+
self,
|
| 27 |
+
num_quantizers=8,
|
| 28 |
+
codebook_size=2048,
|
| 29 |
+
audio_start_token_id=None,
|
| 30 |
+
audio_end_token_id=None,
|
| 31 |
+
text_start_token_id=None,
|
| 32 |
+
first_unit_id=None,
|
| 33 |
+
last_unit_id=None,
|
| 34 |
+
frame_rate_hz=12.5,
|
| 35 |
+
speakers=None,
|
| 36 |
+
**kwargs,
|
| 37 |
+
):
|
| 38 |
+
super().__init__(**kwargs)
|
| 39 |
+
self.num_quantizers = int(num_quantizers)
|
| 40 |
+
self.codebook_size = int(codebook_size)
|
| 41 |
+
self.audio_start_token_id = audio_start_token_id
|
| 42 |
+
self.audio_end_token_id = audio_end_token_id
|
| 43 |
+
self.text_start_token_id = text_start_token_id
|
| 44 |
+
self.first_unit_id = first_unit_id
|
| 45 |
+
# Derivable, but stored so a hand-edited config stays self-consistent.
|
| 46 |
+
if last_unit_id is None and first_unit_id is not None:
|
| 47 |
+
last_unit_id = int(first_unit_id) + self.codebook_size * self.num_quantizers - 1
|
| 48 |
+
self.last_unit_id = last_unit_id
|
| 49 |
+
self.frame_rate_hz = float(frame_rate_hz)
|
| 50 |
+
self.speakers = speakers or ["Ira", "Aisha", "Siya", "Zoya"]
|
| 51 |
+
|
| 52 |
+
@property
|
| 53 |
+
def audio_tokens_per_second(self) -> float:
|
| 54 |
+
"""Tokens the model emits per second of audio (8 x 12.5 = 100)."""
|
| 55 |
+
return self.frame_rate_hz * self.num_quantizers
|
generation_config.json
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"_from_model_config": true,
|
| 3 |
+
"bos_token_id": 2,
|
| 4 |
+
"eos_token_id": 3,
|
| 5 |
+
"pad_token_id": 0,
|
| 6 |
+
"transformers_version": "4.57.6"
|
| 7 |
+
}
|
model-00001-of-00002.safetensors
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:ba333fd8e5c48151ce6d890919da1e0104471aa0d029557548720de0a5734dea
|
| 3 |
+
size 4997224952
|
model-00002-of-00002.safetensors
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:68e5ce5c4915885ad47835837a62dcd56aba69da86e99040700bb9e91bc022af
|
| 3 |
+
size 1765876498
|
model.safetensors.index.json
ADDED
|
@@ -0,0 +1,304 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"metadata": {
|
| 3 |
+
"total_parameters": 3381533697,
|
| 4 |
+
"total_size": 6763067394
|
| 5 |
+
},
|
| 6 |
+
"weight_map": {
|
| 7 |
+
"model.embed_tokens.weight": "model-00001-of-00002.safetensors",
|
| 8 |
+
"model.layers.0.input_layernorm.weight": "model-00001-of-00002.safetensors",
|
| 9 |
+
"model.layers.0.mlp.down_proj.weight": "model-00001-of-00002.safetensors",
|
| 10 |
+
"model.layers.0.mlp.gate_proj.weight": "model-00001-of-00002.safetensors",
|
| 11 |
+
"model.layers.0.mlp.up_proj.weight": "model-00001-of-00002.safetensors",
|
| 12 |
+
"model.layers.0.self_attn.k_proj.weight": "model-00001-of-00002.safetensors",
|
| 13 |
+
"model.layers.0.self_attn.o_proj.weight": "model-00001-of-00002.safetensors",
|
| 14 |
+
"model.layers.0.self_attn.q_proj.weight": "model-00001-of-00002.safetensors",
|
| 15 |
+
"model.layers.0.self_attn.v_proj.weight": "model-00001-of-00002.safetensors",
|
| 16 |
+
"model.layers.1.input_layernorm.weight": "model-00001-of-00002.safetensors",
|
| 17 |
+
"model.layers.1.mlp.down_proj.weight": "model-00001-of-00002.safetensors",
|
| 18 |
+
"model.layers.1.mlp.gate_proj.weight": "model-00001-of-00002.safetensors",
|
| 19 |
+
"model.layers.1.mlp.up_proj.weight": "model-00001-of-00002.safetensors",
|
| 20 |
+
"model.layers.1.self_attn.k_proj.weight": "model-00001-of-00002.safetensors",
|
| 21 |
+
"model.layers.1.self_attn.o_proj.weight": "model-00001-of-00002.safetensors",
|
| 22 |
+
"model.layers.1.self_attn.q_proj.weight": "model-00001-of-00002.safetensors",
|
| 23 |
+
"model.layers.1.self_attn.v_proj.weight": "model-00001-of-00002.safetensors",
|
| 24 |
+
"model.layers.10.input_layernorm.weight": "model-00001-of-00002.safetensors",
|
| 25 |
+
"model.layers.10.mlp.down_proj.weight": "model-00001-of-00002.safetensors",
|
| 26 |
+
"model.layers.10.mlp.gate_proj.weight": "model-00001-of-00002.safetensors",
|
| 27 |
+
"model.layers.10.mlp.up_proj.weight": "model-00001-of-00002.safetensors",
|
| 28 |
+
"model.layers.10.self_attn.k_proj.weight": "model-00001-of-00002.safetensors",
|
| 29 |
+
"model.layers.10.self_attn.o_proj.weight": "model-00001-of-00002.safetensors",
|
| 30 |
+
"model.layers.10.self_attn.q_proj.weight": "model-00001-of-00002.safetensors",
|
| 31 |
+
"model.layers.10.self_attn.v_proj.weight": "model-00001-of-00002.safetensors",
|
| 32 |
+
"model.layers.11.input_layernorm.weight": "model-00001-of-00002.safetensors",
|
| 33 |
+
"model.layers.11.mlp.down_proj.weight": "model-00001-of-00002.safetensors",
|
| 34 |
+
"model.layers.11.mlp.gate_proj.weight": "model-00001-of-00002.safetensors",
|
| 35 |
+
"model.layers.11.mlp.up_proj.weight": "model-00001-of-00002.safetensors",
|
| 36 |
+
"model.layers.11.self_attn.k_proj.weight": "model-00001-of-00002.safetensors",
|
| 37 |
+
"model.layers.11.self_attn.o_proj.weight": "model-00001-of-00002.safetensors",
|
| 38 |
+
"model.layers.11.self_attn.q_proj.weight": "model-00001-of-00002.safetensors",
|
| 39 |
+
"model.layers.11.self_attn.v_proj.weight": "model-00001-of-00002.safetensors",
|
| 40 |
+
"model.layers.12.input_layernorm.weight": "model-00001-of-00002.safetensors",
|
| 41 |
+
"model.layers.12.mlp.down_proj.weight": "model-00001-of-00002.safetensors",
|
| 42 |
+
"model.layers.12.mlp.gate_proj.weight": "model-00001-of-00002.safetensors",
|
| 43 |
+
"model.layers.12.mlp.up_proj.weight": "model-00001-of-00002.safetensors",
|
| 44 |
+
"model.layers.12.self_attn.k_proj.weight": "model-00001-of-00002.safetensors",
|
| 45 |
+
"model.layers.12.self_attn.o_proj.weight": "model-00001-of-00002.safetensors",
|
| 46 |
+
"model.layers.12.self_attn.q_proj.weight": "model-00001-of-00002.safetensors",
|
| 47 |
+
"model.layers.12.self_attn.v_proj.weight": "model-00001-of-00002.safetensors",
|
| 48 |
+
"model.layers.13.input_layernorm.weight": "model-00001-of-00002.safetensors",
|
| 49 |
+
"model.layers.13.mlp.down_proj.weight": "model-00001-of-00002.safetensors",
|
| 50 |
+
"model.layers.13.mlp.gate_proj.weight": "model-00001-of-00002.safetensors",
|
| 51 |
+
"model.layers.13.mlp.up_proj.weight": "model-00001-of-00002.safetensors",
|
| 52 |
+
"model.layers.13.self_attn.k_proj.weight": "model-00001-of-00002.safetensors",
|
| 53 |
+
"model.layers.13.self_attn.o_proj.weight": "model-00001-of-00002.safetensors",
|
| 54 |
+
"model.layers.13.self_attn.q_proj.weight": "model-00001-of-00002.safetensors",
|
| 55 |
+
"model.layers.13.self_attn.v_proj.weight": "model-00001-of-00002.safetensors",
|
| 56 |
+
"model.layers.14.input_layernorm.weight": "model-00001-of-00002.safetensors",
|
| 57 |
+
"model.layers.14.mlp.down_proj.weight": "model-00001-of-00002.safetensors",
|
| 58 |
+
"model.layers.14.mlp.gate_proj.weight": "model-00001-of-00002.safetensors",
|
| 59 |
+
"model.layers.14.mlp.up_proj.weight": "model-00001-of-00002.safetensors",
|
| 60 |
+
"model.layers.14.self_attn.k_proj.weight": "model-00001-of-00002.safetensors",
|
| 61 |
+
"model.layers.14.self_attn.o_proj.weight": "model-00001-of-00002.safetensors",
|
| 62 |
+
"model.layers.14.self_attn.q_proj.weight": "model-00001-of-00002.safetensors",
|
| 63 |
+
"model.layers.14.self_attn.v_proj.weight": "model-00001-of-00002.safetensors",
|
| 64 |
+
"model.layers.15.input_layernorm.weight": "model-00001-of-00002.safetensors",
|
| 65 |
+
"model.layers.15.mlp.down_proj.weight": "model-00001-of-00002.safetensors",
|
| 66 |
+
"model.layers.15.mlp.gate_proj.weight": "model-00001-of-00002.safetensors",
|
| 67 |
+
"model.layers.15.mlp.up_proj.weight": "model-00001-of-00002.safetensors",
|
| 68 |
+
"model.layers.15.self_attn.k_proj.weight": "model-00001-of-00002.safetensors",
|
| 69 |
+
"model.layers.15.self_attn.o_proj.weight": "model-00001-of-00002.safetensors",
|
| 70 |
+
"model.layers.15.self_attn.q_proj.weight": "model-00001-of-00002.safetensors",
|
| 71 |
+
"model.layers.15.self_attn.v_proj.weight": "model-00001-of-00002.safetensors",
|
| 72 |
+
"model.layers.16.input_layernorm.weight": "model-00001-of-00002.safetensors",
|
| 73 |
+
"model.layers.16.mlp.down_proj.weight": "model-00001-of-00002.safetensors",
|
| 74 |
+
"model.layers.16.mlp.gate_proj.weight": "model-00001-of-00002.safetensors",
|
| 75 |
+
"model.layers.16.mlp.up_proj.weight": "model-00001-of-00002.safetensors",
|
| 76 |
+
"model.layers.16.self_attn.k_proj.weight": "model-00001-of-00002.safetensors",
|
| 77 |
+
"model.layers.16.self_attn.o_proj.weight": "model-00001-of-00002.safetensors",
|
| 78 |
+
"model.layers.16.self_attn.q_proj.weight": "model-00001-of-00002.safetensors",
|
| 79 |
+
"model.layers.16.self_attn.v_proj.weight": "model-00001-of-00002.safetensors",
|
| 80 |
+
"model.layers.17.input_layernorm.weight": "model-00001-of-00002.safetensors",
|
| 81 |
+
"model.layers.17.mlp.down_proj.weight": "model-00001-of-00002.safetensors",
|
| 82 |
+
"model.layers.17.mlp.gate_proj.weight": "model-00001-of-00002.safetensors",
|
| 83 |
+
"model.layers.17.mlp.up_proj.weight": "model-00001-of-00002.safetensors",
|
| 84 |
+
"model.layers.17.self_attn.k_proj.weight": "model-00001-of-00002.safetensors",
|
| 85 |
+
"model.layers.17.self_attn.o_proj.weight": "model-00001-of-00002.safetensors",
|
| 86 |
+
"model.layers.17.self_attn.q_proj.weight": "model-00001-of-00002.safetensors",
|
| 87 |
+
"model.layers.17.self_attn.v_proj.weight": "model-00001-of-00002.safetensors",
|
| 88 |
+
"model.layers.18.input_layernorm.weight": "model-00001-of-00002.safetensors",
|
| 89 |
+
"model.layers.18.mlp.down_proj.weight": "model-00001-of-00002.safetensors",
|
| 90 |
+
"model.layers.18.mlp.gate_proj.weight": "model-00001-of-00002.safetensors",
|
| 91 |
+
"model.layers.18.mlp.up_proj.weight": "model-00001-of-00002.safetensors",
|
| 92 |
+
"model.layers.18.self_attn.k_proj.weight": "model-00001-of-00002.safetensors",
|
| 93 |
+
"model.layers.18.self_attn.o_proj.weight": "model-00001-of-00002.safetensors",
|
| 94 |
+
"model.layers.18.self_attn.q_proj.weight": "model-00001-of-00002.safetensors",
|
| 95 |
+
"model.layers.18.self_attn.v_proj.weight": "model-00001-of-00002.safetensors",
|
| 96 |
+
"model.layers.19.input_layernorm.weight": "model-00001-of-00002.safetensors",
|
| 97 |
+
"model.layers.19.mlp.down_proj.weight": "model-00001-of-00002.safetensors",
|
| 98 |
+
"model.layers.19.mlp.gate_proj.weight": "model-00001-of-00002.safetensors",
|
| 99 |
+
"model.layers.19.mlp.up_proj.weight": "model-00001-of-00002.safetensors",
|
| 100 |
+
"model.layers.19.self_attn.k_proj.weight": "model-00001-of-00002.safetensors",
|
| 101 |
+
"model.layers.19.self_attn.o_proj.weight": "model-00001-of-00002.safetensors",
|
| 102 |
+
"model.layers.19.self_attn.q_proj.weight": "model-00001-of-00002.safetensors",
|
| 103 |
+
"model.layers.19.self_attn.v_proj.weight": "model-00001-of-00002.safetensors",
|
| 104 |
+
"model.layers.2.input_layernorm.weight": "model-00001-of-00002.safetensors",
|
| 105 |
+
"model.layers.2.mlp.down_proj.weight": "model-00001-of-00002.safetensors",
|
| 106 |
+
"model.layers.2.mlp.gate_proj.weight": "model-00001-of-00002.safetensors",
|
| 107 |
+
"model.layers.2.mlp.up_proj.weight": "model-00001-of-00002.safetensors",
|
| 108 |
+
"model.layers.2.self_attn.k_proj.weight": "model-00001-of-00002.safetensors",
|
| 109 |
+
"model.layers.2.self_attn.o_proj.weight": "model-00001-of-00002.safetensors",
|
| 110 |
+
"model.layers.2.self_attn.q_proj.weight": "model-00001-of-00002.safetensors",
|
| 111 |
+
"model.layers.2.self_attn.v_proj.weight": "model-00001-of-00002.safetensors",
|
| 112 |
+
"model.layers.20.input_layernorm.weight": "model-00001-of-00002.safetensors",
|
| 113 |
+
"model.layers.20.mlp.down_proj.weight": "model-00001-of-00002.safetensors",
|
| 114 |
+
"model.layers.20.mlp.gate_proj.weight": "model-00001-of-00002.safetensors",
|
| 115 |
+
"model.layers.20.mlp.up_proj.weight": "model-00001-of-00002.safetensors",
|
| 116 |
+
"model.layers.20.self_attn.k_proj.weight": "model-00001-of-00002.safetensors",
|
| 117 |
+
"model.layers.20.self_attn.o_proj.weight": "model-00001-of-00002.safetensors",
|
| 118 |
+
"model.layers.20.self_attn.q_proj.weight": "model-00001-of-00002.safetensors",
|
| 119 |
+
"model.layers.20.self_attn.v_proj.weight": "model-00001-of-00002.safetensors",
|
| 120 |
+
"model.layers.21.input_layernorm.weight": "model-00001-of-00002.safetensors",
|
| 121 |
+
"model.layers.21.mlp.down_proj.weight": "model-00001-of-00002.safetensors",
|
| 122 |
+
"model.layers.21.mlp.gate_proj.weight": "model-00001-of-00002.safetensors",
|
| 123 |
+
"model.layers.21.mlp.up_proj.weight": "model-00001-of-00002.safetensors",
|
| 124 |
+
"model.layers.21.self_attn.k_proj.weight": "model-00001-of-00002.safetensors",
|
| 125 |
+
"model.layers.21.self_attn.o_proj.weight": "model-00001-of-00002.safetensors",
|
| 126 |
+
"model.layers.21.self_attn.q_proj.weight": "model-00001-of-00002.safetensors",
|
| 127 |
+
"model.layers.21.self_attn.v_proj.weight": "model-00001-of-00002.safetensors",
|
| 128 |
+
"model.layers.22.input_layernorm.weight": "model-00001-of-00002.safetensors",
|
| 129 |
+
"model.layers.22.mlp.down_proj.weight": "model-00001-of-00002.safetensors",
|
| 130 |
+
"model.layers.22.mlp.gate_proj.weight": "model-00001-of-00002.safetensors",
|
| 131 |
+
"model.layers.22.mlp.up_proj.weight": "model-00001-of-00002.safetensors",
|
| 132 |
+
"model.layers.22.self_attn.k_proj.weight": "model-00001-of-00002.safetensors",
|
| 133 |
+
"model.layers.22.self_attn.o_proj.weight": "model-00001-of-00002.safetensors",
|
| 134 |
+
"model.layers.22.self_attn.q_proj.weight": "model-00001-of-00002.safetensors",
|
| 135 |
+
"model.layers.22.self_attn.v_proj.weight": "model-00001-of-00002.safetensors",
|
| 136 |
+
"model.layers.23.input_layernorm.weight": "model-00001-of-00002.safetensors",
|
| 137 |
+
"model.layers.23.mlp.down_proj.weight": "model-00001-of-00002.safetensors",
|
| 138 |
+
"model.layers.23.mlp.gate_proj.weight": "model-00001-of-00002.safetensors",
|
| 139 |
+
"model.layers.23.mlp.up_proj.weight": "model-00001-of-00002.safetensors",
|
| 140 |
+
"model.layers.23.self_attn.k_proj.weight": "model-00001-of-00002.safetensors",
|
| 141 |
+
"model.layers.23.self_attn.o_proj.weight": "model-00001-of-00002.safetensors",
|
| 142 |
+
"model.layers.23.self_attn.q_proj.weight": "model-00001-of-00002.safetensors",
|
| 143 |
+
"model.layers.23.self_attn.v_proj.weight": "model-00001-of-00002.safetensors",
|
| 144 |
+
"model.layers.24.input_layernorm.weight": "model-00002-of-00002.safetensors",
|
| 145 |
+
"model.layers.24.mlp.down_proj.weight": "model-00002-of-00002.safetensors",
|
| 146 |
+
"model.layers.24.mlp.gate_proj.weight": "model-00001-of-00002.safetensors",
|
| 147 |
+
"model.layers.24.mlp.up_proj.weight": "model-00001-of-00002.safetensors",
|
| 148 |
+
"model.layers.24.self_attn.k_proj.weight": "model-00001-of-00002.safetensors",
|
| 149 |
+
"model.layers.24.self_attn.o_proj.weight": "model-00001-of-00002.safetensors",
|
| 150 |
+
"model.layers.24.self_attn.q_proj.weight": "model-00001-of-00002.safetensors",
|
| 151 |
+
"model.layers.24.self_attn.v_proj.weight": "model-00001-of-00002.safetensors",
|
| 152 |
+
"model.layers.25.input_layernorm.weight": "model-00002-of-00002.safetensors",
|
| 153 |
+
"model.layers.25.mlp.down_proj.weight": "model-00002-of-00002.safetensors",
|
| 154 |
+
"model.layers.25.mlp.gate_proj.weight": "model-00002-of-00002.safetensors",
|
| 155 |
+
"model.layers.25.mlp.up_proj.weight": "model-00002-of-00002.safetensors",
|
| 156 |
+
"model.layers.25.self_attn.k_proj.weight": "model-00002-of-00002.safetensors",
|
| 157 |
+
"model.layers.25.self_attn.o_proj.weight": "model-00002-of-00002.safetensors",
|
| 158 |
+
"model.layers.25.self_attn.q_proj.weight": "model-00002-of-00002.safetensors",
|
| 159 |
+
"model.layers.25.self_attn.v_proj.weight": "model-00002-of-00002.safetensors",
|
| 160 |
+
"model.layers.26.input_layernorm.weight": "model-00002-of-00002.safetensors",
|
| 161 |
+
"model.layers.26.mlp.down_proj.weight": "model-00002-of-00002.safetensors",
|
| 162 |
+
"model.layers.26.mlp.gate_proj.weight": "model-00002-of-00002.safetensors",
|
| 163 |
+
"model.layers.26.mlp.up_proj.weight": "model-00002-of-00002.safetensors",
|
| 164 |
+
"model.layers.26.self_attn.k_proj.weight": "model-00002-of-00002.safetensors",
|
| 165 |
+
"model.layers.26.self_attn.o_proj.weight": "model-00002-of-00002.safetensors",
|
| 166 |
+
"model.layers.26.self_attn.q_proj.weight": "model-00002-of-00002.safetensors",
|
| 167 |
+
"model.layers.26.self_attn.v_proj.weight": "model-00002-of-00002.safetensors",
|
| 168 |
+
"model.layers.27.input_layernorm.weight": "model-00002-of-00002.safetensors",
|
| 169 |
+
"model.layers.27.mlp.down_proj.weight": "model-00002-of-00002.safetensors",
|
| 170 |
+
"model.layers.27.mlp.gate_proj.weight": "model-00002-of-00002.safetensors",
|
| 171 |
+
"model.layers.27.mlp.up_proj.weight": "model-00002-of-00002.safetensors",
|
| 172 |
+
"model.layers.27.self_attn.k_proj.weight": "model-00002-of-00002.safetensors",
|
| 173 |
+
"model.layers.27.self_attn.o_proj.weight": "model-00002-of-00002.safetensors",
|
| 174 |
+
"model.layers.27.self_attn.q_proj.weight": "model-00002-of-00002.safetensors",
|
| 175 |
+
"model.layers.27.self_attn.v_proj.weight": "model-00002-of-00002.safetensors",
|
| 176 |
+
"model.layers.28.input_layernorm.weight": "model-00002-of-00002.safetensors",
|
| 177 |
+
"model.layers.28.mlp.down_proj.weight": "model-00002-of-00002.safetensors",
|
| 178 |
+
"model.layers.28.mlp.gate_proj.weight": "model-00002-of-00002.safetensors",
|
| 179 |
+
"model.layers.28.mlp.up_proj.weight": "model-00002-of-00002.safetensors",
|
| 180 |
+
"model.layers.28.self_attn.k_proj.weight": "model-00002-of-00002.safetensors",
|
| 181 |
+
"model.layers.28.self_attn.o_proj.weight": "model-00002-of-00002.safetensors",
|
| 182 |
+
"model.layers.28.self_attn.q_proj.weight": "model-00002-of-00002.safetensors",
|
| 183 |
+
"model.layers.28.self_attn.v_proj.weight": "model-00002-of-00002.safetensors",
|
| 184 |
+
"model.layers.29.input_layernorm.weight": "model-00002-of-00002.safetensors",
|
| 185 |
+
"model.layers.29.mlp.down_proj.weight": "model-00002-of-00002.safetensors",
|
| 186 |
+
"model.layers.29.mlp.gate_proj.weight": "model-00002-of-00002.safetensors",
|
| 187 |
+
"model.layers.29.mlp.up_proj.weight": "model-00002-of-00002.safetensors",
|
| 188 |
+
"model.layers.29.self_attn.k_proj.weight": "model-00002-of-00002.safetensors",
|
| 189 |
+
"model.layers.29.self_attn.o_proj.weight": "model-00002-of-00002.safetensors",
|
| 190 |
+
"model.layers.29.self_attn.q_proj.weight": "model-00002-of-00002.safetensors",
|
| 191 |
+
"model.layers.29.self_attn.v_proj.weight": "model-00002-of-00002.safetensors",
|
| 192 |
+
"model.layers.3.input_layernorm.weight": "model-00001-of-00002.safetensors",
|
| 193 |
+
"model.layers.3.mlp.down_proj.weight": "model-00001-of-00002.safetensors",
|
| 194 |
+
"model.layers.3.mlp.gate_proj.weight": "model-00001-of-00002.safetensors",
|
| 195 |
+
"model.layers.3.mlp.up_proj.weight": "model-00001-of-00002.safetensors",
|
| 196 |
+
"model.layers.3.self_attn.k_proj.weight": "model-00001-of-00002.safetensors",
|
| 197 |
+
"model.layers.3.self_attn.o_proj.weight": "model-00001-of-00002.safetensors",
|
| 198 |
+
"model.layers.3.self_attn.q_proj.weight": "model-00001-of-00002.safetensors",
|
| 199 |
+
"model.layers.3.self_attn.v_proj.weight": "model-00001-of-00002.safetensors",
|
| 200 |
+
"model.layers.30.input_layernorm.weight": "model-00002-of-00002.safetensors",
|
| 201 |
+
"model.layers.30.mlp.down_proj.weight": "model-00002-of-00002.safetensors",
|
| 202 |
+
"model.layers.30.mlp.gate_proj.weight": "model-00002-of-00002.safetensors",
|
| 203 |
+
"model.layers.30.mlp.up_proj.weight": "model-00002-of-00002.safetensors",
|
| 204 |
+
"model.layers.30.self_attn.k_proj.weight": "model-00002-of-00002.safetensors",
|
| 205 |
+
"model.layers.30.self_attn.o_proj.weight": "model-00002-of-00002.safetensors",
|
| 206 |
+
"model.layers.30.self_attn.q_proj.weight": "model-00002-of-00002.safetensors",
|
| 207 |
+
"model.layers.30.self_attn.v_proj.weight": "model-00002-of-00002.safetensors",
|
| 208 |
+
"model.layers.31.input_layernorm.weight": "model-00002-of-00002.safetensors",
|
| 209 |
+
"model.layers.31.mlp.down_proj.weight": "model-00002-of-00002.safetensors",
|
| 210 |
+
"model.layers.31.mlp.gate_proj.weight": "model-00002-of-00002.safetensors",
|
| 211 |
+
"model.layers.31.mlp.up_proj.weight": "model-00002-of-00002.safetensors",
|
| 212 |
+
"model.layers.31.self_attn.k_proj.weight": "model-00002-of-00002.safetensors",
|
| 213 |
+
"model.layers.31.self_attn.o_proj.weight": "model-00002-of-00002.safetensors",
|
| 214 |
+
"model.layers.31.self_attn.q_proj.weight": "model-00002-of-00002.safetensors",
|
| 215 |
+
"model.layers.31.self_attn.v_proj.weight": "model-00002-of-00002.safetensors",
|
| 216 |
+
"model.layers.32.input_layernorm.weight": "model-00002-of-00002.safetensors",
|
| 217 |
+
"model.layers.32.mlp.down_proj.weight": "model-00002-of-00002.safetensors",
|
| 218 |
+
"model.layers.32.mlp.gate_proj.weight": "model-00002-of-00002.safetensors",
|
| 219 |
+
"model.layers.32.mlp.up_proj.weight": "model-00002-of-00002.safetensors",
|
| 220 |
+
"model.layers.32.self_attn.k_proj.weight": "model-00002-of-00002.safetensors",
|
| 221 |
+
"model.layers.32.self_attn.o_proj.weight": "model-00002-of-00002.safetensors",
|
| 222 |
+
"model.layers.32.self_attn.q_proj.weight": "model-00002-of-00002.safetensors",
|
| 223 |
+
"model.layers.32.self_attn.v_proj.weight": "model-00002-of-00002.safetensors",
|
| 224 |
+
"model.layers.33.input_layernorm.weight": "model-00002-of-00002.safetensors",
|
| 225 |
+
"model.layers.33.mlp.down_proj.weight": "model-00002-of-00002.safetensors",
|
| 226 |
+
"model.layers.33.mlp.gate_proj.weight": "model-00002-of-00002.safetensors",
|
| 227 |
+
"model.layers.33.mlp.up_proj.weight": "model-00002-of-00002.safetensors",
|
| 228 |
+
"model.layers.33.self_attn.k_proj.weight": "model-00002-of-00002.safetensors",
|
| 229 |
+
"model.layers.33.self_attn.o_proj.weight": "model-00002-of-00002.safetensors",
|
| 230 |
+
"model.layers.33.self_attn.q_proj.weight": "model-00002-of-00002.safetensors",
|
| 231 |
+
"model.layers.33.self_attn.v_proj.weight": "model-00002-of-00002.safetensors",
|
| 232 |
+
"model.layers.34.input_layernorm.weight": "model-00002-of-00002.safetensors",
|
| 233 |
+
"model.layers.34.mlp.down_proj.weight": "model-00002-of-00002.safetensors",
|
| 234 |
+
"model.layers.34.mlp.gate_proj.weight": "model-00002-of-00002.safetensors",
|
| 235 |
+
"model.layers.34.mlp.up_proj.weight": "model-00002-of-00002.safetensors",
|
| 236 |
+
"model.layers.34.self_attn.k_proj.weight": "model-00002-of-00002.safetensors",
|
| 237 |
+
"model.layers.34.self_attn.o_proj.weight": "model-00002-of-00002.safetensors",
|
| 238 |
+
"model.layers.34.self_attn.q_proj.weight": "model-00002-of-00002.safetensors",
|
| 239 |
+
"model.layers.34.self_attn.v_proj.weight": "model-00002-of-00002.safetensors",
|
| 240 |
+
"model.layers.35.input_layernorm.weight": "model-00002-of-00002.safetensors",
|
| 241 |
+
"model.layers.35.mlp.down_proj.weight": "model-00002-of-00002.safetensors",
|
| 242 |
+
"model.layers.35.mlp.gate_proj.weight": "model-00002-of-00002.safetensors",
|
| 243 |
+
"model.layers.35.mlp.up_proj.weight": "model-00002-of-00002.safetensors",
|
| 244 |
+
"model.layers.35.self_attn.k_proj.weight": "model-00002-of-00002.safetensors",
|
| 245 |
+
"model.layers.35.self_attn.o_proj.weight": "model-00002-of-00002.safetensors",
|
| 246 |
+
"model.layers.35.self_attn.q_proj.weight": "model-00002-of-00002.safetensors",
|
| 247 |
+
"model.layers.35.self_attn.v_proj.weight": "model-00002-of-00002.safetensors",
|
| 248 |
+
"model.layers.4.input_layernorm.weight": "model-00001-of-00002.safetensors",
|
| 249 |
+
"model.layers.4.mlp.down_proj.weight": "model-00001-of-00002.safetensors",
|
| 250 |
+
"model.layers.4.mlp.gate_proj.weight": "model-00001-of-00002.safetensors",
|
| 251 |
+
"model.layers.4.mlp.up_proj.weight": "model-00001-of-00002.safetensors",
|
| 252 |
+
"model.layers.4.self_attn.k_proj.weight": "model-00001-of-00002.safetensors",
|
| 253 |
+
"model.layers.4.self_attn.o_proj.weight": "model-00001-of-00002.safetensors",
|
| 254 |
+
"model.layers.4.self_attn.q_proj.weight": "model-00001-of-00002.safetensors",
|
| 255 |
+
"model.layers.4.self_attn.v_proj.weight": "model-00001-of-00002.safetensors",
|
| 256 |
+
"model.layers.5.input_layernorm.weight": "model-00001-of-00002.safetensors",
|
| 257 |
+
"model.layers.5.mlp.down_proj.weight": "model-00001-of-00002.safetensors",
|
| 258 |
+
"model.layers.5.mlp.gate_proj.weight": "model-00001-of-00002.safetensors",
|
| 259 |
+
"model.layers.5.mlp.up_proj.weight": "model-00001-of-00002.safetensors",
|
| 260 |
+
"model.layers.5.self_attn.k_proj.weight": "model-00001-of-00002.safetensors",
|
| 261 |
+
"model.layers.5.self_attn.o_proj.weight": "model-00001-of-00002.safetensors",
|
| 262 |
+
"model.layers.5.self_attn.q_proj.weight": "model-00001-of-00002.safetensors",
|
| 263 |
+
"model.layers.5.self_attn.v_proj.weight": "model-00001-of-00002.safetensors",
|
| 264 |
+
"model.layers.6.input_layernorm.weight": "model-00001-of-00002.safetensors",
|
| 265 |
+
"model.layers.6.mlp.down_proj.weight": "model-00001-of-00002.safetensors",
|
| 266 |
+
"model.layers.6.mlp.gate_proj.weight": "model-00001-of-00002.safetensors",
|
| 267 |
+
"model.layers.6.mlp.up_proj.weight": "model-00001-of-00002.safetensors",
|
| 268 |
+
"model.layers.6.self_attn.k_proj.weight": "model-00001-of-00002.safetensors",
|
| 269 |
+
"model.layers.6.self_attn.o_proj.weight": "model-00001-of-00002.safetensors",
|
| 270 |
+
"model.layers.6.self_attn.q_proj.weight": "model-00001-of-00002.safetensors",
|
| 271 |
+
"model.layers.6.self_attn.v_proj.weight": "model-00001-of-00002.safetensors",
|
| 272 |
+
"model.layers.7.input_layernorm.weight": "model-00001-of-00002.safetensors",
|
| 273 |
+
"model.layers.7.mlp.down_proj.weight": "model-00001-of-00002.safetensors",
|
| 274 |
+
"model.layers.7.mlp.gate_proj.weight": "model-00001-of-00002.safetensors",
|
| 275 |
+
"model.layers.7.mlp.up_proj.weight": "model-00001-of-00002.safetensors",
|
| 276 |
+
"model.layers.7.self_attn.k_proj.weight": "model-00001-of-00002.safetensors",
|
| 277 |
+
"model.layers.7.self_attn.o_proj.weight": "model-00001-of-00002.safetensors",
|
| 278 |
+
"model.layers.7.self_attn.q_proj.weight": "model-00001-of-00002.safetensors",
|
| 279 |
+
"model.layers.7.self_attn.v_proj.weight": "model-00001-of-00002.safetensors",
|
| 280 |
+
"model.layers.8.input_layernorm.weight": "model-00001-of-00002.safetensors",
|
| 281 |
+
"model.layers.8.mlp.down_proj.weight": "model-00001-of-00002.safetensors",
|
| 282 |
+
"model.layers.8.mlp.gate_proj.weight": "model-00001-of-00002.safetensors",
|
| 283 |
+
"model.layers.8.mlp.up_proj.weight": "model-00001-of-00002.safetensors",
|
| 284 |
+
"model.layers.8.self_attn.k_proj.weight": "model-00001-of-00002.safetensors",
|
| 285 |
+
"model.layers.8.self_attn.o_proj.weight": "model-00001-of-00002.safetensors",
|
| 286 |
+
"model.layers.8.self_attn.q_proj.weight": "model-00001-of-00002.safetensors",
|
| 287 |
+
"model.layers.8.self_attn.v_proj.weight": "model-00001-of-00002.safetensors",
|
| 288 |
+
"model.layers.9.input_layernorm.weight": "model-00001-of-00002.safetensors",
|
| 289 |
+
"model.layers.9.mlp.down_proj.weight": "model-00001-of-00002.safetensors",
|
| 290 |
+
"model.layers.9.mlp.gate_proj.weight": "model-00001-of-00002.safetensors",
|
| 291 |
+
"model.layers.9.mlp.up_proj.weight": "model-00001-of-00002.safetensors",
|
| 292 |
+
"model.layers.9.self_attn.k_proj.weight": "model-00001-of-00002.safetensors",
|
| 293 |
+
"model.layers.9.self_attn.o_proj.weight": "model-00001-of-00002.safetensors",
|
| 294 |
+
"model.layers.9.self_attn.q_proj.weight": "model-00001-of-00002.safetensors",
|
| 295 |
+
"model.layers.9.self_attn.v_proj.weight": "model-00001-of-00002.safetensors",
|
| 296 |
+
"model.norm.weight": "model-00002-of-00002.safetensors",
|
| 297 |
+
"stop_predictor.0.bias": "model-00002-of-00002.safetensors",
|
| 298 |
+
"stop_predictor.0.weight": "model-00002-of-00002.safetensors",
|
| 299 |
+
"stop_predictor.1.bias": "model-00002-of-00002.safetensors",
|
| 300 |
+
"stop_predictor.1.weight": "model-00002-of-00002.safetensors",
|
| 301 |
+
"stop_predictor.3.bias": "model-00002-of-00002.safetensors",
|
| 302 |
+
"stop_predictor.3.weight": "model-00002-of-00002.safetensors"
|
| 303 |
+
}
|
| 304 |
+
}
|
modeling_rumik_oss.py
ADDED
|
@@ -0,0 +1,161 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
"""rumik-oss 1: text -> flattened Mimi codec tokens.
|
| 2 |
+
|
| 3 |
+
This model produces *audio tokens*, not waveforms. Decoding them to audio is
|
| 4 |
+
the caller's job and needs the Mimi codec (shipped in ``codec/``)::
|
| 5 |
+
|
| 6 |
+
ids = model.generate_audio(**inputs) # prompt + audio
|
| 7 |
+
tokens = ids[0].tolist()[inputs.input_ids.shape[1]:] # drop the prompt
|
| 8 |
+
codes = model.audio_tokens_to_codes(tokens) # [1, 8, T] for Mimi
|
| 9 |
+
wav = mimi.decode(codes).audio_values # your call
|
| 10 |
+
"""
|
| 11 |
+
from __future__ import annotations
|
| 12 |
+
|
| 13 |
+
import torch
|
| 14 |
+
from torch import nn
|
| 15 |
+
from transformers.models.cohere2.modeling_cohere2 import Cohere2ForCausalLM
|
| 16 |
+
|
| 17 |
+
from .configuration_rumik_oss import RumikOSSConfig
|
| 18 |
+
|
| 19 |
+
|
| 20 |
+
class RumikOSSForCausalLM(Cohere2ForCausalLM):
|
| 21 |
+
config_class = RumikOSSConfig
|
| 22 |
+
|
| 23 |
+
def __init__(self, config):
|
| 24 |
+
super().__init__(config)
|
| 25 |
+
hidden = int(config.hidden_size)
|
| 26 |
+
self.stop_predictor = nn.Sequential(
|
| 27 |
+
nn.LayerNorm(hidden),
|
| 28 |
+
nn.Linear(hidden, max(64, hidden // 4)),
|
| 29 |
+
nn.GELU(),
|
| 30 |
+
nn.Linear(max(64, hidden // 4), 1),
|
| 31 |
+
)
|
| 32 |
+
|
| 33 |
+
# ---- audio vocabulary -------------------------------------------------
|
| 34 |
+
def audio_token_ids(self, device=None) -> torch.Tensor:
|
| 35 |
+
"""Every id the model may legally emit inside an <audio> span.
|
| 36 |
+
|
| 37 |
+
Derived from the config, so callers no longer have to scan the
|
| 38 |
+
tokenizer vocabulary for ``<code>_<quantizer>`` tokens.
|
| 39 |
+
"""
|
| 40 |
+
c = self.config
|
| 41 |
+
if c.first_unit_id is None:
|
| 42 |
+
raise ValueError(
|
| 43 |
+
"config.first_unit_id is unset; pass allowed_ids explicitly or "
|
| 44 |
+
"add first_unit_id/last_unit_id to config.json.")
|
| 45 |
+
ids = torch.arange(int(c.first_unit_id), int(c.last_unit_id) + 1, dtype=torch.long)
|
| 46 |
+
end = torch.tensor([int(c.audio_end_token_id)], dtype=torch.long)
|
| 47 |
+
return torch.cat((ids, end)).to(device if device is not None else self.device)
|
| 48 |
+
|
| 49 |
+
def audio_tokens_to_codes(self, token_ids) -> torch.Tensor:
|
| 50 |
+
"""Generated ids -> ``[1, num_quantizers, num_frames]`` codec codes.
|
| 51 |
+
|
| 52 |
+
Shaped for ``MimiModel.decode``. Purely arithmetic -- no tokenizer, no
|
| 53 |
+
codec, no audio. Pass only the generated tail, not the prompt.
|
| 54 |
+
|
| 55 |
+
A token that breaks the round robin does not end the audio: the
|
| 56 |
+
partial frame is dropped and the next complete frame is picked up
|
| 57 |
+
again, so one bad token costs one frame rather than the rest of the
|
| 58 |
+
clip. ``</audio>`` ends it.
|
| 59 |
+
"""
|
| 60 |
+
c = self.config
|
| 61 |
+
first, last, Q = int(c.first_unit_id), int(c.last_unit_id), int(c.num_quantizers)
|
| 62 |
+
end_id = int(c.audio_end_token_id)
|
| 63 |
+
if torch.is_tensor(token_ids):
|
| 64 |
+
token_ids = token_ids.flatten().tolist()
|
| 65 |
+
|
| 66 |
+
frames: list[list[int]] = []
|
| 67 |
+
frame: list[int] = []
|
| 68 |
+
for tid in (int(t) for t in token_ids):
|
| 69 |
+
if tid == end_id:
|
| 70 |
+
break
|
| 71 |
+
if not first <= tid <= last:
|
| 72 |
+
frame = [] # stray token: resync
|
| 73 |
+
continue
|
| 74 |
+
code, q = divmod(tid - first, Q)
|
| 75 |
+
if q == len(frame):
|
| 76 |
+
frame.append(code)
|
| 77 |
+
if len(frame) == Q:
|
| 78 |
+
frames.append(frame)
|
| 79 |
+
frame = []
|
| 80 |
+
else: # off the round robin
|
| 81 |
+
frame = [code] if q == 0 else []
|
| 82 |
+
if not frames:
|
| 83 |
+
raise ValueError(
|
| 84 |
+
f"no complete codec frame in {len(token_ids)} tokens "
|
| 85 |
+
f"(need at least {Q})")
|
| 86 |
+
return torch.tensor(frames, dtype=torch.long).T.unsqueeze(0)
|
| 87 |
+
|
| 88 |
+
# ---- generation -------------------------------------------------------
|
| 89 |
+
@staticmethod
|
| 90 |
+
def _constrained_sample(scores, do_sample, temperature, top_k):
|
| 91 |
+
# NB: deliberately not named `_sample`. `GenerationMixin._sample` is the
|
| 92 |
+
# method `generate()` dispatches to, and shadowing it makes every call
|
| 93 |
+
# to `generate()` fail with a TypeError on `logits_processor`.
|
| 94 |
+
if not do_sample:
|
| 95 |
+
return scores.argmax(dim=-1, keepdim=True)
|
| 96 |
+
scores = scores / max(float(temperature), 1e-5)
|
| 97 |
+
if int(top_k) > 0:
|
| 98 |
+
k = min(int(top_k), scores.shape[-1])
|
| 99 |
+
cutoff = torch.topk(scores, k, dim=-1).values[:, -1:]
|
| 100 |
+
scores = scores.masked_fill(scores < cutoff, torch.finfo(scores.dtype).min)
|
| 101 |
+
return torch.multinomial(torch.softmax(scores.float(), dim=-1), 1)
|
| 102 |
+
|
| 103 |
+
@torch.inference_mode()
|
| 104 |
+
def generate_audio(
|
| 105 |
+
self,
|
| 106 |
+
input_ids,
|
| 107 |
+
attention_mask,
|
| 108 |
+
allowed_ids=None,
|
| 109 |
+
max_new_tokens=2048,
|
| 110 |
+
min_new_tokens=8,
|
| 111 |
+
temperature=0.8,
|
| 112 |
+
top_k=30,
|
| 113 |
+
do_sample=True,
|
| 114 |
+
):
|
| 115 |
+
"""Autoregressively emit audio tokens, ending at ``</audio>``.
|
| 116 |
+
|
| 117 |
+
``allowed_ids`` defaults to the audio vocabulary from the config.
|
| 118 |
+
"""
|
| 119 |
+
if allowed_ids is None:
|
| 120 |
+
allowed_ids = self.audio_token_ids(device=input_ids.device)
|
| 121 |
+
out = self(
|
| 122 |
+
input_ids=input_ids,
|
| 123 |
+
attention_mask=attention_mask,
|
| 124 |
+
use_cache=True,
|
| 125 |
+
output_hidden_states=True,
|
| 126 |
+
return_dict=True,
|
| 127 |
+
)
|
| 128 |
+
emitted = input_ids
|
| 129 |
+
cache = out.past_key_values
|
| 130 |
+
scores = out.logits[:, -1, :]
|
| 131 |
+
hidden = out.hidden_states[-1][:, -1:, :]
|
| 132 |
+
mask = attention_mask
|
| 133 |
+
allowed_ids = allowed_ids.to(scores.device)
|
| 134 |
+
audio_end_id = int(self.config.audio_end_token_id)
|
| 135 |
+
for step in range(int(max_new_tokens)):
|
| 136 |
+
if step >= int(min_new_tokens):
|
| 137 |
+
stop = torch.sigmoid(self.stop_predictor(hidden).squeeze(-1))
|
| 138 |
+
if bool((stop > 0.5).all()):
|
| 139 |
+
eos = input_ids.new_full((input_ids.shape[0], 1), audio_end_id)
|
| 140 |
+
return torch.cat((emitted, eos), dim=1)
|
| 141 |
+
restricted = torch.full_like(scores, torch.finfo(scores.dtype).min)
|
| 142 |
+
restricted.index_copy_(1, allowed_ids, scores.index_select(1, allowed_ids))
|
| 143 |
+
if step < int(min_new_tokens):
|
| 144 |
+
restricted[:, audio_end_id] = torch.finfo(scores.dtype).min
|
| 145 |
+
token = self._constrained_sample(restricted, do_sample, temperature, top_k)
|
| 146 |
+
emitted = torch.cat((emitted, token), dim=1)
|
| 147 |
+
if bool((token == audio_end_id).all()):
|
| 148 |
+
break
|
| 149 |
+
mask = torch.cat((mask, torch.ones_like(token)), dim=1)
|
| 150 |
+
out = self(
|
| 151 |
+
input_ids=token,
|
| 152 |
+
attention_mask=mask,
|
| 153 |
+
past_key_values=cache,
|
| 154 |
+
use_cache=True,
|
| 155 |
+
output_hidden_states=True,
|
| 156 |
+
return_dict=True,
|
| 157 |
+
)
|
| 158 |
+
cache = out.past_key_values
|
| 159 |
+
scores = out.logits[:, -1, :]
|
| 160 |
+
hidden = out.hidden_states[-1][:, -1:, :]
|
| 161 |
+
return emitted
|
requirements-server.txt
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Optional web UI (server.py). Install on top of requirements.txt.
|
| 2 |
+
-r requirements.txt
|
| 3 |
+
fastapi>=0.115
|
| 4 |
+
uvicorn>=0.30
|
| 5 |
+
pydantic>=2.7
|
requirements.txt
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Model inference: generating audio tokens.
|
| 2 |
+
torch>=2.4
|
| 3 |
+
transformers>=4.57,<6
|
| 4 |
+
huggingface_hub>=0.36
|
| 5 |
+
accelerate>=1.0
|
| 6 |
+
safetensors>=0.6,<1
|
| 7 |
+
soundfile>=0.12
|
samples/aisha.wav
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:a8cffe7c944f8c5ffb9c55aa531703415cd90ee973a3f7cd5b7954237ffd7373
|
| 3 |
+
size 272684
|
samples/ira-professional-steady.wav
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:4b7497b0feb0a6d740a2c43ae6a19e2f5a0f9544e60df7695175380c71f4b74c
|
| 3 |
+
size 261164
|
samples/ira-sad-slow.wav
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:76b2afb51895845b60b245d1d29a76434127bcddf63610e6b96a7ad12439edc9
|
| 3 |
+
size 272684
|
samples/ira.wav
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:50dd1eba178af1c81777e94b6cffc706d41b7e730fa4d859ea82f8d18f275c2c
|
| 3 |
+
size 318764
|
samples/showcase/01-the-second-cup.wav
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:d9d31a7adf00f7cf72fa0ca3285fe850c4db9728c66455c483bb6dc3cedd988c
|
| 3 |
+
size 526124
|
samples/showcase/02-one-last-message.wav
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:5d35f12fd833148aff430fe4bdaadd4a92caaf1455e747f2f52a5fede877e391
|
| 3 |
+
size 710444
|
samples/showcase/03-we-made-it.wav
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:924f7c9f65914ab972a81990c0363dcf8f28a565eb325d3c0ff4131ace2f79f6
|
| 3 |
+
size 568364
|
samples/showcase/04-a-broken-promise.wav
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:365acb53fdd63321dff3b720449812e9963bbb96b89fdb712c78a35afbd6a04e
|
| 3 |
+
size 430124
|
samples/showcase/05-ready-for-departure.wav
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:1c2d19e7d21fa780de36d51147a2bb981552ba34ce96d752e1c128073ae01c32
|
| 3 |
+
size 618284
|
samples/showcase/06-home-again.wav
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:f9ddc887bcfee497e51cc86aa05e689d1f9678e875129a8ba93f45eeffd70887
|
| 3 |
+
size 606764
|
samples/showcase/07-a-place-to-read.wav
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:5957a739b5bbdaaa91e68341fde47b8839b85455248dd0348740e9db38f61738
|
| 3 |
+
size 691244
|