1{
2 lib,
3 buildPythonPackage,
4 callPackage,
5 fetchFromGitHub,
6
7 # build-system
8 setuptools,
9
10 # dependencies
11 babel,
12 dateparser,
13 gruut-ipa,
14 jsonlines,
15 networkx,
16 num2words,
17 numpy,
18 python-crfsuite,
19
20 # optional dependencies
21 pydub,
22 rapidfuzz,
23
24 # checks
25 pytestCheckHook,
26}:
27
28let
29 langPkgs = [
30 "ar"
31 "ca"
32 "cs"
33 "de"
34 "en"
35 "es"
36 "fa"
37 "fr"
38 "it"
39 "lb"
40 "nl"
41 "pt"
42 "ru"
43 "sv"
44 "sw"
45 ];
46in
47buildPythonPackage rec {
48 pname = "gruut";
49 version = "2.4.0";
50 pyproject = true;
51
52 src = fetchFromGitHub {
53 owner = "rhasspy";
54 repo = "gruut";
55 tag = "v${version}";
56 hash = "sha256-iwde6elsAbICZ+Rc7CPgcZTOux1hweVZc/gf4K+hP9M=";
57 };
58
59 pythonRelaxDeps = true;
60
61 build-system = [ setuptools ];
62
63 dependencies = [
64 babel
65 dateparser
66 gruut-ipa
67 jsonlines
68 networkx
69 num2words
70 numpy
71 python-crfsuite
72 ]
73 ++ optional-dependencies.en;
74
75 optional-dependencies = {
76 train = [
77 pydub
78 rapidfuzz
79 ];
80 }
81 // lib.genAttrs langPkgs (lang: [
82 (callPackage ./language-pack.nix {
83 inherit
84 lang
85 version
86 src
87 build-system
88 ;
89 })
90 ]);
91
92 nativeCheckInputs = [
93 pytestCheckHook
94 ]
95 ++ lib.flatten (lib.attrValues optional-dependencies);
96
97 disabledTests = [
98 # https://github.com/rhasspy/gruut/issues/25
99 "test_lexicon_external"
100
101 # requires mishkal library
102 "test_fa"
103 "test_ar"
104 ];
105
106 pythonImportsCheck = [ "gruut" ];
107
108 meta = with lib; {
109 description = "Tokenizer, text cleaner, and phonemizer for many human languages";
110 mainProgram = "gruut";
111 homepage = "https://github.com/rhasspy/gruut";
112 license = licenses.mit;
113 teams = [ teams.tts ];
114 };
115}