6 ms·
> It’s that KittenTTS is Apache-2.0 Have you seen the code[1] in the repo? It uses phonemizer[2] which is GPL-3.0 licensed. In its current state, it's effectiv
by woadwarrior01 1y ago
> It’s that KittenTTS is Apache-2.0
Have you seen the code[1] in the repo? It uses phonemizer[2] which is GPL-3.0 licensed. In its current state, it's effectively GPL licensed.
[1]: https://github.com/KittenML/KittenTTS/blob/main/kittentts/onnx_model.py#L3 https://github.com/KittenML/KittenTTS/blob/main/kittentts/on...
[2]: https://github.com/bootphon/phonemizer https://github.com/bootphon/phonemizer
Edit: It looks like I replied to an LLM generated comment.
- jacereda 1y agohttps://github.com/KittenML/KittenTTS/issues/17 https://github.com/KittenML/KittenTTS/issues/17
- dspillett 1y ago> IANAL, but AFAICS this leaves 2 options, switching the license or removing that dependency. There is a third option: asking the project for an exception. Though that is unlikely to be granted¹ leaving you back with just the other two options. And of course a forth choice: just ignore the license. This is the option taken by companies like Onyx, whose products I might otherwise be interested in… ---- [1] Those of us who pick GPL3 or AGPL generally do so to keep things definite and an exception would muddy the waters, also it might not even be possible if the project has many maintainers as relicensing would require agreement from all who have provided code that is in the current release. Furthermore, if it has inherited the license from one of its dependencies, an exception is even less practical.
- woadwarrior01 1y ago> There is a third option: asking the project for an exception. IIUC, the project isn't at the liberty to grant such an exception because it inherits its GPL license from espeak-ng.
- dspillett 1y agoAh, yes, good catch, I didn't look deeper into the dependency tree at all. I'll update my footnote to include that as one of the reasons an exception may be impossible (or at least highly impractical).
- wongarsu 1y agoA fourth option would be a kind of dual-licensing: the project as-is is available under GPL-3.0, but the source code in this repository excluding any dependencies is also available under Apache 2.0 Any user would still effectively be bound by the GPL-3.0, but if someone can remove the GPL dependencies they could use the project under Apache
- dspillett 1y agoThat is an option for the publisher of the library, not the consumer of it. If it isn't already done then asking for it to be done is the same as asking for an exception otherwise (option three).
- wongarsu 1y agoThe use of the library is four lines. Three set up the library (`phonemizer.backend.EspeakBackend(language="en-us", preserve_punctuation=True, with_stress=True)`), the other calls it (`phonemes_list = self.phonemizer.phonemize([text])`). Plus I guess the import statements. Even ignoring Google vs Oracle I don't think those lines by themselves meet any threshold of originality. Obviously you can't run them (with the original library) without complying with the GPL. But I don't see why I couldn't independently of that also give you this text file under Apache 2.0 to do with as you want (which for the record still doesn't allow you to run them with the original library without complying with the GPL, but that'd be phoneme forcing you to do that, not this project) You would have to be very specific about the dual-licensing to avoid confusion about what you are allowed to do under Apache conditions though. You can't just say "it's dual-licensed"
- joshuaissac 1y agoYou could even extract out the parts that do not call the GPL library into an upstream project under the Apache 2.0 licence, and pull in both that and the GPL library in the downstream project, relying on Apache 2.0 -> GPL 3.0 compatibility instead of explicit dual licensing to allow the combined work to be distributed under GPLv3.
- ape4 1y agoOnce the license issues are resolved it would nice if you could install it on a distro with the normal package manager.
- keyKeeper 1y agoOkay, what's stopping you from feeding the code into an LLM and re-write it and make it yours? You can even add extra steps like make it analyze the code block by block then supervise it as it is rewriting it. Bam. AI age IP freedom. Morals may stop you but other than that? IMHO all open source code is public domain code if anyone is willing to spend some AI tokens.
- woadwarrior01 1y agoTell me you haven't used LLMs on large, non-trivial codebases without telling me... :)
- keyKeeper 1y agoTell me you don't know how to use LLMs properly without telling me. You don't give the whole codebase to an LLM and expect it to have one shot output. Instead, you break it down and and write the code block by block. Then the size if the codebase doesn't matter. You use the LLM as a tool, it is not supposed to replace you. You don't try to become George from Jetsons who is just pressing a button and doesn't touch anything, instead you are on top of it as the LLM does the coding. You test the code on every step to see if the implementation behaves as expected. Do enough of this and you have proper, full "bespoke" software.
- akx 1y agoI'll help you along - this is the core function that Kitten ends up calling. Good luck! https://github.com/espeak-ng/espeak-ng/blob/a4ca101c99de35345f89df58195b2159748b7092/src/libespeak-ng/translate.c#L924-L1677 https://github.com/espeak-ng/espeak-ng/blob/a4ca101c99de3534...
- Twirrim 1y agoThat would be a derivative work, and still be subject to the license terms and conditions, at best. There are standard ways to approach this called clean room engineering. https://en.m.wikipedia.org/wiki/Clean-room_design https://en.m.wikipedia.org/wiki/Clean-room_design One person reads the code and produces a detailed technical specification. Someone reviews it to ensure that there is nothing in there that could be classified as copyrighted material, then a third person (who has never seen the original code) implements the spec. You could use an LLM at both stages, but you'd have to be able to prove that the LLM that does the implementation had no prior knowledge of the code in question... Which given how LLMs have been trained seems to me to be very dubious territory for now until that legal situation gets resolved.
- gorgoiler 1y agoThis would only apply if they were distributing the GPL licensed code alongside their own code. If my MIT-licensed one-line Python library has this line of code… run([“bash”, “-c”, “echo hello”]) …I’m not suddenly subject to bash’s licensing. For anyone wanting to run my stuff though, they’re going to need to make sure they themselves have bash installed. (But, to argue against my own point, if an OS vendor ships my library alongside a copy of bash, do they have to now relicense my library as GPL?)
- calvinmorrison 1y agoGPL is for boomers at this point. Floppy disks? Distribution? You can use a tool but you cant change it? A DLL call means you need to redistribute your code but forking doesn't? Sillyness
- dboreham 1y agoGPL post-dates network software distribution (we got our first gcc via ftp).
- calvinmorrison 1y agoYes, but if you use open source libraries for your closed source SaaS - thats fine. People get their software _over_ the network delivered to them in a VM (your browser).
- r4indeer 1y ago> This would only apply if they were distributing the GPL licensed code alongside their own code. As far as I understand the FSF's interpretation of their license, that's not true. Even if you only dynamically link to GPL-licensed code, you create a combined work which has to be licensed, as a whole, under the GPL. I don't believe that this extends to calling an external program via its CLI, but that's not what the code in question seems to be doing. (This is not an endorsement, but merely my understanding on how the GPL is supposed to work.)
- woadwarrior01 1y ago
- oezi 1y agoThe issue is even bigger: phonemizer is using espeak-ng, which isn't very good at turning graphemes into phonemes. In other TTS which rely on phonemes (e.g. Zonos) it turned out to be one of the key issues which cause bad generations. And it isn't something you can fix, because the model was trained on bad phonemes (everyone uses Whisper + then phonemizes the text transcript).
- Hackbraten 1y agoGiven that the FSF considers Apache-2.0 to be compatible with GPL-3.0 [0], how could the fact that phonemizer is GPL-3.0 possibly be an issue? [0]: https://www.gnu.org/licenses/license-list.html#apache2 https://www.gnu.org/licenses/license-list.html#apache2
- adastra22 1y agoCompatible means they can be linked together, BUT the result is GPL-3.
- bscphil 1y ago> the result is GPL-3 The result can only be distributed under the terms of the GPL-3. That's actually a crucial difference: there's nothing preventing Kitten TTS from being Apache licensed, soliciting technical contributions under that license, and parts of its code being re-used in other software under that license. Yes, for the time being, this limits what you can do with Kitten TTS if you want to use the software as a whole (e.g. by embedding it into your product), but the license itself is still Apache and that can have value.