Nik Afiq 5238298b55
Some checks failed
CI / test (push) Successful in 6s
CI / build-ai-gateway (push) Failing after 28s
CI / build-ha-gateway (push) Failing after 24s
CI / build-discord-bot (push) Failing after 29s
Add TTS model components and inference server
- Implemented core model components in `modules.py` including various convolutional layers and normalization techniques.
- Added transformation functions in `transforms.py` for piecewise rational quadratic transformations.
- Created utility functions in `utils.py` for checkpoint management, logging, and hyperparameter handling.
- Introduced monotonic alignment functionality with Cython optimization in `monotonic_align`.
- Developed a minimal inference server in `server.py` to handle synthesis requests.
- Updated requirements to include necessary dependencies for Cython and scipy.
2026-07-24 22:38:36 +09:00

49 lines
1.9 KiB
Go

package domain
// Symbols is the checkpoint's trained vocabulary, ported rune-for-rune from
// text/symbols.py (`[_pad] + list(_special) + list(_punctuation) +
// list(_letters) + _dummy`, including the literal backslash inside
// _punctuation's raw Python triple-quoted string, and the 84 "wrong tokens"
// placeholder entries the original training pipeline never sorted out - see
// its own comment: "I trained with wrong tokens... these thing is for that").
var Symbols = buildSymbols()
// SymbolToID mirrors `_symbol_to_id = {s: i for i, s in enumerate(symbols)}`:
// later duplicate runes (e.g. '-' appears in both _special and _punctuation)
// overwrite earlier ones, matching Python dict-construction semantics exactly.
var SymbolToID = buildSymbolToID()
func buildSymbols() []rune {
var symbols []rune
symbols = append(symbols, '_') // _pad
symbols = append(symbols, []rune("-~%#@&*$")...) // _special
symbols = append(symbols, []rune("!\"'(),.:;?{}<>\\^[]/+- ")...) // _punctuation
symbols = append(symbols, []rune("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890")...) // _letters
for range 84 {
symbols = append(symbols, '=') // _dummy
}
return symbols
}
func buildSymbolToID() map[rune]int {
m := make(map[rune]int, len(Symbols))
for i, s := range Symbols {
m[s] = i
}
return m
}
// Intersperse ports commons.py::intersperse: pads seq with item between every
// element and at both ends (used when hps.data.add_blank is true, which it
// is for this checkpoint's configs/uma.json).
func Intersperse(seq []int64, item int64) []int64 {
result := make([]int64, len(seq)*2+1)
for i := range result {
result[i] = item
}
for i, v := range seq {
result[i*2+1] = v
}
return result
}