2ndelement commited on
Commit
f1f433f
1 Parent(s): 6d4b2d0
This view is limited to 50 files because it contains too many changes.   See raw diff
Files changed (50) hide show
  1. Dockerfile +296 -0
  2. LGPL_LICENSE +165 -0
  3. LICENSE +9 -0
  4. Makefile +125 -0
  5. README.md +570 -11
  6. _typos.toml +11 -0
  7. build_util/check_release_build.py +70 -0
  8. build_util/codesign.bash +49 -0
  9. build_util/create_venv_and_generate_licenses.bash +24 -0
  10. build_util/merge_update_infos.py +57 -0
  11. build_util/modify_pyinstaller.bash +25 -0
  12. build_util/process_voicevox_resource.bash +26 -0
  13. default.csv +62 -0
  14. default_setting.yml +2 -0
  15. docs/VOICEVOX音声合成エンジンとの連携.md +7 -0
  16. docs/api/.gitkeep +0 -0
  17. docs/licenses/cuda/EULA.txt +1598 -0
  18. docs/licenses/cudnn/LICENSE +291 -0
  19. docs/licenses/open_jtalk/COPYING +39 -0
  20. docs/licenses/open_jtalk/mecab-naist-jdic/COPYING +69 -0
  21. docs/licenses/open_jtalk/mecab/COPYING +69 -0
  22. docs/licenses/world/LICENSE.txt +39 -0
  23. docs/res/マルチエンジン概念図.svg +35 -0
  24. engine_manifest.json +62 -0
  25. engine_manifest_assets/dependency_licenses.json +8 -0
  26. engine_manifest_assets/downloadable_libraries.json +44 -0
  27. engine_manifest_assets/icon.png +0 -0
  28. engine_manifest_assets/terms_of_service.md +1 -0
  29. engine_manifest_assets/update_infos.json +67 -0
  30. generate_licenses.py +337 -0
  31. get_cost_candidates.py +91 -0
  32. make_docs.py +33 -0
  33. poetry.lock +0 -0
  34. presets.yaml +10 -0
  35. pyproject.toml +82 -0
  36. requirements-dev.txt +83 -0
  37. requirements-license.txt +36 -0
  38. requirements-test.txt +63 -0
  39. requirements.txt +33 -0
  40. run.py +1243 -0
  41. run.spec +85 -0
  42. setup.cfg +36 -0
  43. speaker_info/35b2c544-660e-401e-b503-0e14c635303a/icons/8.png +0 -0
  44. speaker_info/35b2c544-660e-401e-b503-0e14c635303a/metas.json +3 -0
  45. speaker_info/35b2c544-660e-401e-b503-0e14c635303a/policy.md +3 -0
  46. speaker_info/35b2c544-660e-401e-b503-0e14c635303a/portrait.png +0 -0
  47. speaker_info/35b2c544-660e-401e-b503-0e14c635303a/portraits/8.png +0 -0
  48. speaker_info/35b2c544-660e-401e-b503-0e14c635303a/voice_samples/8_001.wav +0 -0
  49. speaker_info/35b2c544-660e-401e-b503-0e14c635303a/voice_samples/8_002.wav +0 -0
  50. speaker_info/35b2c544-660e-401e-b503-0e14c635303a/voice_samples/8_003.wav +0 -0
Dockerfile ADDED
@@ -0,0 +1,296 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # syntax=docker/dockerfile:1.4
2
+
3
+ ARG BASE_IMAGE=ubuntu:20.04
4
+ ARG BASE_RUNTIME_IMAGE=$BASE_IMAGE
5
+
6
+ # Download VOICEVOX Core shared object
7
+ FROM ${BASE_IMAGE} AS download-core-env
8
+ ARG DEBIAN_FRONTEND=noninteractive
9
+
10
+ WORKDIR /work
11
+
12
+ RUN <<EOF
13
+ set -eux
14
+
15
+ apt-get update
16
+ apt-get install -y \
17
+ wget \
18
+ unzip
19
+ apt-get clean
20
+ rm -rf /var/lib/apt/lists/*
21
+ EOF
22
+
23
+ # assert VOICEVOX_CORE_VERSION >= 0.11.0 (ONNX)
24
+ ARG TARGETPLATFORM
25
+ ARG USE_GPU=false
26
+ ARG VOICEVOX_CORE_VERSION=0.14.3
27
+
28
+ RUN <<EOF
29
+ set -eux
30
+
31
+ # Processing Switch
32
+ if [ "${USE_GPU}" = "true" ]; then
33
+ VOICEVOX_CORE_ASSET_ASSET_PROCESSING="gpu"
34
+ else
35
+ VOICEVOX_CORE_ASSET_ASSET_PROCESSING="cpu"
36
+ fi
37
+
38
+ # TARGETARCH Switch
39
+ if [ "${TARGETPLATFORM}" = "linux/amd64" ]; then
40
+ VOICEVOX_CORE_ASSET_TARGETARCH="x64"
41
+ else
42
+ VOICEVOX_CORE_ASSET_TARGETARCH="arm64"
43
+ fi
44
+
45
+ VOICEVOX_CORE_ASSET_PREFIX="voicevox_core-linux-${VOICEVOX_CORE_ASSET_TARGETARCH}-${VOICEVOX_CORE_ASSET_ASSET_PROCESSING}"
46
+
47
+ # Download Core
48
+ VOICEVOX_CORE_ASSET_NAME=${VOICEVOX_CORE_ASSET_PREFIX}-${VOICEVOX_CORE_VERSION}
49
+ wget -nv --show-progress -c -O "./${VOICEVOX_CORE_ASSET_NAME}.zip" "https://github.com/VOICEVOX/voicevox_core/releases/download/${VOICEVOX_CORE_VERSION}/${VOICEVOX_CORE_ASSET_NAME}.zip"
50
+ unzip "./${VOICEVOX_CORE_ASSET_NAME}.zip"
51
+ mkdir -p core
52
+ mv "${VOICEVOX_CORE_ASSET_NAME}"/* core
53
+ rm -rf $VOICEVOX_CORE_ASSET_NAME
54
+ rm "./${VOICEVOX_CORE_ASSET_NAME}.zip"
55
+
56
+ # Move Core to /opt/voicevox_core/
57
+ mkdir /opt/voicevox_core
58
+ mv ./core/* /opt/voicevox_core/
59
+
60
+ # Add /opt/voicevox_core to dynamic library search path
61
+ echo "/opt/voicevox_core" > /etc/ld.so.conf.d/voicevox_core.conf
62
+
63
+ # Update dynamic library search cache
64
+ ldconfig
65
+ EOF
66
+
67
+
68
+ # Download ONNX Runtime
69
+ FROM ${BASE_IMAGE} AS download-onnxruntime-env
70
+ ARG DEBIAN_FRONTEND=noninteractive
71
+
72
+ WORKDIR /work
73
+
74
+ RUN <<EOF
75
+ set -eux
76
+
77
+ apt-get update
78
+ apt-get install -y \
79
+ wget \
80
+ tar
81
+ apt-get clean
82
+ rm -rf /var/lib/apt/lists/*
83
+ EOF
84
+
85
+ ARG TARGETPLATFORM
86
+ ARG USE_GPU=false
87
+ ARG ONNXRUNTIME_VERSION=1.13.1
88
+ RUN <<EOF
89
+ set -eux
90
+
91
+ # Processing Switch
92
+ if [ "${USE_GPU}" = "true" ]; then
93
+ ONNXRUNTIME_PROCESSING="gpu-"
94
+ else
95
+ ONNXRUNTIME_PROCESSING=""
96
+ fi
97
+
98
+ # TARGETARCH Switch
99
+ if [ "${TARGETPLATFORM}" = "linux/amd64" ]; then
100
+ ONNXRUNTIME_TARGETARCH=x64
101
+ else
102
+ ONNXRUNTIME_TARGETARCH=aarch64
103
+ fi
104
+
105
+ ONNXRUNTIME_URL="https://github.com/microsoft/onnxruntime/releases/download/v${ONNXRUNTIME_VERSION}/onnxruntime-linux-${ONNXRUNTIME_TARGETARCH}-${ONNXRUNTIME_PROCESSING}${ONNXRUNTIME_VERSION}.tgz"
106
+
107
+ # Download ONNX Runtime
108
+ wget -nv --show-progress -c -O "./onnxruntime.tgz" "${ONNXRUNTIME_URL}"
109
+
110
+ # Extract ONNX Runtime to /opt/onnxruntime
111
+ mkdir -p /opt/onnxruntime
112
+ tar xf "./onnxruntime.tgz" -C "/opt/onnxruntime" --strip-components 1
113
+ rm ./onnxruntime.tgz
114
+
115
+ # Add /opt/onnxruntime/lib to dynamic library search path
116
+ echo "/opt/onnxruntime/lib" > /etc/ld.so.conf.d/onnxruntime.conf
117
+
118
+ # Update dynamic library search cache
119
+ ldconfig
120
+ EOF
121
+
122
+
123
+ # Compile Python (version locked)
124
+ FROM ${BASE_IMAGE} AS compile-python-env
125
+
126
+ ARG DEBIAN_FRONTEND=noninteractive
127
+
128
+ RUN <<EOF
129
+ set -eux
130
+ apt-get update
131
+ apt-get install -y \
132
+ build-essential \
133
+ libssl-dev \
134
+ zlib1g-dev \
135
+ libbz2-dev \
136
+ libreadline-dev \
137
+ libsqlite3-dev \
138
+ curl \
139
+ libncursesw5-dev \
140
+ xz-utils \
141
+ tk-dev \
142
+ libxml2-dev \
143
+ libxmlsec1-dev \
144
+ libffi-dev \
145
+ liblzma-dev \
146
+ git
147
+ apt-get clean
148
+ rm -rf /var/lib/apt/lists/*
149
+ EOF
150
+
151
+ ARG PYTHON_VERSION=3.11.3
152
+ ARG PYENV_VERSION=v2.3.17
153
+ ARG PYENV_ROOT=/tmp/.pyenv
154
+ ARG PYBUILD_ROOT=/tmp/python-build
155
+ RUN <<EOF
156
+ set -eux
157
+
158
+ git clone -b "${PYENV_VERSION}" https://github.com/pyenv/pyenv.git "$PYENV_ROOT"
159
+ PREFIX="$PYBUILD_ROOT" "$PYENV_ROOT"/plugins/python-build/install.sh
160
+ "$PYBUILD_ROOT/bin/python-build" -v "$PYTHON_VERSION" /opt/python
161
+
162
+ rm -rf "$PYBUILD_ROOT" "$PYENV_ROOT"
163
+ EOF
164
+
165
+ # FIXME: add /opt/python to PATH
166
+ # not working: /etc/profile read only on login shell
167
+ # not working: /etc/environment is the same
168
+ # not suitable: `ENV` is ignored by docker-compose
169
+ # RUN <<EOF
170
+ # set -eux
171
+ # echo "export PATH=/opt/python/bin:\$PATH" > /etc/profile.d/python-path.sh
172
+ # echo "export LD_LIBRARY_PATH=/opt/python/lib:\$LD_LIBRARY_PATH" >> /etc/profile.d/python-path.sh
173
+ # echo "export C_INCLUDE_PATH=/opt/python/include:\$C_INCLUDE_PATH" >> /etc/profile.d/python-path.sh
174
+ #
175
+ # rm -f /etc/ld.so.cache
176
+ # ldconfig
177
+ # EOF
178
+
179
+
180
+ # Runtime
181
+ FROM ${BASE_RUNTIME_IMAGE} AS runtime-env
182
+ ARG DEBIAN_FRONTEND=noninteractive
183
+
184
+ WORKDIR /opt/voicevox_engine
185
+
186
+ # libsndfile1: soundfile shared object
187
+ # ca-certificates: pyopenjtalk dictionary download
188
+ # build-essential: pyopenjtalk local build
189
+ RUN <<EOF
190
+ set -eux
191
+
192
+ apt-get update
193
+ apt-get install -y \
194
+ git \
195
+ wget \
196
+ cmake \
197
+ libsndfile1 \
198
+ ca-certificates \
199
+ build-essential \
200
+ gosu
201
+ apt-get clean
202
+ rm -rf /var/lib/apt/lists/*
203
+
204
+ # Create a general user
205
+ useradd --create-home user
206
+ EOF
207
+
208
+ # Copy python env
209
+ COPY --from=compile-python-env /opt/python /opt/python
210
+
211
+ # Install Python dependencies
212
+ ADD ./requirements.txt /tmp/
213
+ RUN <<EOF
214
+ # Install requirements
215
+ gosu user /opt/python/bin/pip3 install -r /tmp/requirements.txt
216
+ EOF
217
+
218
+ # Copy VOICEVOX Core release
219
+ # COPY --from=download-core-env /etc/ld.so.conf.d/voicevox_core.conf /etc/ld.so.conf.d/voicevox_core.conf
220
+ COPY --from=download-core-env /opt/voicevox_core /opt/voicevox_core
221
+
222
+ # Copy ONNX Runtime
223
+ # COPY --from=download-onnxruntime-env /etc/ld.so.conf.d/onnxruntime.conf /etc/ld.so.conf.d/onnxruntime.conf
224
+ COPY --from=download-onnxruntime-env /opt/onnxruntime /opt/onnxruntime
225
+
226
+ # Add local files
227
+ ADD ./voicevox_engine /opt/voicevox_engine/voicevox_engine
228
+ ADD ./docs /opt/voicevox_engine/docs
229
+ ADD ./run.py ./generate_licenses.py ./presets.yaml ./default.csv ./default_setting.yml ./engine_manifest.json /opt/voicevox_engine/
230
+ ADD ./speaker_info /opt/voicevox_engine/speaker_info
231
+ ADD ./ui_template /opt/voicevox_engine/ui_template
232
+ ADD ./engine_manifest_assets /opt/voicevox_engine/engine_manifest_assets
233
+
234
+ # Replace version
235
+ ARG VOICEVOX_ENGINE_VERSION=latest
236
+ RUN sed -i "s/__version__ = \"latest\"/__version__ = \"${VOICEVOX_ENGINE_VERSION}\"/" /opt/voicevox_engine/voicevox_engine/__init__.py
237
+ RUN sed -i "s/\"version\": \"999\\.999\\.999\"/\"version\": \"${VOICEVOX_ENGINE_VERSION}\"/" /opt/voicevox_engine/engine_manifest.json
238
+
239
+ # Generate licenses.json
240
+ ADD ./requirements-license.txt /tmp/
241
+ RUN <<EOF
242
+ set -eux
243
+
244
+ cd /opt/voicevox_engine
245
+
246
+ # Define temporary env vars
247
+ # /home/user/.local/bin is required to use the commands installed by pip
248
+ export PATH="/home/user/.local/bin:${PATH:-}"
249
+
250
+ gosu user /opt/python/bin/pip3 install -r /tmp/requirements-license.txt
251
+ gosu user /opt/python/bin/python3 generate_licenses.py > /opt/voicevox_engine/engine_manifest_assets/dependency_licenses.json
252
+ cp /opt/voicevox_engine/engine_manifest_assets/dependency_licenses.json /opt/voicevox_engine/licenses.json
253
+ EOF
254
+
255
+ # Keep this layer separated to use layer cache on download failed in local build
256
+ RUN <<EOF
257
+ set -eux
258
+
259
+ # Download openjtalk dictionary
260
+ # try 5 times, sleep 5 seconds before retry
261
+ for i in $(seq 5); do
262
+ EXIT_CODE=0
263
+ gosu user /opt/python/bin/python3 -c "import pyopenjtalk; pyopenjtalk._lazy_init()" || EXIT_CODE=$?
264
+ if [ "$EXIT_CODE" = "0" ]; then
265
+ break
266
+ fi
267
+ sleep 5
268
+ done
269
+
270
+ if [ "$EXIT_CODE" != "0" ]; then
271
+ exit "$EXIT_CODE"
272
+ fi
273
+ EOF
274
+
275
+ # Download Resource
276
+ ARG VOICEVOX_RESOURCE_VERSION=0.14.3-preview.1
277
+ RUN <<EOF
278
+ set -eux
279
+
280
+ # README
281
+ wget -nv --show-progress -c -O "/opt/voicevox_engine/README.md" "https://raw.githubusercontent.com/VOICEVOX/voicevox_resource/${VOICEVOX_RESOURCE_VERSION}/engine/README.md"
282
+ EOF
283
+
284
+ # Create container start shell
285
+ COPY --chmod=775 <<EOF /entrypoint.sh
286
+ #!/bin/bash
287
+ set -eux
288
+
289
+ # Display README for engine
290
+ cat /opt/voicevox_engine/README.md > /dev/stderr
291
+
292
+ exec "\$@"
293
+ EOF
294
+ USER user
295
+ ENTRYPOINT [ "/entrypoint.sh" ]
296
+ CMD [ "/opt/python/bin/python3", "./run.py", "--voicelib_dir", "/opt/voicevox_core/", "--runtime_dir", "/opt/onnxruntime/lib", "--host", "0.0.0.0","--port","7860" ]
LGPL_LICENSE ADDED
@@ -0,0 +1,165 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ GNU LESSER GENERAL PUBLIC LICENSE
2
+ Version 3, 29 June 2007
3
+
4
+ Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
5
+ Everyone is permitted to copy and distribute verbatim copies
6
+ of this license document, but changing it is not allowed.
7
+
8
+
9
+ This version of the GNU Lesser General Public License incorporates
10
+ the terms and conditions of version 3 of the GNU General Public
11
+ License, supplemented by the additional permissions listed below.
12
+
13
+ 0. Additional Definitions.
14
+
15
+ As used herein, "this License" refers to version 3 of the GNU Lesser
16
+ General Public License, and the "GNU GPL" refers to version 3 of the GNU
17
+ General Public License.
18
+
19
+ "The Library" refers to a covered work governed by this License,
20
+ other than an Application or a Combined Work as defined below.
21
+
22
+ An "Application" is any work that makes use of an interface provided
23
+ by the Library, but which is not otherwise based on the Library.
24
+ Defining a subclass of a class defined by the Library is deemed a mode
25
+ of using an interface provided by the Library.
26
+
27
+ A "Combined Work" is a work produced by combining or linking an
28
+ Application with the Library. The particular version of the Library
29
+ with which the Combined Work was made is also called the "Linked
30
+ Version".
31
+
32
+ The "Minimal Corresponding Source" for a Combined Work means the
33
+ Corresponding Source for the Combined Work, excluding any source code
34
+ for portions of the Combined Work that, considered in isolation, are
35
+ based on the Application, and not on the Linked Version.
36
+
37
+ The "Corresponding Application Code" for a Combined Work means the
38
+ object code and/or source code for the Application, including any data
39
+ and utility programs needed for reproducing the Combined Work from the
40
+ Application, but excluding the System Libraries of the Combined Work.
41
+
42
+ 1. Exception to Section 3 of the GNU GPL.
43
+
44
+ You may convey a covered work under sections 3 and 4 of this License
45
+ without being bound by section 3 of the GNU GPL.
46
+
47
+ 2. Conveying Modified Versions.
48
+
49
+ If you modify a copy of the Library, and, in your modifications, a
50
+ facility refers to a function or data to be supplied by an Application
51
+ that uses the facility (other than as an argument passed when the
52
+ facility is invoked), then you may convey a copy of the modified
53
+ version:
54
+
55
+ a) under this License, provided that you make a good faith effort to
56
+ ensure that, in the event an Application does not supply the
57
+ function or data, the facility still operates, and performs
58
+ whatever part of its purpose remains meaningful, or
59
+
60
+ b) under the GNU GPL, with none of the additional permissions of
61
+ this License applicable to that copy.
62
+
63
+ 3. Object Code Incorporating Material from Library Header Files.
64
+
65
+ The object code form of an Application may incorporate material from
66
+ a header file that is part of the Library. You may convey such object
67
+ code under terms of your choice, provided that, if the incorporated
68
+ material is not limited to numerical parameters, data structure
69
+ layouts and accessors, or small macros, inline functions and templates
70
+ (ten or fewer lines in length), you do both of the following:
71
+
72
+ a) Give prominent notice with each copy of the object code that the
73
+ Library is used in it and that the Library and its use are
74
+ covered by this License.
75
+
76
+ b) Accompany the object code with a copy of the GNU GPL and this license
77
+ document.
78
+
79
+ 4. Combined Works.
80
+
81
+ You may convey a Combined Work under terms of your choice that,
82
+ taken together, effectively do not restrict modification of the
83
+ portions of the Library contained in the Combined Work and reverse
84
+ engineering for debugging such modifications, if you also do each of
85
+ the following:
86
+
87
+ a) Give prominent notice with each copy of the Combined Work that
88
+ the Library is used in it and that the Library and its use are
89
+ covered by this License.
90
+
91
+ b) Accompany the Combined Work with a copy of the GNU GPL and this license
92
+ document.
93
+
94
+ c) For a Combined Work that displays copyright notices during
95
+ execution, include the copyright notice for the Library among
96
+ these notices, as well as a reference directing the user to the
97
+ copies of the GNU GPL and this license document.
98
+
99
+ d) Do one of the following:
100
+
101
+ 0) Convey the Minimal Corresponding Source under the terms of this
102
+ License, and the Corresponding Application Code in a form
103
+ suitable for, and under terms that permit, the user to
104
+ recombine or relink the Application with a modified version of
105
+ the Linked Version to produce a modified Combined Work, in the
106
+ manner specified by section 6 of the GNU GPL for conveying
107
+ Corresponding Source.
108
+
109
+ 1) Use a suitable shared library mechanism for linking with the
110
+ Library. A suitable mechanism is one that (a) uses at run time
111
+ a copy of the Library already present on the user's computer
112
+ system, and (b) will operate properly with a modified version
113
+ of the Library that is interface-compatible with the Linked
114
+ Version.
115
+
116
+ e) Provide Installation Information, but only if you would otherwise
117
+ be required to provide such information under section 6 of the
118
+ GNU GPL, and only to the extent that such information is
119
+ necessary to install and execute a modified version of the
120
+ Combined Work produced by recombining or relinking the
121
+ Application with a modified version of the Linked Version. (If
122
+ you use option 4d0, the Installation Information must accompany
123
+ the Minimal Corresponding Source and Corresponding Application
124
+ Code. If you use option 4d1, you must provide the Installation
125
+ Information in the manner specified by section 6 of the GNU GPL
126
+ for conveying Corresponding Source.)
127
+
128
+ 5. Combined Libraries.
129
+
130
+ You may place library facilities that are a work based on the
131
+ Library side by side in a single library together with other library
132
+ facilities that are not Applications and are not covered by this
133
+ License, and convey such a combined library under terms of your
134
+ choice, if you do both of the following:
135
+
136
+ a) Accompany the combined library with a copy of the same work based
137
+ on the Library, uncombined with any other library facilities,
138
+ conveyed under the terms of this License.
139
+
140
+ b) Give prominent notice with the combined library that part of it
141
+ is a work based on the Library, and explaining where to find the
142
+ accompanying uncombined form of the same work.
143
+
144
+ 6. Revised Versions of the GNU Lesser General Public License.
145
+
146
+ The Free Software Foundation may publish revised and/or new versions
147
+ of the GNU Lesser General Public License from time to time. Such new
148
+ versions will be similar in spirit to the present version, but may
149
+ differ in detail to address new problems or concerns.
150
+
151
+ Each version is given a distinguishing version number. If the
152
+ Library as you received it specifies that a certain numbered version
153
+ of the GNU Lesser General Public License "or any later version"
154
+ applies to it, you have the option of following the terms and
155
+ conditions either of that published version or of any later version
156
+ published by the Free Software Foundation. If the Library as you
157
+ received it does not specify a version number of the GNU Lesser
158
+ General Public License, you may choose any version of the GNU Lesser
159
+ General Public License ever published by the Free Software Foundation.
160
+
161
+ If the Library as you received it specifies that a proxy can decide
162
+ whether future versions of the GNU Lesser General Public License shall
163
+ apply, that proxy's public statement of acceptance of any version is
164
+ permanent authorization for you to choose that version for the
165
+ Library.
LICENSE ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
 
1
+ LGPL v3 と、ソースコードの公開が不要な別ライセンスのデュアルライセンスです。
2
+
3
+ 1. LGPL v3
4
+
5
+ LGPL_LICENSEを参照してください。
6
+
7
+ 2. ソースコードの公開が不要な別ライセンス
8
+
9
+ 別ライセンスを取得したい場合は、ヒホ(twitter: @hiho_karuta)に求めてください。
Makefile ADDED
@@ -0,0 +1,125 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ CMD=
2
+ NOCACHE=
3
+
4
+ ARGS:=
5
+ ifeq ($(NOCACHE),1)
6
+ ARGS:=$(ARGS) --no-cache
7
+ endif
8
+
9
+ # Ubuntu 20.04
10
+ .PHONY: build-linux-docker-ubuntu20.04
11
+ build-linux-docker-ubuntu20.04:
12
+ docker buildx build . \
13
+ -t voicevox/voicevox_engine:cpu-ubuntu20.04-latest \
14
+ --target runtime-env \
15
+ --progress plain \
16
+ --build-arg BASE_IMAGE=ubuntu:20.04 \
17
+ --build-arg BASE_RUNTIME_IMAGE=ubuntu:20.04 \
18
+ --build-arg ONNXRUNTIME_URL=https://github.com/microsoft/onnxruntime/releases/download/v1.13.1/onnxruntime-linux-x64-1.13.1.tgz \
19
+ --build-arg VOICEVOX_CORE_LIBRARY_NAME=libcore_cpu_x64.so $(ARGS)
20
+
21
+ .PHONY: run-linux-docker-ubuntu20.04
22
+ run-linux-docker-ubuntu20.04:
23
+ docker run --rm -it \
24
+ -p '127.0.0.1:50021:50021' $(ARGS) \
25
+ voicevox/voicevox_engine:cpu-ubuntu20.04-latest $(CMD)
26
+
27
+ .PHONY: build-linux-docker-nvidia-ubuntu20.04
28
+ build-linux-docker-nvidia-ubuntu20.04:
29
+ docker buildx build . \
30
+ -t voicevox/voicevox_engine:nvidia-ubuntu20.04-latest \
31
+ --target runtime-nvidia-env \
32
+ --progress plain \
33
+ --build-arg BASE_IMAGE=ubuntu:20.04 \
34
+ --build-arg BASE_RUNTIME_IMAGE=nvidia/cuda:11.6.2-cudnn8-runtime-ubuntu20.04 \
35
+ --build-arg ONNXRUNTIME_URL=https://github.com/microsoft/onnxruntime/releases/download/v1.13.1/onnxruntime-linux-x64-gpu-1.13.1.tgz \
36
+ --build-arg VOICEVOX_CORE_LIBRARY_NAME=libcore_gpu_x64_nvidia.so $(ARGS)
37
+
38
+ .PHONY: run-linux-docker-nvidia-ubuntu20.04
39
+ run-linux-docker-nvidia-ubuntu20.04:
40
+ docker run --rm -it \
41
+ --gpus all \
42
+ -p '127.0.0.1:50021:50021' $(ARGS) \
43
+ voicevox/voicevox_engine:nvidia-ubuntu20.04-latest $(CMD)
44
+
45
+
46
+ # Ubuntu 18.04
47
+ .PHONY: build-linux-docker-ubuntu18.04
48
+ build-linux-docker-ubuntu18.04:
49
+ docker buildx build . \
50
+ -t voicevox/voicevox_engine:cpu-ubuntu18.04-latest \
51
+ --target runtime-env \
52
+ --progress plain \
53
+ --build-arg BASE_IMAGE=ubuntu:18.04 \
54
+ --build-arg BASE_RUNTIME_IMAGE=ubuntu:18.04 \
55
+ --build-arg ONNXRUNTIME_URL=https://github.com/microsoft/onnxruntime/releases/download/v1.13.1/onnxruntime-linux-x64-1.13.1.tgz \
56
+ --build-arg VOICEVOX_CORE_LIBRARY_NAME=libcore_cpu_x64.so $(ARGS)
57
+
58
+ .PHONY: run-linux-docker-ubuntu18.04
59
+ run-linux-docker-ubuntu18.04:
60
+ docker run --rm -it \
61
+ -p '127.0.0.1:50021:50021' $(ARGS) \
62
+ voicevox/voicevox_engine:cpu-ubuntu18.04-latest $(CMD)
63
+
64
+ .PHONY: build-linux-docker-nvidia-ubuntu18.04
65
+ build-linux-docker-nvidia-ubuntu18.04:
66
+ docker buildx build . \
67
+ -t voicevox/voicevox_engine:nvidia-ubuntu18.04-latest \
68
+ --target runtime-nvidia-env \
69
+ --progress plain \
70
+ --build-arg BASE_IMAGE=ubuntu:18.04 \
71
+ --build-arg BASE_RUNTIME_IMAGE=nvidia/cuda:11.6.2-cudnn8-runtime-ubuntu18.04 \
72
+ --build-arg ONNXRUNTIME_URL=https://github.com/microsoft/onnxruntime/releases/download/v1.13.1/onnxruntime-linux-x64-gpu-1.13.1.tgz \
73
+ --build-arg VOICEVOX_CORE_LIBRARY_NAME=libcore_gpu_x64_nvidia.so $(ARGS)
74
+
75
+ .PHONY: run-linux-docker-nvidia-ubuntu18.04
76
+ run-linux-docker-nvidia-ubuntu18.04:
77
+ docker run --rm -it \
78
+ --gpus all \
79
+ -p '127.0.0.1:50021:50021' $(ARGS) \
80
+ voicevox/voicevox_engine:nvidia-ubuntu18.04-latest $(CMD)
81
+
82
+
83
+ # VOICEVOX Core env for test
84
+ .PHONY: build-linux-docker-download-core-env-ubuntu18.04
85
+ build-linux-docker-download-core-env-ubuntu18.04:
86
+ docker buildx build . \
87
+ -t voicevox/voicevox_engine:download-core-env-ubuntu18.04 \
88
+ --target download-core-env \
89
+ --progress plain \
90
+ --build-arg BASE_IMAGE=ubuntu:18.04 $(ARGS)
91
+
92
+ .PHONY: run-linux-docker-download-core-env-ubuntu18.04
93
+ run-linux-docker-download-core-env-ubuntu18.04:
94
+ docker run --rm -it $(ARGS) \
95
+ voicevox/voicevox_engine:download-core-env-ubuntu18.04 $(CMD)
96
+
97
+
98
+ # ONNX Runtime env for test
99
+ .PHONY: build-linux-docker-download-onnxruntime-env-ubuntu18.04
100
+ build-linux-docker-download-onnxruntime-env-ubuntu18.04:
101
+ docker buildx build . \
102
+ -t voicevox/voicevox_engine:download-onnxruntime-env-ubuntu18.04 \
103
+ --target download-onnxruntime-env \
104
+ --progress plain \
105
+ --build-arg BASE_IMAGE=ubuntu:18.04 $(ARGS)
106
+
107
+ .PHONY: run-linux-docker-download-onnxruntime-env-ubuntu18.04
108
+ run-linux-docker-download-onnxruntime-env-ubuntu18.04:
109
+ docker run --rm -it $(ARGS) \
110
+ voicevox/voicevox_engine:download-onnxruntime-env-ubuntu18.04 $(CMD)
111
+
112
+
113
+ # Python env for test
114
+ .PHONY: build-linux-docker-compile-python-env
115
+ build-linux-docker-compile-python-env:
116
+ docker buildx build . \
117
+ -t voicevox/voicevox_engine:compile-python-env \
118
+ --target compile-python-env \
119
+ --progress plain \
120
+ --build-arg BASE_IMAGE=ubuntu:20.04 $(ARGS)
121
+
122
+ .PHONY: run-linux-docker-compile-python-env
123
+ run-linux-docker-compile-python-env:
124
+ docker run --rm -it $(ARGS) \
125
+ voicevox/voicevox_engine:compile-python-env $(CMD)
README.md CHANGED
@@ -1,11 +1,570 @@
1
- ---
2
- title: Voicevox
3
- emoji: 💩
4
- colorFrom: yellow
5
- colorTo: indigo
6
- sdk: docker
7
- pinned: false
8
- license: mit
9
- ---
10
-
11
- Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # VOICEVOX ENGINE
2
+
3
+ [![build](https://github.com/VOICEVOX/voicevox_engine/actions/workflows/build.yml/badge.svg)](https://github.com/VOICEVOX/voicevox_engine/actions/workflows/build.yml)
4
+ [![releases](https://img.shields.io/github/v/release/VOICEVOX/voicevox_engine)](https://github.com/VOICEVOX/voicevox_engine/releases)
5
+ [![discord](https://img.shields.io/discord/879570910208733277?color=5865f2&label=&logo=discord&logoColor=ffffff)](https://discord.gg/WMwWetrzuh)
6
+
7
+ [![test](https://github.com/VOICEVOX/voicevox_engine/actions/workflows/test.yml/badge.svg)](https://github.com/VOICEVOX/voicevox_engine/actions/workflows/test.yml)
8
+ [![Coverage Status](https://coveralls.io/repos/github/VOICEVOX/voicevox_engine/badge.svg)](https://coveralls.io/github/VOICEVOX/voicevox_engine)
9
+
10
+ [![build-docker](https://github.com/VOICEVOX/voicevox_engine/actions/workflows/build-docker.yml/badge.svg)](https://github.com/VOICEVOX/voicevox_engine/actions/workflows/build-docker.yml)
11
+ [![docker](https://img.shields.io/docker/pulls/voicevox/voicevox_engine)](https://hub.docker.com/r/voicevox/voicevox_engine)
12
+
13
+ [VOICEVOX](https://voicevox.hiroshiba.jp/) のエンジンです。
14
+ 実態は HTTP サーバーなので、リクエストを送信すればテキスト音声合成できます。
15
+
16
+ (エディターは [VOICEVOX](https://github.com/VOICEVOX/voicevox/) 、
17
+ コアは [VOICEVOX CORE](https://github.com/VOICEVOX/voicevox_core/) 、
18
+ 全体構成は [こちら](https://github.com/VOICEVOX/voicevox/blob/main/docs/%E5%85%A8%E4%BD%93%E6%A7%8B%E6%88%90.md) に詳細があります。)
19
+
20
+ ## ダウンロード
21
+
22
+ [こちら](https://github.com/VOICEVOX/voicevox_engine/releases/latest)から対応するエンジンをダウンロードしてください。
23
+
24
+ ## API ドキュメント
25
+
26
+ [API ドキュメント](https://voicevox.github.io/voicevox_engine/api/)をご参照ください。
27
+
28
+ VOICEVOX エンジンもしくはエディタを起動した状態で http://127.0.0.1:50021/docs にアクセスすると、起動中のエンジンのドキュメントも確認できます。
29
+ 今後の方針などについては [VOICEVOX 音声合成エンジンとの連携](./docs/VOICEVOX音声合成エンジンとの連携.md) も参考になるかもしれません。
30
+
31
+ リクエスト・レスポンスの文字コードはすべて UTF-8 です。
32
+
33
+ ### HTTP リクエストで音声合成するサンプルコード
34
+
35
+ ```bash
36
+ echo -n "こんにちは、音声合成の世界へようこそ" >text.txt
37
+
38
+ curl -s \
39
+ -X POST \
40
+ "127.0.0.1:50021/audio_query?speaker=1"\
41
+ --get --data-urlencode [email protected] \
42
+ > query.json
43
+
44
+ curl -s \
45
+ -H "Content-Type: application/json" \
46
+ -X POST \
47
+ -d @query.json \
48
+ "127.0.0.1:50021/synthesis?speaker=1" \
49
+ > audio.wav
50
+ ```
51
+
52
+ 生成される音声はサンプリングレートが 24000Hz と少し特殊なため、音声プレーヤーによっては再生できない場合があります。
53
+
54
+ `speaker` に指定する値は `/speakers` エンドポイントで得られる `style_id` です。互換性のために `speaker` という名前になっています。
55
+
56
+ ### 読み方を AquesTalk 記法で取得・修正するサンプルコード
57
+
58
+ `/audio_query`のレスポンスにはエンジンが判断した読み方が AquesTalk ライクな記法([本家の記法](https://www.a-quest.com/archive/manual/siyo_onseikigou.pdf)とは一部異なります)で記録されています。
59
+ 記法は次のルールに従います。
60
+
61
+ - 全てのカナはカタカナで記述される
62
+ - アクセント句は`/`または`、`で区切る。`、`で区切った場合に限り無音区間が挿入される。
63
+ - カナの手前に`_`を入れるとそのカナは無声化される
64
+ - アクセント位置を`'`で指定する。全てのアクセント句にはアクセント位置を 1 つ指定する必要がある。
65
+ - アクセント句末に`?`(全角)を入れることにより疑問文の発音ができる
66
+
67
+ ```bash
68
+ # 読ませたい文章をutf-8でtext.txtに書き出す
69
+ echo -n "ディープラーニングは万能薬ではありません" >text.txt
70
+
71
+ curl -s \
72
+ -X POST \
73
+ "127.0.0.1:50021/audio_query?speaker=1" \
74
+ --get --data-urlencode [email protected] \
75
+ > query.json
76
+
77
+ cat query.json | grep -o -E "\"kana\":\".*\""
78
+ # 結果... "kana":"ディ'イプ/ラ'アニングワ/バンノオヤクデワアリマセ'ン"
79
+
80
+ # "ディイプラ'アニングワ/バンノ'オヤクデワ/アリマセ'ン"と読ませたいので、
81
+ # is_kana=trueをつけてイントネーションを取得しnewphrases.jsonに保存
82
+ echo -n "ディイプラ'アニングワ/バンノ'オヤクデワ/アリマセ'ン" > kana.txt
83
+ curl -s \
84
+ -X POST \
85
+ "127.0.0.1:50021/accent_phrases?speaker=1&is_kana=true" \
86
+ --get --data-urlencode [email protected] \
87
+ > newphrases.json
88
+
89
+ # query.jsonの"accent_phrases"の内容をnewphrases.jsonの内容に置き換える
90
+ cat query.json | sed -e "s/\[{.*}\]/$(cat newphrases.json)/g" > newquery.json
91
+
92
+ curl -s \
93
+ -H "Content-Type: application/json" \
94
+ -X POST \
95
+ -d @newquery.json \
96
+ "127.0.0.1:50021/synthesis?speaker=1" \
97
+ > audio.wav
98
+ ```
99
+
100
+ ### ユーザー辞書機能について
101
+
102
+ APIからユーザー辞書の参照、単語の追加、編集、削除を行うことができます。
103
+
104
+ #### 参照
105
+
106
+ `/user_dict`にGETリクエストを投げることでユーザー辞書の一覧を取得することができます。
107
+
108
+ ```bash
109
+ curl -s -X GET "127.0.0.1:50021/user_dict"
110
+ ```
111
+
112
+ #### 単語追加
113
+
114
+ `/user_dict_word`にPOSTリクエストを投げる事でユーザー辞書に単語を追加することができます。
115
+ URLパラメータとして、以下が必要です。
116
+ - surface (辞書に登録する単語)
117
+ - pronunciation (カタカナでの読み方)
118
+ - accent_type (アクセント核位置、整数)
119
+
120
+ アクセント核位置については、こちらの文章が参考になるかと思います。
121
+ 〇型となっている数字の部分がアクセント核位置になります。
122
+ https://tdmelodic.readthedocs.io/ja/latest/pages/introduction.html
123
+
124
+ 成功した場合の返り値は単語に割り当てられるUUIDの文字列になります。
125
+
126
+ ```bash
127
+ surface="test"
128
+ pronunciation="テスト"
129
+ accent_type="1"
130
+
131
+ curl -s -X POST "127.0.0.1:50021/user_dict_word" \
132
+ --get \
133
+ --data-urlencode "surface=$surface" \
134
+ --data-urlencode "pronunciation=$pronunciation" \
135
+ --data-urlencode "accent_type=$accent_type"
136
+ ```
137
+
138
+ #### 単語修正
139
+
140
+ `/user_dict_word/{word_uuid}`にPUTリクエストを投げる事でユーザー辞書の単語を修正することができます。
141
+ URLパラメータとして、以下が必要です。
142
+ - surface (辞書に登録するワード)
143
+ - pronunciation (カタカナでの読み方)
144
+ - accent_type (アクセント核位置、整数)
145
+
146
+ word_uuidは単語追加時に確認できるほか、ユーザー辞書を参照することでも確認できます。
147
+ 成功した場合の返り値は`204 No Content`になります。
148
+
149
+ ```bash
150
+ surface="test2"
151
+ pronunciation="テストツー"
152
+ accent_type="2"
153
+ # 環境によってword_uuidは適宜書き換えてください
154
+ word_uuid="cce59b5f-86ab-42b9-bb75-9fd3407f1e2d"
155
+
156
+ curl -s -X PUT "127.0.0.1:50021/user_dict_word/$word_uuid" \
157
+ --get \
158
+ --data-urlencode "surface=$surface" \
159
+ --data-urlencode "pronunciation=$pronunciation" \
160
+ --data-urlencode "accent_type=$accent_type"
161
+ ```
162
+
163
+ #### 単語削除
164
+
165
+ `/user_dict_word/{word_uuid}`にDELETEリクエストを投げる事でユーザー辞書の単語を削除することができます。
166
+
167
+ word_uuidは単語追加時に確認できるほか、ユーザー辞書を参照することでも確認できます。
168
+ 成功した場合の返り値は`204 No Content`になります。
169
+
170
+ ```bash
171
+ # 環境によってword_uuidは適宜書き換えてください
172
+ word_uuid="cce59b5f-86ab-42b9-bb75-9fd3407f1e2d"
173
+
174
+ curl -s -X DELETE "127.0.0.1:50021/user_dict_word/$word_uuid"
175
+ ```
176
+
177
+ ### プリセット機能について
178
+
179
+ `presets.yaml`を編集することで話者や話速などのプリセットを使うことができます。
180
+
181
+ ```bash
182
+ echo -n "プリセットをうまく活用すれば、サードパーティ間で同じ設定を使うことができます" >text.txt
183
+
184
+ # プリセット情報を取得
185
+ curl -s -X GET "127.0.0.1:50021/presets" > presets.json
186
+
187
+ preset_id=$(cat presets.json | sed -r 's/^.+"id"\:\s?([0-9]+?).+$/\1/g')
188
+ style_id=$(cat presets.json | sed -r 's/^.+"style_id"\:\s?([0-9]+?).+$/\1/g')
189
+
190
+ # AudioQueryの取得
191
+ curl -s \
192
+ -X POST \
193
+ "127.0.0.1:50021/audio_query_from_preset?preset_id=$preset_id"\
194
+ --get --data-urlencode [email protected] \
195
+ > query.json
196
+
197
+ # 音声合成
198
+ curl -s \
199
+ -H "Content-Type: application/json" \
200
+ -X POST \
201
+ -d @query.json \
202
+ "127.0.0.1:50021/synthesis?speaker=$style_id" \
203
+ > audio.wav
204
+ ```
205
+
206
+ - `speaker_uuid`は、`/speakers`で確認できます
207
+ - `id`は重複してはいけません
208
+ - エンジン起動後にファイルを書き換えるとエンジンに反映されます
209
+
210
+ ### 2 人の話者でモーフィングするサンプルコード
211
+
212
+ `/synthesis_morphing`では、2 人の話者でそれぞれ合成された音声を元に、モーフィングした音声を生成します。
213
+
214
+ ```bash
215
+ echo -n "モーフィングを利用することで、2つの声を混ぜることができます。" > text.txt
216
+
217
+ curl -s \
218
+ -X POST \
219
+ "127.0.0.1:50021/audio_query?speaker=0"\
220
+ --get --data-urlencode [email protected] \
221
+ > query.json
222
+
223
+ # 元の話者での合成結果
224
+ curl -s \
225
+ -H "Content-Type: application/json" \
226
+ -X POST \
227
+ -d @query.json \
228
+ "127.0.0.1:50021/synthesis?speaker=0" \
229
+ > audio.wav
230
+
231
+ export MORPH_RATE=0.5
232
+
233
+ # 話者2人分の音声合成+WORLDによる音声分析が入るため時間が掛かるので注意
234
+ curl -s \
235
+ -H "Content-Type: application/json" \
236
+ -X POST \
237
+ -d @query.json \
238
+ "127.0.0.1:50021/synthesis_morphing?base_speaker=0&target_speaker=1&morph_rate=$MORPH_RATE" \
239
+ > audio.wav
240
+
241
+ export MORPH_RATE=0.9
242
+
243
+ # query、base_speaker、target_speakerが同じ場合はキャッシュが使用されるため比較的高速に生成される
244
+ curl -s \
245
+ -H "Content-Type: application/json" \
246
+ -X POST \
247
+ -d @query.json \
248
+ "127.0.0.1:50021/synthesis_morphing?base_speaker=0&target_speaker=1&morph_rate=$MORPH_RATE" \
249
+ > audio.wav
250
+ ```
251
+
252
+ ### 話者の追加情報を取得するサンプルコード
253
+
254
+ 追加情報の中の portrait.png を取得するコードです。
255
+ ([jq](https://stedolan.github.io/jq/)を使用して json をパースしています。)
256
+
257
+ ```bash
258
+ curl -s -X GET "127.0.0.1:50021/speaker_info?speaker_uuid=7ffcb7ce-00ec-4bdc-82cd-45a8889e43ff" \
259
+ | jq -r ".portrait" \
260
+ | base64 -d \
261
+ > portrait.png
262
+ ```
263
+
264
+ ### キャンセル可能な音声合成
265
+
266
+ `/cancellable_synthesis`では通信を切断した場合に即座に計算リソースが開放されます。
267
+ (`/synthesis`では通信を切断しても最後まで音声合成の計算が行われます)
268
+ この API は実験的機能であり、エンジン起動時に引数で`--enable_cancellable_synthesis`を指定しないと有効化されません。
269
+ 音声合成に必要なパラメータは`/synthesis`と同様です。
270
+
271
+ ### CORS設定
272
+
273
+ VOICEVOXではセキュリティ保護のため`localhost`・`127.0.0.1`・`app://`・Originなし以外のOriginからリクエストを受け入れないようになっています。
274
+ そのため、一部のサードパーティアプリからのレスポンスを受け取れない可能性があります。
275
+ これを回避する方法として、エンジンから設定できるUIを用意しています。
276
+
277
+ #### 設定方法
278
+
279
+ 1. <http://127.0.0.1:50021/setting> にアクセスします。
280
+ 2. 利用するアプリに合わせて設定を変更、追加してください。
281
+ 3. 保存ボタンを押して、変更を確定してください。
282
+ 4. 設定の適用にはエンジンの再起動が必要です。必要に応じて再起動をしてください。
283
+
284
+ ## アップデート
285
+
286
+ エンジンディレクトリ内にあるファイルを全て消去し、新しいものに置き換えてください。
287
+
288
+ ## Docker イメージ
289
+
290
+ ### CPU
291
+
292
+ ```bash
293
+ docker pull voicevox/voicevox_engine:cpu-ubuntu20.04-latest
294
+ docker run --rm -p '127.0.0.1:50021:50021' voicevox/voicevox_engine:cpu-ubuntu20.04-latest
295
+ ```
296
+
297
+ ### GPU
298
+
299
+ ```bash
300
+ docker pull voicevox/voicevox_engine:nvidia-ubuntu20.04-latest
301
+ docker run --rm --gpus all -p '127.0.0.1:50021:50021' voicevox/voicevox_engine:nvidia-ubuntu20.04-latest
302
+ ```
303
+
304
+ #### トラブルシューティング
305
+ GPU版を利用する場合、環境によってエラーが発生することがあります。その場合、`--runtime=nvidia`を`docker run`につけて実行すると解決できることがあります。
306
+
307
+ ## 貢献者の方へ
308
+
309
+ Issue を解決するプルリクエストを作成される際は、別の方と同じ Issue に取り組むことを避けるため、
310
+ Issue 側で取り組み始めたことを伝えるか、最初に Draft プルリクエストを作成してください。
311
+
312
+ [VOICEVOX 非公式 Discord サーバー](https://discord.gg/WMwWetrzuh)にて、開発の議論や雑談を行っています。気軽にご参加ください。
313
+
314
+ ## 環境構築
315
+
316
+ `Python 3.11.3` を用いて開発されています。
317
+ インストールするには、各 OS ごとの C/C++ コンパイラ、CMake が必要になります。
318
+
319
+ ```bash
320
+ # 開発に必要なライブラリのインストール
321
+ python -m pip install -r requirements-dev.txt -r requirements-test.txt
322
+
323
+ # とりあえず実行したいだけなら代わりにこちら
324
+ python -m pip install -r requirements.txt
325
+ ```
326
+
327
+ ## 実行
328
+
329
+ コマンドライン引数の詳細は以下のコマンドで確認してください。
330
+
331
+ ```bash
332
+ python run.py --help
333
+ ```
334
+
335
+ ```bash
336
+ # 製品版 VOICEVOX でサーバーを起動
337
+ VOICEVOX_DIR="C:/path/to/voicevox" # 製品版 VOICEVOX ディレクトリのパス
338
+ python run.py --voicevox_dir=$VOICEVOX_DIR
339
+ ```
340
+
341
+ <!-- 差し替え可能な音声ライブラリまたはその仕様が公開されたらコメントを外す
342
+ ```bash
343
+ # 音声ライブラリを差し替える
344
+ VOICELIB_DIR="C:/path/to/your/tts-model"
345
+ python run.py --voicevox_dir=$VOICEVOX_DIR --voicelib_dir=$VOICELIB_DIR
346
+ ```
347
+ -->
348
+
349
+ ```bash
350
+ # モックでサーバー起動
351
+ python run.py --enable_mock
352
+ ```
353
+
354
+ ```bash
355
+ # ログをUTF8に変更
356
+ python run.py --output_log_utf8
357
+ # もしくは VV_OUTPUT_LOG_UTF8=1 python run.py
358
+ ```
359
+
360
+ ### CPU スレッド数を指定する
361
+
362
+ CPU スレッド数が未指定の場合は、論理コア数の半分か物理コア数が使われます。(殆どの CPU で、これは全体の処理能力の半分です���
363
+ もし IaaS 上で実行していたり、専用サーバーで実行している場合など、
364
+ エンジンが使う処理能力を調節したい場合は、CPU スレッド数を指定することで実現できます。
365
+
366
+ - 実行時引数で指定する
367
+
368
+ ```bash
369
+ python run.py --voicevox_dir=$VOICEVOX_DIR --cpu_num_threads=4
370
+ ```
371
+
372
+ - 環境変数で指定する
373
+ ```bash
374
+ export VV_CPU_NUM_THREADS=4
375
+ python run.py --voicevox_dir=$VOICEVOX_DIR
376
+ ```
377
+
378
+ ### 過去のバージョンのコアを使う
379
+ VOICEVOX Core 0.5.4以降のコアを使用する事が可能です。
380
+ Macでのlibtorch版コアのサポートはしていません。
381
+
382
+ #### 過去のバイナリを指定する
383
+ 製品版VOICEVOXもしくはコンパイル済みエンジンのディレクトリを`--voicevox_dir`引数で指定すると、そのバージョンのコアが使用されます。
384
+ ```bash
385
+ python run.py --voicevox_dir="/path/to/voicevox"
386
+ ```
387
+ Macでは、`DYLD_LIBRARY_PATH`の指定が必要です。
388
+ ```bash
389
+ DYLD_LIBRARY_PATH="/path/to/voicevox" python run.py --voicevox_dir="/path/to/voicevox"
390
+ ```
391
+
392
+ #### 音声ライブラリを直接指定する
393
+ [VOICEVOX Coreのzipファイル](https://github.com/VOICEVOX/voicevox_core/releases)を解凍したディレクトリを`--voicelib_dir`引数で指定します。
394
+ また、コアのバージョンに合わせて、[libtorch](https://pytorch.org/)や[onnxruntime](https://github.com/microsoft/onnxruntime)のディレクトリを`--runtime_dir`引数で指定します。
395
+ ただし、システムの探索パス上にlibtorch、onnxruntimeがある場合、`--runtime_dir`引数の指定は不要です。
396
+ `--voicelib_dir`引数、`--runtime_dir`引数は複数回使用可能です。
397
+ APIエンドポイントでコアのバージョンを指定する場合は`core_version`引数を指定してください。(未指定の場合は最新のコアが使用されます)
398
+ ```bash
399
+ python run.py --voicelib_dir="/path/to/voicevox_core" --runtime_dir="/path/to/libtorch_or_onnx"
400
+ ```
401
+ Macでは、`--runtime_dir`引数の代わりに`DYLD_LIBRARY_PATH`の指定が必要です。
402
+ ```bash
403
+ DYLD_LIBRARY_PATH="/path/to/onnx" python run.py --voicelib_dir="/path/to/voicevox_core"
404
+ ```
405
+
406
+ ## コードフォーマット
407
+
408
+ このソフトウェアでは、リモートにプッシュする前にコードフォーマットを確認する仕組み(静的解析ツール)を利用できます。
409
+ 利用するには、開発に必要なライブラリのインストールに加えて、以下のコマンドを実行してください。
410
+ プルリクエストを作成する際は、利用することを推奨します。
411
+
412
+ ```bash
413
+ pre-commit install -t pre-push
414
+ ```
415
+
416
+ エラーが出た際は、以下のコマンドで修正することが可能です。なお、完全に修正できるわけではないので注意してください。
417
+
418
+ ```bash
419
+ pysen run format lint
420
+ ```
421
+
422
+ ## タイポチェック
423
+
424
+ [typos](https://github.com/crate-ci/typos) を使ってタイポのチェックを行っています。
425
+ [typos をインストール](https://github.com/crate-ci/typos#install) した後
426
+
427
+ ```bash
428
+ typos
429
+ ```
430
+
431
+ でタイポチェックを行えます。
432
+ もし誤判定やチェックから除外すべきファイルがあれば
433
+ [設定ファイルの説明](https://github.com/crate-ci/typos#false-positives) に従って`_typos.toml`を編集してください。
434
+
435
+ ## API ドキュメントの確認
436
+
437
+ [API ドキュメント](https://voicevox.github.io/voicevox_engine/api/)(実体は`docs/api/index.html`)は自動で更新されます。
438
+ 次のコマンドで API ドキュメントを手動で作成することができます。
439
+
440
+ ```bash
441
+ python make_docs.py
442
+ ```
443
+
444
+ ## ビルド
445
+
446
+ この方法でビルドしたものは、リリースで公開されているものとは異なります。
447
+ また、GPUで利用するにはcuDNNやCUDA、DirectMLなどのライブラリが追加で必要となります。
448
+
449
+ ```bash
450
+ python -m pip install -r requirements-dev.txt
451
+
452
+ OUTPUT_LICENSE_JSON_PATH=licenses.json \
453
+ bash build_util/create_venv_and_generate_licenses.bash
454
+
455
+ # ビルド自体はLIBCORE_PATH及びLIBONNXRUNTIME_PATHの指定がなくても可能です
456
+ LIBCORE_PATH="/path/to/libcore" \
457
+ LIBONNXRUNTIME_PATH="/path/to/libonnxruntime" \
458
+ pyinstaller --noconfirm run.spec
459
+ ```
460
+
461
+ ## 依存関係
462
+
463
+ ### 更新
464
+
465
+ [Poetry](https://python-poetry.org/) を用いて依存ライブラリのバージョンを固定しています。
466
+ 以下のコマンドで操作できます:
467
+
468
+ ```bash
469
+ # パッケージを追加する場合
470
+ poetry add `パッケージ名`
471
+ poetry add --group dev `パッケージ名` # 開発依存の追加
472
+ poetry add --group test `パッケージ名` # テスト依存の追加
473
+
474
+ # パッケージをアップデートする場合
475
+ poetry update `パッケージ名`
476
+ poetry update # 全部更新
477
+
478
+ # requirements.txtの更新
479
+ poetry export --without-hashes -o requirements.txt # こちらを更新する場合は下3つも更新する��要があります。
480
+ poetry export --without-hashes --with dev -o requirements-dev.txt
481
+ poetry export --without-hashes --with test -o requirements-test.txt
482
+ poetry export --without-hashes --with license -o requirements-license.txt
483
+ ```
484
+
485
+ ### ライセンス
486
+
487
+ 依存ライブラリは「コアビルド時にリンクして一体化しても、コア部のコード非公開 OK」なライセンスを持つ必要があります。
488
+ 主要ライセンスの可否は以下の通りです。
489
+
490
+ - MIT/Apache/BSD-3: OK
491
+ - LGPL: OK (コアと動的分離されているため)
492
+ - GPL: NG (全関連コードの公開が必要なため)
493
+
494
+ ## ユーザー辞書の更新について
495
+
496
+ 以下のコマンドで openjtalk のユーザー辞書をコンパイルできます。
497
+
498
+ ```bash
499
+ python -c "import pyopenjtalk; pyopenjtalk.create_user_dict('default.csv','user.dic')"
500
+ ```
501
+
502
+ ## マルチエンジン機能に関して
503
+
504
+ VOICEVOX エディターでは、複数のエンジンを同時に起動することができます。
505
+ この機能を利用することで、自作の音声合成エンジンや既存の音声合成エンジンを VOICEVOX エディター上で動かすことが可能です。
506
+
507
+ <img src="./docs/res/マルチエンジン概念図.svg" width="320">
508
+
509
+ <details>
510
+
511
+ ### マルチエンジン機能の仕組み
512
+
513
+ VOICEVOX API に準拠した複数のエンジンの Web API をポートを分けて起動し、統一的に扱うことでマルチエンジン機能を実現しています。
514
+ エディターがそれぞれのエンジンを実行バイナリ経由で起動し、EngineID と結びつけて設定や状態を個別管理します。
515
+
516
+ ### マルチエンジン機能への対応方法
517
+
518
+ VOICEVOX API 準拠エンジンを起動する実行バイナリを作ることで対応が可能です。
519
+ VOICEVOX ENGINE リポジトリを fork し、一部の機能を改造するのが簡単です。
520
+
521
+ 改造すべき点はエンジン情報・キャラクター情報・音声合成の3点です。
522
+
523
+ エンジンの情報はエンジンマニフェスト(`engine_manifest.json`)で管理されています。
524
+ マニフェストファイル内の情報を見て適宜変更してください。
525
+ 音声合成手法によっては、例えばモーフィング機能など、VOICEVOX と同じ機能を持つことができない場合があります。
526
+ その場合はマニフェストファイル内の`supported_features`内の情報を適宜変更してください。
527
+
528
+ キャラクター情報は`speaker_info`ディレクトリ内のファイルで管理されています。
529
+ ダミーのアイコンなどが用意されているので適宜変更してください。
530
+
531
+ 音声合成は`voicevox_engine/synthesis_engine/synthesis_engine.py`で行われています。
532
+ VOICEVOX API での音声合成は、エンジン側で音声合成クエリ`AudioQuery`の初期値を作成してユーザーに返し、ユーザーが必要に応じてクエリを編集したあと、エンジンがクエリに従って音声合成することで実現しています。
533
+ クエリ作成は`/audio_query`エンドポイントで、音声合成は`/synthesis`エンドポイントで行っており、最低この2つに対応すれば VOICEVOX API に準拠したことになります。
534
+
535
+ ### マルチエンジン機能対応エンジンの配布方法
536
+
537
+ VVPP ファイルとして配布するのがおすすめです。
538
+ VVPP は「VOICEVOX プラグインパッケージ」の略で、中身はビルドしたエンジンなどを含んだディレクトリの Zip ファイルです。
539
+ 拡張子を`.vvpp`にすると、ダブルクリックで VOICEVOX エディターにインストールできます。
540
+
541
+ エディター側は受け取った VVPP ファイルをローカルディスク上に Zip 展開したあと、ルートの直下にある`engine_manifest.json`に従ってファイルを探査します。
542
+ VOICEVOX エディターにうまく読み込ませられないときは、エディターのエラーログを参照してください。
543
+
544
+ また、`xxx.vvpp`は分割して連番を付けた`xxx.0.vvppp`ファイルとして配布することも可能です。
545
+ これはファイル容量が大きくて配布が困難な場合に有用です。
546
+
547
+ </details>
548
+
549
+ ## GitHub Actions
550
+
551
+ ### Variables
552
+
553
+ | name | description |
554
+ | :----------------- | :---------------------------------------------------------------------- |
555
+ | DOCKERHUB_USERNAME | Docker Hub ユーザ名 |
556
+
557
+ ### Secrets
558
+
559
+ | name | description |
560
+ | :----------------- | :---------------------------------------------------------------------- |
561
+ | DOCKERHUB_TOKEN | [Docker Hub アクセストークン](https://hub.docker.com/settings/security) |
562
+
563
+ ## 事例紹介
564
+
565
+ **[voicevox-client](https://github.com/tuna2134/voicevox-client) [@tuna2134](https://github.com/tuna2134)** ・・・ VOICEVOX ENGINE のためのPythonラッパー
566
+
567
+ ## ライセンス
568
+
569
+ LGPL v3 と、ソースコードの公開が不要な別ライセンスのデュアルライセンスです。
570
+ 別ライセンスを取得したい場合は、ヒホ(twitter: @hiho_karuta)に求めてください。
_typos.toml ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Files for typos
2
+ # Instruction: https://github.com/marketplace/actions/typos-action#getting-started
3
+
4
+ [default.extend-identifiers]
5
+
6
+ [default.extend-words]
7
+ ba="ba" # 7zコマンドの-baオプション
8
+ datas="datas" # PyInstallerの引数
9
+
10
+ [files]
11
+ extend-exclude = ["package-lock.json", "src/store/project.ts", "*.svg"]
build_util/check_release_build.py ADDED
@@ -0,0 +1,70 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """
2
+ ビルド結果をテストする
3
+ """
4
+ import argparse
5
+ import json
6
+ import time
7
+ from io import BytesIO
8
+ from pathlib import Path
9
+ from subprocess import Popen
10
+ from urllib.parse import urlencode
11
+ from urllib.request import Request, urlopen
12
+
13
+ import soundfile
14
+
15
+ base_url = "http://127.0.0.1:50021/"
16
+
17
+
18
+ def test_release_build(dist_dir: Path, skip_run_process: bool) -> None:
19
+ run_file = dist_dir / "run"
20
+ if not run_file.exists():
21
+ run_file = dist_dir / "run.exe"
22
+
23
+ # 起動
24
+ process = None
25
+ if not skip_run_process:
26
+ process = Popen([run_file.absolute()], cwd=dist_dir)
27
+ time.sleep(60) # 待機
28
+
29
+ # バージョン取得テスト
30
+ req = Request(base_url + "version")
31
+ with urlopen(req) as res:
32
+ assert len(res.read()) > 0
33
+
34
+ # テキスト -> クエリ
35
+ text = "こんにちは、音声合成の世界へようこそ"
36
+ req = Request(
37
+ base_url + "audio_query?" + urlencode({"speaker": "1", "text": text}),
38
+ method="POST",
39
+ )
40
+ with urlopen(req) as res:
41
+ query = json.loads(res.read().decode("utf-8"))
42
+
43
+ # クエリ -> 音声
44
+ req = Request(base_url + "synthesis?speaker=1", method="POST")
45
+ req.add_header("Content-Type", "application/json")
46
+ req.data = json.dumps(query).encode("utf-8")
47
+ with urlopen(req) as res:
48
+ wave = res.read()
49
+ soundfile.read(BytesIO(wave))
50
+
51
+ # エンジンマニフェスト
52
+ req = Request(base_url + "engine_manifest", method="GET")
53
+ with urlopen(req) as res:
54
+ manifest = json.loads(res.read().decode("utf-8"))
55
+ assert "uuid" in manifest
56
+
57
+ if not skip_run_process:
58
+ # プロセスが稼働中であることを確認
59
+ assert process.poll() is None
60
+
61
+ # 停止
62
+ process.terminate()
63
+
64
+
65
+ if __name__ == "__main__":
66
+ parser = argparse.ArgumentParser()
67
+ parser.add_argument("--dist_dir", type=Path, default=Path("dist/"))
68
+ parser.add_argument("--skip_run_process", action="store_true")
69
+ args = parser.parse_args()
70
+ test_release_build(dist_dir=args.dist_dir, skip_run_process=args.skip_run_process)
build_util/codesign.bash ADDED
@@ -0,0 +1,49 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # !!! コードサイニング証明書を取り扱うので取り扱い注意 !!!
2
+
3
+ set -eu
4
+
5
+ if [ ! -v CERT_BASE64 ]; then
6
+ echo "CERT_BASE64が未定義です"
7
+ exit 1
8
+ fi
9
+ if [ ! -v CERT_PASSWORD ]; then
10
+ echo "CERT_PASSWORDが未定義です"
11
+ exit 1
12
+ fi
13
+
14
+ if [ $# -ne 1 ]; then
15
+ echo "引数の数が一致しません"
16
+ exit 1
17
+ fi
18
+ target_file_glob="$1"
19
+
20
+ # 証明書
21
+ CERT_PATH=cert.pfx
22
+ echo -n "$CERT_BASE64" | base64 -d - > $CERT_PATH
23
+
24
+ # 指定ファイルに署名する
25
+ function codesign() {
26
+ TARGET="$1"
27
+ SIGNTOOL=$(find "C:/Program Files (x86)/Windows Kits/10/App Certification Kit" -name "signtool.exe" | sort -V | tail -n 1)
28
+ powershell "& '$SIGNTOOL' sign /fd SHA256 /td SHA256 /tr http://timestamp.digicert.com /f $CERT_PATH /p $CERT_PASSWORD '$TARGET'"
29
+ }
30
+
31
+ # 指定ファイルが署名されているか
32
+ function is_signed() {
33
+ TARGET="$1"
34
+ SIGNTOOL=$(find "C:/Program Files (x86)/Windows Kits/10/App Certification Kit" -name "signtool.exe" | sort -V | tail -n 1)
35
+ powershell "& '$SIGNTOOL' verify /pa '$TARGET'" || return 1
36
+ }
37
+
38
+ # 署名されていなければ署名
39
+ ls $target_file_glob | while read target_file; do
40
+ if is_signed "$target_file"; then
41
+ echo "署名済み: $target_file"
42
+ else
43
+ echo "署名: $target_file"
44
+ codesign "$target_file"
45
+ fi
46
+ done
47
+
48
+ # 証明書を消去
49
+ rm $CERT_PATH
build_util/create_venv_and_generate_licenses.bash ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # 仮想環境を作ってrequirements.txtをインストールし、ライセンス一覧を生成する
2
+
3
+ set -eux
4
+
5
+ if [ ! -v OUTPUT_LICENSE_JSON_PATH ]; then
6
+ echo "OUTPUT_LICENSE_JSON_PATHが未定義です"
7
+ exit 1
8
+ fi
9
+
10
+ VENV_PATH="licenses_venv"
11
+
12
+ python -m venv $VENV_PATH
13
+ if [ -d "$VENV_PATH/Scripts" ]; then
14
+ source $VENV_PATH/Scripts/activate
15
+ else
16
+ source $VENV_PATH/bin/activate
17
+ fi
18
+
19
+ pip install -r requirements-license.txt
20
+ python generate_licenses.py >$OUTPUT_LICENSE_JSON_PATH
21
+
22
+ deactivate
23
+
24
+ rm -rf $VENV_PATH
build_util/merge_update_infos.py ADDED
@@ -0,0 +1,57 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """
2
+ 更新履歴をマージする。
3
+ """
4
+
5
+ import argparse
6
+ import json
7
+ from collections import OrderedDict
8
+ from pathlib import Path
9
+ from typing import Dict, List, Union
10
+
11
+
12
+ def merge_json_string(src: str, dst: str) -> str:
13
+ """
14
+ バージョンが同じ場合は要素を結合する
15
+ >>> src = '[{"version": "0.0.1", "a": ["a1"], "b": ["b1", "b2"]}]'
16
+ >>> dst = '[{"version": "0.0.1", "a": ["a2"], "b": ["b1", "b3"]}]'
17
+ >>> merge_json_string(src, dst)
18
+ '[{"version": "0.0.1", "a": ["a1", "a2"], "b": ["b1", "b2", "b3"]}]'
19
+
20
+ バージョンが無かった場合は無視される
21
+ >>> src = '[{"version": "1"}]'
22
+ >>> dst = '[{"version": "1"}, {"version": "2"}]'
23
+ >>> merge_json_string(src, dst)
24
+ '[{"version": "1"}]'
25
+ """
26
+ src_json: List[Dict[str, Union[str, List[str]]]] = json.loads(src)
27
+ dst_json: List[Dict[str, Union[str, List[str]]]] = json.loads(dst)
28
+
29
+ for src_item in src_json:
30
+ for dst_item in dst_json:
31
+ if src_item["version"] == dst_item["version"]:
32
+ for key in src_item:
33
+ if key == "version":
34
+ continue
35
+
36
+ # 異なるものがあった場合だけ後ろに付け足す
37
+ src_item[key] = list(
38
+ OrderedDict.fromkeys(src_item[key] + dst_item[key])
39
+ )
40
+
41
+ return json.dumps(src_json)
42
+
43
+
44
+ def merge_update_infos(src_path: Path, dst_path: Path, output_path: Path) -> None:
45
+ src = src_path.read_text(encoding="utf-8")
46
+ dst = dst_path.read_text(encoding="utf-8")
47
+ merged = merge_json_string(src, dst)
48
+ output_path.write_text(merged)
49
+
50
+
51
+ if __name__ == "__main__":
52
+ parser = argparse.ArgumentParser()
53
+ parser.add_argument("src_path", type=Path)
54
+ parser.add_argument("dst_path", type=Path)
55
+ parser.add_argument("output_path", type=Path)
56
+ args = parser.parse_args()
57
+ merge_update_infos(args.src_path, args.dst_path, args.output_path)
build_util/modify_pyinstaller.bash ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/bin/bash
2
+
3
+ # PyInstallerをカスタマイズしてから再インストールする
4
+ # 良いGPUが自動的に選択されるようにしている
5
+ # https://github.com/VOICEVOX/voicevox_engine/issues/502
6
+
7
+ set -eux
8
+
9
+ pyinstaller_version=$(pyinstaller -v)
10
+ tempdir=$(mktemp -dt modify_pyinstaller.XXXXXXXX)
11
+ trap 'rm -rf "$tempdir"' EXIT
12
+ git clone https://github.com/pyinstaller/pyinstaller.git "$tempdir" -b "v$pyinstaller_version" --depth 1
13
+ cat > "$tempdir/bootloader/src/symbols.c" << EOF
14
+ #ifdef _WIN32
15
+ #include <windows.h>
16
+
17
+ // https://docs.nvidia.com/gameworks/content/technologies/desktop/optimus.htm
18
+ __declspec(dllexport) DWORD NvOptimusEnablement = 0x00000001;
19
+
20
+ // https://gpuopen.com/learn/amdpowerxpressrequesthighperformance/
21
+ __declspec(dllexport) DWORD AmdPowerXpressRequestHighPerformance = 0x00000001;
22
+ #endif
23
+ EOF
24
+ (cd "$tempdir/bootloader" && python ./waf all)
25
+ pip install -U "$tempdir"
build_util/process_voicevox_resource.bash ADDED
@@ -0,0 +1,26 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ set -eux
2
+
3
+ if [ ! -v DOWNLOAD_RESOURCE_PATH ]; then
4
+ echo "DOWNLOAD_RESOURCE_PATHが未定義です"
5
+ exit 1
6
+ fi
7
+
8
+ rm -r speaker_info
9
+ cp -r $DOWNLOAD_RESOURCE_PATH/character_info speaker_info
10
+
11
+ python $DOWNLOAD_RESOURCE_PATH/scripts/clean_character_info.py \
12
+ --character_info_dir speaker_info/
13
+
14
+ # マニフェスト
15
+ jq -s '.[0] * .[1]' engine_manifest.json $DOWNLOAD_RESOURCE_PATH/engine/engine_manifest.json \
16
+ > engine_manifest.json.tmp
17
+ mv engine_manifest.json.tmp engine_manifest.json
18
+
19
+ python build_util/merge_update_infos.py \
20
+ engine_manifest_assets/update_infos.json \
21
+ $DOWNLOAD_RESOURCE_PATH/engine/engine_manifest_assets/update_infos.json \
22
+ engine_manifest_assets/update_infos.json
23
+
24
+ for f in $(ls $DOWNLOAD_RESOURCE_PATH/engine/engine_manifest_assets/* | grep -v update_infos.json); do
25
+ cp $f ./engine_manifest_assets/
26
+ done
default.csv ADDED
@@ -0,0 +1,62 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ 朱司,1351,1351,0,名詞,固有名詞,人名,名,*,*,*,アカシ,アカシ,1/3,C1
2
+ 青山,1350,1350,5000,名詞,固有名詞,人名,姓,*,*,*,アオヤマ,アオヤマ,2/4,C1
3
+ 雨晴,1350,1350,7000,名詞,固有名詞,人名,姓,*,*,*,アメハレ,アメハレ,2/4,C1
4
+ アル,1351,1351,7000,名詞,固有名詞,人名,名,*,*,*,アル,アル,1/2,C1
5
+ 櫻歌,1350,1350,0,名詞,固有名詞,人名,姓,*,*,*,オウカ,オーカ,1/3,C1
6
+ 音街,1350,1350,0,名詞,固有名詞,人名,姓,*,*,*,オトマチ,オトマチ,2/4,C1
7
+ 春日部,1350,1350,8600,名詞,固有名詞,人名,姓,*,*,*,カスカベ,カスカベ,0/4,C1
8
+ 麒ヶ島,1350,1350,0,名詞,固有名詞,人名,姓,*,*,*,キガシマ,キガシマ,2/4,C1
9
+ 紲星,1350,1350,0,名詞,固有名詞,人名,姓,*,*,*,キズナ,キズナ,1/3,C1
10
+ 九州,1350,1350,8600,名詞,固有名詞,人名,姓,*,*,*,キュウシュウ,キュウシュウ,1/4,C1
11
+ キョウコ,1351,1351,0,名詞,固有名詞,人名,名,*,*,*,キョオコ,キョオコ,1/3,C1
12
+ 玄野,1350,1350,5000,名詞,固有名詞,人名,姓,*,*,*,クロノ,クロノ,1/3,C1
13
+ 剣崎,1350,1350,5000,名詞,固有名詞,人名,姓,*,*,*,ケンザキ,ケンザキ,1/4,C1
14
+ 後鬼,1351,1351,0,名詞,固有名詞,人名,名,*,*,*,ゴキ,ゴキ,1/2,C1
15
+ 虎太郎,1351,1351,5000,名詞,固有名詞,人名,名,*,*,*,コタロウ,コタロー,4/4,C1
16
+ 琴葉,1350,1350,0,名詞,固有名詞,人名,姓,*,*,*,コトノハ,コトノハ,0/4,C1
17
+ 小夜,1351,1351,2200,名詞,固有名詞,人名,名,*,*,*,サヨ,サヨ,1/2,C1
18
+ 四国,1350,1350,2200,名詞,固有名詞,人名,姓,*,*,*,シコク,シコク,1/3,C1
19
+ 白上,1350,1350,5000,名詞,固有名詞,人名,姓,*,*,*,シラカミ,シラカミ,4/4,C1
20
+ ずんだもん,1351,1351,0,名詞,固有名詞,人名,名,*,*,*,ズンダモン,ズンダモン,1/5,C1
21
+ そら,1351,1351,7000,名詞,固有名詞,人名,名,*,*,*,ソラ,ソラ,1/2,C1
22
+ 宗麟,1351,1351,0,名詞,固有名詞,人名,名,*,*,*,ソウリン,ソウリン,1/4,C1
23
+ タイプT,1351,1351,5000,名詞,固有名詞,人名,名,*,*,*,タイプティー,タイプティー,4/5,C1
24
+ 波音,1350,1350,0,名詞,固有名詞,人名,姓,*,*,*,ナミネ,ナミネ,0/3,C1
25
+ 武宏,1351,1351,5000,名詞,固有名詞,人名,名,*,*,*,タケヒロ,タケヒロ,2/4,C1
26
+ ちび式じい,1351,1351,0,名詞,固有名詞,人名,名,*,*,*,チビシキジー,チビシキジー,5/6,C1
27
+ 月読,1350,1350,0,名詞,固有名詞,人名,姓,*,*,*,ツクヨミ,ツクヨミ,0/4,C1
28
+ つむぎ,1351,1351,7450,名詞,固有名詞,人名,名,*,*,*,ツムギ,ツムギ,0/3,C1
29
+ ナースロボ,1350,1350,0,名詞,固有名詞,人名,姓,*,*,*,ナースロボ,ナースロボ,4/5,C1
30
+ ナナ,1351,1351,8600,名詞,固有名詞,人名,名,*,*,*,ナナ,ナナ,1/2,C1
31
+ No.7,1351,1351,0,名詞,固有名詞,人名,名,*,*,*,ナンバーセブン,ナンバーセブン,5/7,C1
32
+ 猫使,1350,1350,2200,名詞,固有名詞,人名,姓,*,*,*,ネコツカ,ネコツカ,2/4,C1
33
+ はう,1351,1351,5000,名詞,固有名詞,人名,名,*,*,*,ハウ,ハウ,1/2,C1
34
+ 春歌,1350,1350,0,名詞,固有名詞,人名,姓,*,*,*,ハルカ,ハルカ,1/3,C1
35
+ 桜乃,1350,1350,0,名詞,固有名詞,人名,姓,*,*,*,ハルノ,ハルノ,1/3,C1
36
+ ビィ,1351,1351,7000,名詞,固有名詞,人名,名,*,*,*,ビー,ビー,1/2,C1
37
+ ひまり,1351,1351,7000,名詞,固有名詞,人名,名,*,*,*,ヒマリ,ヒマリ,0/3,C1
38
+ 紅桜,1351,1351,7000,名詞,固有名詞,人名,名,*,*,*,ベニザクラ,ベニザクラ,3/5,C1
39
+ 聖騎士,1350,1350,8600,名詞,固有名詞,人名,姓,*,*,*,ホーリーナイト,ホーリーナイト,5/7,C1
40
+ WhiteCUL,1351,1351,0,名詞,固有名詞,人名,名,*,*,*,ホワイトカル,ホワイトカル,5/6,C1
41
+ ミコ,1351,1351,3900,名詞,固有名詞,人名,名,*,*,*,ミコ,ミコ,1/2,C1
42
+ 水奈瀬,1350,1350,0,名詞,固有名詞,人名,姓,*,*,*,ミナセ,ミナセ,2/3,C1
43
+ 冥鳴,1350,1350,5000,名詞,固有名詞,人名,姓,*,*,*,メイメイ,メイメイ,1/4,C1
44
+ 鳴花,1350,1350,0,名詞,固有名詞,人名,姓,*,*,*,メイカ,メイカ,1/3,C1
45
+ めたん,1351,1351,7000,名詞,固有名詞,人名,名,*,*,*,メタン,メタン,1/3,C1
46
+ 雌雄,1351,1351,8600,名詞,固有名詞,人名,名,*,*,*,メスオ,メスオ,0/3,C1
47
+ もち子さん,1351,1351,0,名詞,固有名詞,人名,名,*,*,*,モチコサン,モチコサン,1/5,C1
48
+ モチノ,1350,1350,0,名詞,固有名詞,人名,姓,*,*,*,モチノ,モチノ,0/3,C1
49
+ 結月,1350,1350,0,名詞,固有名詞,人名,姓,*,*,*,ユヅキ,ユヅキ,1/3,C1
50
+ 弓鶴,1351,1351,0,名詞,固有名詞,人名,名,*,*,*,ユヅル,ユヅル,0/3,C1
51
+ リツ,1351,1351,3900,名詞,固有名詞,人名,名,*,*,*,リツ,リツ,1/2,C1
52
+ 六花,1351,1351,4900,名詞,固有名詞,人名,名,*,*,*,リッカ,リッカ,1/3,C1
53
+ 龍星,1351,1351,5000,名詞,固有名詞,人名,名,*,*,*,リュウセイ,リュウセイ,1/4,C1
54
+ 雀松,1350,1350,0,名詞,固有名詞,人名,姓,*,*,*,ワカマツ,ワカマツ,2/4,C1
55
+ COEIROINK,1348,1348,0,名詞,固有名詞,一般,*,*,*,*,コエイロインク,コエイロインク,5/7,C1
56
+ coeiroink,1348,1348,0,名詞,固有名詞,一般,*,*,*,*,コエイロインク,コエイロインク,5/7,C1
57
+ CoeFont,1348,1348,0,名詞,固有名詞,一般,*,*,*,*,コエフォント,コエフォント,3/5,C1
58
+ coefont,1348,1348,0,名詞,固有名詞,一般,*,*,*,*,コエフォント,コエフォント,3/5,C1
59
+ TALQu,1348,1348,0,名詞,固有名詞,一般,*,*,*,*,トーク,トーク,0/3,C1
60
+ talqu,1348,1348,0,名詞,固有名詞,一般,*,*,*,*,トーク,トーク,0/3,C1
61
+ VOICEVOX,1348,1348,0,名詞,固有名詞,一般,*,*,*,*,ボイスボックス,ボイスボックス,4/7,C1
62
+ voicevox,1348,1348,0,名詞,固有名詞,一般,*,*,*,*,ボイスボックス,ボイスボックス,4/7,C1
default_setting.yml ADDED
@@ -0,0 +1,2 @@
 
 
 
1
+ allow_origin: null
2
+ cors_policy_mode: localapps
docs/VOICEVOX音声合成エンジンとの連携.md ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
 
1
+ メモ書き程度ですが、どういう方針で開発を進めているかを紹介します。
2
+
3
+ - バージョンが上がっても、`/audio_query`で返ってくる値をそのまま`/synthesis`に POST すれば音声合成できるようにする予定です
4
+ - `AudioQuery`のパラメータは増えますが、なるべくデフォルト値で以前と変わらない音声が生成されるようにします
5
+ - バージョン 0.7 から音声スタイルが実装されました。スタイルの情報は`/speakers`から取得できます
6
+ - スタイルの情報にある`style_id`を`speaker`に指定することで、今まで通り音声合成ができます
7
+ - style_id の指定先が speaker なのは互換性のためです
docs/api/.gitkeep ADDED
File without changes
docs/licenses/cuda/EULA.txt ADDED
@@ -0,0 +1,1598 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ End User License Agreement
2
+ --------------------------
3
+
4
+ NVIDIA Software License Agreement and CUDA Supplement to
5
+ Software License Agreement. Last updated: October 8, 2021
6
+
7
+ The CUDA Toolkit End User License Agreement applies to the
8
+ NVIDIA CUDA Toolkit, the NVIDIA CUDA Samples, the NVIDIA
9
+ Display Driver, NVIDIA Nsight tools (Visual Studio Edition),
10
+ and the associated documentation on CUDA APIs, programming
11
+ model and development tools. If you do not agree with the
12
+ terms and conditions of the license agreement, then do not
13
+ download or use the software.
14
+
15
+ Last updated: October 8, 2021.
16
+
17
+
18
+ Preface
19
+ -------
20
+
21
+ The Software License Agreement in Chapter 1 and the Supplement
22
+ in Chapter 2 contain license terms and conditions that govern
23
+ the use of NVIDIA software. By accepting this agreement, you
24
+ agree to comply with all the terms and conditions applicable
25
+ to the product(s) included herein.
26
+
27
+
28
+ NVIDIA Driver
29
+
30
+
31
+ Description
32
+
33
+ This package contains the operating system driver and
34
+ fundamental system software components for NVIDIA GPUs.
35
+
36
+
37
+ NVIDIA CUDA Toolkit
38
+
39
+
40
+ Description
41
+
42
+ The NVIDIA CUDA Toolkit provides command-line and graphical
43
+ tools for building, debugging and optimizing the performance
44
+ of applications accelerated by NVIDIA GPUs, runtime and math
45
+ libraries, and documentation including programming guides,
46
+ user manuals, and API references.
47
+
48
+
49
+ Default Install Location of CUDA Toolkit
50
+
51
+ Windows platform:
52
+
53
+ %ProgramFiles%\NVIDIA GPU Computing Toolkit\CUDA\v#.#
54
+
55
+ Linux platform:
56
+
57
+ /usr/local/cuda-#.#
58
+
59
+ Mac platform:
60
+
61
+ /Developer/NVIDIA/CUDA-#.#
62
+
63
+
64
+ NVIDIA CUDA Samples
65
+
66
+
67
+ Description
68
+
69
+ CUDA Samples are now located in
70
+ https://github.com/nvidia/cuda-samples, which includes
71
+ instructions for obtaining, building, and running the samples.
72
+ They are no longer included in the CUDA toolkit.
73
+
74
+
75
+ NVIDIA Nsight Visual Studio Edition (Windows only)
76
+
77
+
78
+ Description
79
+
80
+ NVIDIA Nsight Development Platform, Visual Studio Edition is a
81
+ development environment integrated into Microsoft Visual
82
+ Studio that provides tools for debugging, profiling, analyzing
83
+ and optimizing your GPU computing and graphics applications.
84
+
85
+
86
+ Default Install Location of Nsight Visual Studio Edition
87
+
88
+ Windows platform:
89
+
90
+ %ProgramFiles(x86)%\NVIDIA Corporation\Nsight Visual Studio Edition #.#
91
+
92
+
93
+ 1. License Agreement for NVIDIA Software Development Kits
94
+ ---------------------------------------------------------
95
+
96
+
97
+ Important Notice—Read before downloading, installing,
98
+ copying or using the licensed software:
99
+ -------------------------------------------------------
100
+
101
+ This license agreement, including exhibits attached
102
+ ("Agreement”) is a legal agreement between you and NVIDIA
103
+ Corporation ("NVIDIA") and governs your use of a NVIDIA
104
+ software development kit (“SDK”).
105
+
106
+ Each SDK has its own set of software and materials, but here
107
+ is a description of the types of items that may be included in
108
+ a SDK: source code, header files, APIs, data sets and assets
109
+ (examples include images, textures, models, scenes, videos,
110
+ native API input/output files), binary software, sample code,
111
+ libraries, utility programs, programming code and
112
+ documentation.
113
+
114
+ This Agreement can be accepted only by an adult of legal age
115
+ of majority in the country in which the SDK is used.
116
+
117
+ If you are entering into this Agreement on behalf of a company
118
+ or other legal entity, you represent that you have the legal
119
+ authority to bind the entity to this Agreement, in which case
120
+ “you” will mean the entity you represent.
121
+
122
+ If you don’t have the required age or authority to accept
123
+ this Agreement, or if you don’t accept all the terms and
124
+ conditions of this Agreement, do not download, install or use
125
+ the SDK.
126
+
127
+ You agree to use the SDK only for purposes that are permitted
128
+ by (a) this Agreement, and (b) any applicable law, regulation
129
+ or generally accepted practices or guidelines in the relevant
130
+ jurisdictions.
131
+
132
+
133
+ 1.1. License
134
+
135
+
136
+ 1.1.1. License Grant
137
+
138
+ Subject to the terms of this Agreement, NVIDIA hereby grants
139
+ you a non-exclusive, non-transferable license, without the
140
+ right to sublicense (except as expressly provided in this
141
+ Agreement) to:
142
+
143
+ 1. Install and use the SDK,
144
+
145
+ 2. Modify and create derivative works of sample source code
146
+ delivered in the SDK, and
147
+
148
+ 3. Distribute those portions of the SDK that are identified
149
+ in this Agreement as distributable, as incorporated in
150
+ object code format into a software application that meets
151
+ the distribution requirements indicated in this Agreement.
152
+
153
+
154
+ 1.1.2. Distribution Requirements
155
+
156
+ These are the distribution requirements for you to exercise
157
+ the distribution grant:
158
+
159
+ 1. Your application must have material additional
160
+ functionality, beyond the included portions of the SDK.
161
+
162
+ 2. The distributable portions of the SDK shall only be
163
+ accessed by your application.
164
+
165
+ 3. The following notice shall be included in modifications
166
+ and derivative works of sample source code distributed:
167
+ “This software contains source code provided by NVIDIA
168
+ Corporation.”
169
+
170
+ 4. Unless a developer tool is identified in this Agreement
171
+ as distributable, it is delivered for your internal use
172
+ only.
173
+
174
+ 5. The terms under which you distribute your application
175
+ must be consistent with the terms of this Agreement,
176
+ including (without limitation) terms relating to the
177
+ license grant and license restrictions and protection of
178
+ NVIDIA’s intellectual property rights. Additionally, you
179
+ agree that you will protect the privacy, security and
180
+ legal rights of your application users.
181
+
182
+ 6. You agree to notify NVIDIA in writing of any known or
183
+ suspected distribution or use of the SDK not in compliance
184
+ with the requirements of this Agreement, and to enforce
185
+ the terms of your agreements with respect to distributed
186
+ SDK.
187
+
188
+
189
+ 1.1.3. Authorized Users
190
+
191
+ You may allow employees and contractors of your entity or of
192
+ your subsidiary(ies) to access and use the SDK from your
193
+ secure network to perform work on your behalf.
194
+
195
+ If you are an academic institution you may allow users
196
+ enrolled or employed by the academic institution to access and
197
+ use the SDK from your secure network.
198
+
199
+ You are responsible for the compliance with the terms of this
200
+ Agreement by your authorized users. If you become aware that
201
+ your authorized users didn’t follow the terms of this
202
+ Agreement, you agree to take reasonable steps to resolve the
203
+ non-compliance and prevent new occurrences.
204
+
205
+
206
+ 1.1.4. Pre-Release SDK
207
+
208
+ The SDK versions identified as alpha, beta, preview or
209
+ otherwise as pre-release, may not be fully functional, may
210
+ contain errors or design flaws, and may have reduced or
211
+ different security, privacy, accessibility, availability, and
212
+ reliability standards relative to commercial versions of
213
+ NVIDIA software and materials. Use of a pre-release SDK may
214
+ result in unexpected results, loss of data, project delays or
215
+ other unpredictable damage or loss.
216
+
217
+ You may use a pre-release SDK at your own risk, understanding
218
+ that pre-release SDKs are not intended for use in production
219
+ or business-critical systems.
220
+
221
+ NVIDIA may choose not to make available a commercial version
222
+ of any pre-release SDK. NVIDIA may also choose to abandon
223
+ development and terminate the availability of a pre-release
224
+ SDK at any time without liability.
225
+
226
+
227
+ 1.1.5. Updates
228
+
229
+ NVIDIA may, at its option, make available patches, workarounds
230
+ or other updates to this SDK. Unless the updates are provided
231
+ with their separate governing terms, they are deemed part of
232
+ the SDK licensed to you as provided in this Agreement. You
233
+ agree that the form and content of the SDK that NVIDIA
234
+ provides may change without prior notice to you. While NVIDIA
235
+ generally maintains compatibility between versions, NVIDIA may
236
+ in some cases make changes that introduce incompatibilities in
237
+ future versions of the SDK.
238
+
239
+
240
+ 1.1.6. Components Under Other Licenses
241
+
242
+ The SDK may come bundled with, or otherwise include or be
243
+ distributed with, NVIDIA or third-party components with
244
+ separate legal notices or terms as may be described in
245
+ proprietary notices accompanying the SDK. If and to the extent
246
+ there is a conflict between the terms in this Agreement and
247
+ the license terms associated with the component, the license
248
+ terms associated with the components control only to the
249
+ extent necessary to resolve the conflict.
250
+
251
+ Subject to the other terms of this Agreement, you may use the
252
+ SDK to develop and test applications released under Open
253
+ Source Initiative (OSI) approved open source software
254
+ licenses.
255
+
256
+
257
+ 1.1.7. Reservation of Rights
258
+
259
+ NVIDIA reserves all rights, title, and interest in and to the
260
+ SDK, not expressly granted to you under this Agreement.
261
+
262
+
263
+ 1.2. Limitations
264
+
265
+ The following license limitations apply to your use of the
266
+ SDK:
267
+
268
+ 1. You may not reverse engineer, decompile or disassemble,
269
+ or remove copyright or other proprietary notices from any
270
+ portion of the SDK or copies of the SDK.
271
+
272
+ 2. Except as expressly provided in this Agreement, you may
273
+ not copy, sell, rent, sublicense, transfer, distribute,
274
+ modify, or create derivative works of any portion of the
275
+ SDK. For clarity, you may not distribute or sublicense the
276
+ SDK as a stand-alone product.
277
+
278
+ 3. Unless you have an agreement with NVIDIA for this
279
+ purpose, you may not indicate that an application created
280
+ with the SDK is sponsored or endorsed by NVIDIA.
281
+
282
+ 4. You may not bypass, disable, or circumvent any
283
+ encryption, security, digital rights management or
284
+ authentication mechanism in the SDK.
285
+
286
+ 5. You may not use the SDK in any manner that would cause it
287
+ to become subject to an open source software license. As
288
+ examples, licenses that require as a condition of use,
289
+ modification, and/or distribution that the SDK be:
290
+
291
+ a. Disclosed or distributed in source code form;
292
+
293
+ b. Licensed for the purpose of making derivative works;
294
+ or
295
+
296
+ c. Redistributable at no charge.
297
+
298
+ 6. You acknowledge that the SDK as delivered is not tested
299
+ or certified by NVIDIA for use in connection with the
300
+ design, construction, maintenance, and/or operation of any
301
+ system where the use or failure of such system could
302
+ result in a situation that threatens the safety of human
303
+ life or results in catastrophic damages (each, a "Critical
304
+ Application"). Examples of Critical Applications include
305
+ use in avionics, navigation, autonomous vehicle
306
+ applications, ai solutions for automotive products,
307
+ military, medical, life support or other life critical
308
+ applications. NVIDIA shall not be liable to you or any
309
+ third party, in whole or in part, for any claims or
310
+ damages arising from such uses. You are solely responsible
311
+ for ensuring that any product or service developed with
312
+ the SDK as a whole includes sufficient features to comply
313
+ with all applicable legal and regulatory standards and
314
+ requirements.
315
+
316
+ 7. You agree to defend, indemnify and hold harmless NVIDIA
317
+ and its affiliates, and their respective employees,
318
+ contractors, agents, officers and directors, from and
319
+ against any and all claims, damages, obligations, losses,
320
+ liabilities, costs or debt, fines, restitutions and
321
+ expenses (including but not limited to attorney’s fees
322
+ and costs incident to establishing the right of
323
+ indemnification) arising out of or related to products or
324
+ services that use the SDK in or for Critical Applications,
325
+ and for use of the SDK outside of the scope of this
326
+ Agreement or not in compliance with its terms.
327
+
328
+ 8. You may not reverse engineer, decompile or disassemble
329
+ any portion of the output generated using SDK elements for
330
+ the purpose of translating such output artifacts to target
331
+ a non-NVIDIA platform.
332
+
333
+
334
+ 1.3. Ownership
335
+
336
+ 1. NVIDIA or its licensors hold all rights, title and
337
+ interest in and to the SDK and its modifications and
338
+ derivative works, including their respective intellectual
339
+ property rights, subject to your rights under Section
340
+ 1.3.2. This SDK may include software and materials from
341
+ NVIDIA’s licensors, and these licensors are intended
342
+ third party beneficiaries that may enforce this Agreement
343
+ with respect to their intellectual property rights.
344
+
345
+ 2. You hold all rights, title and interest in and to your
346
+ applications and your derivative works of the sample
347
+ source code delivered in the SDK, including their
348
+ respective intellectual property rights, subject to
349
+ NVIDIA’s rights under Section 1.3.1.
350
+
351
+ 3. You may, but don’t have to, provide to NVIDIA
352
+ suggestions, feature requests or other feedback regarding
353
+ the SDK, including possible enhancements or modifications
354
+ to the SDK. For any feedback that you voluntarily provide,
355
+ you hereby grant NVIDIA and its affiliates a perpetual,
356
+ non-exclusive, worldwide, irrevocable license to use,
357
+ reproduce, modify, license, sublicense (through multiple
358
+ tiers of sublicensees), and distribute (through multiple
359
+ tiers of distributors) it without the payment of any
360
+ royalties or fees to you. NVIDIA will use feedback at its
361
+ choice. NVIDIA is constantly looking for ways to improve
362
+ its products, so you may send feedback to NVIDIA through
363
+ the developer portal at https://developer.nvidia.com.
364
+
365
+
366
+ 1.4. No Warranties
367
+
368
+ THE SDK IS PROVIDED BY NVIDIA “AS IS” AND “WITH ALL
369
+ FAULTS.” TO THE MAXIMUM EXTENT PERMITTED BY LAW, NVIDIA AND
370
+ ITS AFFILIATES EXPRESSLY DISCLAIM ALL WARRANTIES OF ANY KIND
371
+ OR NATURE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING,
372
+ BUT NOT LIMITED TO, ANY WARRANTIES OF MERCHANTABILITY, FITNESS
373
+ FOR A PARTICULAR PURPOSE, TITLE, NON-INFRINGEMENT, OR THE
374
+ ABSENCE OF ANY DEFECTS THEREIN, WHETHER LATENT OR PATENT. NO
375
+ WARRANTY IS MADE ON THE BASIS OF TRADE USAGE, COURSE OF
376
+ DEALING OR COURSE OF TRADE.
377
+
378
+
379
+ 1.5. Limitation of Liability
380
+
381
+ TO THE MAXIMUM EXTENT PERMITTED BY LAW, NVIDIA AND ITS
382
+ AFFILIATES SHALL NOT BE LIABLE FOR ANY SPECIAL, INCIDENTAL,
383
+ PUNITIVE OR CONSEQUENTIAL DAMAGES, OR ANY LOST PROFITS, LOSS
384
+ OF USE, LOSS OF DATA OR LOSS OF GOODWILL, OR THE COSTS OF
385
+ PROCURING SUBSTITUTE PRODUCTS, ARISING OUT OF OR IN CONNECTION
386
+ WITH THIS AGREEMENT OR THE USE OR PERFORMANCE OF THE SDK,
387
+ WHETHER SUCH LIABILITY ARISES FROM ANY CLAIM BASED UPON BREACH
388
+ OF CONTRACT, BREACH OF WARRANTY, TORT (INCLUDING NEGLIGENCE),
389
+ PRODUCT LIABILITY OR ANY OTHER CAUSE OF ACTION OR THEORY OF
390
+ LIABILITY. IN NO EVENT WILL NVIDIA’S AND ITS AFFILIATES
391
+ TOTAL CUMULATIVE LIABILITY UNDER OR ARISING OUT OF THIS
392
+ AGREEMENT EXCEED US$10.00. THE NATURE OF THE LIABILITY OR THE
393
+ NUMBER OF CLAIMS OR SUITS SHALL NOT ENLARGE OR EXTEND THIS
394
+ LIMIT.
395
+
396
+ These exclusions and limitations of liability shall apply
397
+ regardless if NVIDIA or its affiliates have been advised of
398
+ the possibility of such damages, and regardless of whether a
399
+ remedy fails its essential purpose. These exclusions and
400
+ limitations of liability form an essential basis of the
401
+ bargain between the parties, and, absent any of these
402
+ exclusions or limitations of liability, the provisions of this
403
+ Agreement, including, without limitation, the economic terms,
404
+ would be substantially different.
405
+
406
+
407
+ 1.6. Termination
408
+
409
+ 1. This Agreement will continue to apply until terminated by
410
+ either you or NVIDIA as described below.
411
+
412
+ 2. If you want to terminate this Agreement, you may do so by
413
+ stopping to use the SDK.
414
+
415
+ 3. NVIDIA may, at any time, terminate this Agreement if:
416
+
417
+ a. (i) you fail to comply with any term of this
418
+ Agreement and the non-compliance is not fixed within
419
+ thirty (30) days following notice from NVIDIA (or
420
+ immediately if you violate NVIDIA’s intellectual
421
+ property rights);
422
+
423
+ b. (ii) you commence or participate in any legal
424
+ proceeding against NVIDIA with respect to the SDK; or
425
+
426
+ c. (iii) NVIDIA decides to no longer provide the SDK in
427
+ a country or, in NVIDIA’s sole discretion, the
428
+ continued use of it is no longer commercially viable.
429
+
430
+ 4. Upon any termination of this Agreement, you agree to
431
+ promptly discontinue use of the SDK and destroy all copies
432
+ in your possession or control. Your prior distributions in
433
+ accordance with this Agreement are not affected by the
434
+ termination of this Agreement. Upon written request, you
435
+ will certify in writing that you have complied with your
436
+ commitments under this section. Upon any termination of
437
+ this Agreement all provisions survive except for the
438
+ license grant provisions.
439
+
440
+
441
+ 1.7. General
442
+
443
+ If you wish to assign this Agreement or your rights and
444
+ obligations, including by merger, consolidation, dissolution
445
+ or operation of law, contact NVIDIA to ask for permission. Any
446
+ attempted assignment not approved by NVIDIA in writing shall
447
+ be void and of no effect. NVIDIA may assign, delegate or
448
+ transfer this Agreement and its rights and obligations, and if
449
+ to a non-affiliate you will be notified.
450
+
451
+ You agree to cooperate with NVIDIA and provide reasonably
452
+ requested information to verify your compliance with this
453
+ Agreement.
454
+
455
+ This Agreement will be governed in all respects by the laws of
456
+ the United States and of the State of Delaware as those laws
457
+ are applied to contracts entered into and performed entirely
458
+ within Delaware by Delaware residents, without regard to the
459
+ conflicts of laws principles. The United Nations Convention on
460
+ Contracts for the International Sale of Goods is specifically
461
+ disclaimed. You agree to all terms of this Agreement in the
462
+ English language.
463
+
464
+ The state or federal courts residing in Santa Clara County,
465
+ California shall have exclusive jurisdiction over any dispute
466
+ or claim arising out of this Agreement. Notwithstanding this,
467
+ you agree that NVIDIA shall still be allowed to apply for
468
+ injunctive remedies or an equivalent type of urgent legal
469
+ relief in any jurisdiction.
470
+
471
+ If any court of competent jurisdiction determines that any
472
+ provision of this Agreement is illegal, invalid or
473
+ unenforceable, such provision will be construed as limited to
474
+ the extent necessary to be consistent with and fully
475
+ enforceable under the law and the remaining provisions will
476
+ remain in full force and effect. Unless otherwise specified,
477
+ remedies are cumulative.
478
+
479
+ Each party acknowledges and agrees that the other is an
480
+ independent contractor in the performance of this Agreement.
481
+
482
+ The SDK has been developed entirely at private expense and is
483
+ “commercial items” consisting of “commercial computer
484
+ software” and “commercial computer software
485
+ documentation” provided with RESTRICTED RIGHTS. Use,
486
+ duplication or disclosure by the U.S. Government or a U.S.
487
+ Government subcontractor is subject to the restrictions in
488
+ this Agreement pursuant to DFARS 227.7202-3(a) or as set forth
489
+ in subparagraphs (c)(1) and (2) of the Commercial Computer
490
+ Software - Restricted Rights clause at FAR 52.227-19, as
491
+ applicable. Contractor/manufacturer is NVIDIA, 2788 San Tomas
492
+ Expressway, Santa Clara, CA 95051.
493
+
494
+ The SDK is subject to United States export laws and
495
+ regulations. You agree that you will not ship, transfer or
496
+ export the SDK into any country, or use the SDK in any manner,
497
+ prohibited by the United States Bureau of Industry and
498
+ Security or economic sanctions regulations administered by the
499
+ U.S. Department of Treasury’s Office of Foreign Assets
500
+ Control (OFAC), or any applicable export laws, restrictions or
501
+ regulations. These laws include restrictions on destinations,
502
+ end users and end use. By accepting this Agreement, you
503
+ confirm that you are not a resident or citizen of any country
504
+ currently embargoed by the U.S. and that you are not otherwise
505
+ prohibited from receiving the SDK.
506
+
507
+ Any notice delivered by NVIDIA to you under this Agreement
508
+ will be delivered via mail, email or fax. You agree that any
509
+ notices that NVIDIA sends you electronically will satisfy any
510
+ legal communication requirements. Please direct your legal
511
+ notices or other correspondence to NVIDIA Corporation, 2788
512
+ San Tomas Expressway, Santa Clara, California 95051, United
513
+ States of America, Attention: Legal Department.
514
+
515
+ This Agreement and any exhibits incorporated into this
516
+ Agreement constitute the entire agreement of the parties with
517
+ respect to the subject matter of this Agreement and supersede
518
+ all prior negotiations or documentation exchanged between the
519
+ parties relating to this SDK license. Any additional and/or
520
+ conflicting terms on documents issued by you are null, void,
521
+ and invalid. Any amendment or waiver under this Agreement
522
+ shall be in writing and signed by representatives of both
523
+ parties.
524
+
525
+
526
+ 2. CUDA Toolkit Supplement to Software License Agreement for
527
+ NVIDIA Software Development Kits
528
+ ------------------------------------------------------------
529
+
530
+ The terms in this supplement govern your use of the NVIDIA
531
+ CUDA Toolkit SDK under the terms of your license agreement
532
+ (“Agreement”) as modified by this supplement. Capitalized
533
+ terms used but not defined below have the meaning assigned to
534
+ them in the Agreement.
535
+
536
+ This supplement is an exhibit to the Agreement and is
537
+ incorporated as an integral part of the Agreement. In the
538
+ event of conflict between the terms in this supplement and the
539
+ terms in the Agreement, the terms in this supplement govern.
540
+
541
+
542
+ 2.1. License Scope
543
+
544
+ The SDK is licensed for you to develop applications only for
545
+ use in systems with NVIDIA GPUs.
546
+
547
+
548
+ 2.2. Distribution
549
+
550
+ The portions of the SDK that are distributable under the
551
+ Agreement are listed in Attachment A.
552
+
553
+
554
+ 2.3. Operating Systems
555
+
556
+ Those portions of the SDK designed exclusively for use on the
557
+ Linux or FreeBSD operating systems, or other operating systems
558
+ derived from the source code to these operating systems, may
559
+ be copied and redistributed for use in accordance with this
560
+ Agreement, provided that the object code files are not
561
+ modified in any way (except for unzipping of compressed
562
+ files).
563
+
564
+
565
+ 2.4. Audio and Video Encoders and Decoders
566
+
567
+ You acknowledge and agree that it is your sole responsibility
568
+ to obtain any additional third-party licenses required to
569
+ make, have made, use, have used, sell, import, and offer for
570
+ sale your products or services that include or incorporate any
571
+ third-party software and content relating to audio and/or
572
+ video encoders and decoders from, including but not limited
573
+ to, Microsoft, Thomson, Fraunhofer IIS, Sisvel S.p.A.,
574
+ MPEG-LA, and Coding Technologies. NVIDIA does not grant to you
575
+ under this Agreement any necessary patent or other rights with
576
+ respect to any audio and/or video encoders and decoders.
577
+
578
+
579
+ 2.5. Licensing
580
+
581
+ If the distribution terms in this Agreement are not suitable
582
+ for your organization, or for any questions regarding this
583
+ Agreement, please contact NVIDIA at
584
585
+
586
+
587
+ 2.6. Attachment A
588
+
589
+ The following CUDA Toolkit files may be distributed with
590
+ Licensee Applications developed by you, including certain
591
+ variations of these files that have version number or
592
+ architecture specific information embedded in the file name -
593
+ as an example only, for release version 9.0 of the 64-bit
594
+ Windows software, the file cudart64_90.dll is redistributable.
595
+
596
+ Component
597
+
598
+ CUDA Runtime
599
+
600
+ Windows
601
+
602
+ cudart.dll, cudart_static.lib, cudadevrt.lib
603
+
604
+ Mac OSX
605
+
606
+ libcudart.dylib, libcudart_static.a, libcudadevrt.a
607
+
608
+ Linux
609
+
610
+ libcudart.so, libcudart_static.a, libcudadevrt.a
611
+
612
+ Android
613
+
614
+ libcudart.so, libcudart_static.a, libcudadevrt.a
615
+
616
+ Component
617
+
618
+ CUDA FFT Library
619
+
620
+ Windows
621
+
622
+ cufft.dll, cufftw.dll, cufft.lib, cufftw.lib
623
+
624
+ Mac OSX
625
+
626
+ libcufft.dylib, libcufft_static.a, libcufftw.dylib,
627
+ libcufftw_static.a
628
+
629
+ Linux
630
+
631
+ libcufft.so, libcufft_static.a, libcufftw.so,
632
+ libcufftw_static.a
633
+
634
+ Android
635
+
636
+ libcufft.so, libcufft_static.a, libcufftw.so,
637
+ libcufftw_static.a
638
+
639
+ Component
640
+
641
+ CUDA BLAS Library
642
+
643
+ Windows
644
+
645
+ cublas.dll, cublasLt.dll
646
+
647
+ Mac OSX
648
+
649
+ libcublas.dylib, libcublasLt.dylib, libcublas_static.a,
650
+ libcublasLt_static.a
651
+
652
+ Linux
653
+
654
+ libcublas.so, libcublasLt.so, libcublas_static.a,
655
+ libcublasLt_static.a
656
+
657
+ Android
658
+
659
+ libcublas.so, libcublasLt.so, libcublas_static.a,
660
+ libcublasLt_static.a
661
+
662
+ Component
663
+
664
+ NVIDIA "Drop-in" BLAS Library
665
+
666
+ Windows
667
+
668
+ nvblas.dll
669
+
670
+ Mac OSX
671
+
672
+ libnvblas.dylib
673
+
674
+ Linux
675
+
676
+ libnvblas.so
677
+
678
+ Component
679
+
680
+ CUDA Sparse Matrix Library
681
+
682
+ Windows
683
+
684
+ cusparse.dll, cusparse.lib
685
+
686
+ Mac OSX
687
+
688
+ libcusparse.dylib, libcusparse_static.a
689
+
690
+ Linux
691
+
692
+ libcusparse.so, libcusparse_static.a
693
+
694
+ Android
695
+
696
+ libcusparse.so, libcusparse_static.a
697
+
698
+ Component
699
+
700
+ CUDA Linear Solver Library
701
+
702
+ Windows
703
+
704
+ cusolver.dll, cusolver.lib
705
+
706
+ Mac OSX
707
+
708
+ libcusolver.dylib, libcusolver_static.a
709
+
710
+ Linux
711
+
712
+ libcusolver.so, libcusolver_static.a
713
+
714
+ Android
715
+
716
+ libcusolver.so, libcusolver_static.a
717
+
718
+ Component
719
+
720
+ CUDA Random Number Generation Library
721
+
722
+ Windows
723
+
724
+ curand.dll, curand.lib
725
+
726
+ Mac OSX
727
+
728
+ libcurand.dylib, libcurand_static.a
729
+
730
+ Linux
731
+
732
+ libcurand.so, libcurand_static.a
733
+
734
+ Android
735
+
736
+ libcurand.so, libcurand_static.a
737
+
738
+ Component
739
+
740
+ NVIDIA Performance Primitives Library
741
+
742
+ Windows
743
+
744
+ nppc.dll, nppc.lib, nppial.dll, nppial.lib, nppicc.dll,
745
+ nppicc.lib, nppicom.dll, nppicom.lib, nppidei.dll,
746
+ nppidei.lib, nppif.dll, nppif.lib, nppig.dll, nppig.lib,
747
+ nppim.dll, nppim.lib, nppist.dll, nppist.lib, nppisu.dll,
748
+ nppisu.lib, nppitc.dll, nppitc.lib, npps.dll, npps.lib
749
+
750
+ Mac OSX
751
+
752
+ libnppc.dylib, libnppc_static.a, libnppial.dylib,
753
+ libnppial_static.a, libnppicc.dylib, libnppicc_static.a,
754
+ libnppicom.dylib, libnppicom_static.a, libnppidei.dylib,
755
+ libnppidei_static.a, libnppif.dylib, libnppif_static.a,
756
+ libnppig.dylib, libnppig_static.a, libnppim.dylib,
757
+ libnppisu_static.a, libnppitc.dylib, libnppitc_static.a,
758
+ libnpps.dylib, libnpps_static.a
759
+
760
+ Linux
761
+
762
+ libnppc.so, libnppc_static.a, libnppial.so,
763
+ libnppial_static.a, libnppicc.so, libnppicc_static.a,
764
+ libnppicom.so, libnppicom_static.a, libnppidei.so,
765
+ libnppidei_static.a, libnppif.so, libnppif_static.a
766
+ libnppig.so, libnppig_static.a, libnppim.so,
767
+ libnppim_static.a, libnppist.so, libnppist_static.a,
768
+ libnppisu.so, libnppisu_static.a, libnppitc.so
769
+ libnppitc_static.a, libnpps.so, libnpps_static.a
770
+
771
+ Android
772
+
773
+ libnppc.so, libnppc_static.a, libnppial.so,
774
+ libnppial_static.a, libnppicc.so, libnppicc_static.a,
775
+ libnppicom.so, libnppicom_static.a, libnppidei.so,
776
+ libnppidei_static.a, libnppif.so, libnppif_static.a
777
+ libnppig.so, libnppig_static.a, libnppim.so,
778
+ libnppim_static.a, libnppist.so, libnppist_static.a,
779
+ libnppisu.so, libnppisu_static.a, libnppitc.so
780
+ libnppitc_static.a, libnpps.so, libnpps_static.a
781
+
782
+ Component
783
+
784
+ NVIDIA JPEG Library
785
+
786
+ Windows
787
+
788
+ nvjpeg.lib, nvjpeg.dll
789
+
790
+ Linux
791
+
792
+ libnvjpeg.so, libnvjpeg_static.a
793
+
794
+ Component
795
+
796
+ Internal common library required for statically linking to
797
+ cuBLAS, cuSPARSE, cuFFT, cuRAND, nvJPEG and NPP
798
+
799
+ Mac OSX
800
+
801
+ libculibos.a
802
+
803
+ Linux
804
+
805
+ libculibos.a
806
+
807
+ Component
808
+
809
+ NVIDIA Runtime Compilation Library and Header
810
+
811
+ All
812
+
813
+ nvrtc.h
814
+
815
+ Windows
816
+
817
+ nvrtc.dll, nvrtc-builtins.dll
818
+
819
+ Mac OSX
820
+
821
+ libnvrtc.dylib, libnvrtc-builtins.dylib
822
+
823
+ Linux
824
+
825
+ libnvrtc.so, libnvrtc-builtins.so
826
+
827
+ Component
828
+
829
+ NVIDIA Optimizing Compiler Library
830
+
831
+ Windows
832
+
833
+ nvvm.dll
834
+
835
+ Mac OSX
836
+
837
+ libnvvm.dylib
838
+
839
+ Linux
840
+
841
+ libnvvm.so
842
+
843
+ Component
844
+
845
+ NVIDIA Common Device Math Functions Library
846
+
847
+ Windows
848
+
849
+ libdevice.10.bc
850
+
851
+ Mac OSX
852
+
853
+ libdevice.10.bc
854
+
855
+ Linux
856
+
857
+ libdevice.10.bc
858
+
859
+ Component
860
+
861
+ CUDA Occupancy Calculation Header Library
862
+
863
+ All
864
+
865
+ cuda_occupancy.h
866
+
867
+ Component
868
+
869
+ CUDA Half Precision Headers
870
+
871
+ All
872
+
873
+ cuda_fp16.h, cuda_fp16.hpp
874
+
875
+ Component
876
+
877
+ CUDA Profiling Tools Interface (CUPTI) Library
878
+
879
+ Windows
880
+
881
+ cupti.dll
882
+
883
+ Mac OSX
884
+
885
+ libcupti.dylib
886
+
887
+ Linux
888
+
889
+ libcupti.so
890
+
891
+ Component
892
+
893
+ NVIDIA Tools Extension Library
894
+
895
+ Windows
896
+
897
+ nvToolsExt.dll, nvToolsExt.lib
898
+
899
+ Mac OSX
900
+
901
+ libnvToolsExt.dylib
902
+
903
+ Linux
904
+
905
+ libnvToolsExt.so
906
+
907
+ Component
908
+
909
+ NVIDIA CUDA Driver Libraries
910
+
911
+ Linux
912
+
913
+ libcuda.so, libnvidia-ptxjitcompiler.so
914
+
915
+ Component
916
+
917
+ NVIDIA CUDA File IO Libraries and Header
918
+
919
+ All
920
+
921
+ cufile.h
922
+
923
+ Linux
924
+
925
+ libcufile.so, libcufile_rdma.so, libcufile_static.a,
926
+ libcufile_rdma_static.a
927
+
928
+ The NVIDIA CUDA Driver Libraries are only distributable in
929
+ applications that meet this criteria:
930
+
931
+ 1. The application was developed starting from a NVIDIA CUDA
932
+ container obtained from Docker Hub or the NVIDIA GPU
933
+ Cloud, and
934
+
935
+ 2. The resulting application is packaged as a Docker
936
+ container and distributed to users on Docker Hub or the
937
+ NVIDIA GPU Cloud only.
938
+
939
+ In addition to the rights above, for parties that are
940
+ developing software intended solely for use on Jetson
941
+ development kits or Jetson modules, and running Linux for
942
+ Tegra software, the following shall apply:
943
+
944
+ * The SDK may be distributed in its entirety, as provided by
945
+ NVIDIA, and without separation of its components, for you
946
+ and/or your licensees to create software development kits
947
+ for use only on the Jetson platform and running Linux for
948
+ Tegra software.
949
+
950
+
951
+ 2.7. Attachment B
952
+
953
+
954
+ Additional Licensing Obligations
955
+
956
+ The following third party components included in the SOFTWARE
957
+ are licensed to Licensee pursuant to the following terms and
958
+ conditions:
959
+
960
+ 1. Licensee's use of the GDB third party component is
961
+ subject to the terms and conditions of GNU GPL v3:
962
+
963
+ This product includes copyrighted third-party software licensed
964
+ under the terms of the GNU General Public License v3 ("GPL v3").
965
+ All third-party software packages are copyright by their respective
966
+ authors. GPL v3 terms and conditions are hereby incorporated into
967
+ the Agreement by this reference: http://www.gnu.org/licenses/gpl.txt
968
+
969
+ Consistent with these licensing requirements, the software
970
+ listed below is provided under the terms of the specified
971
+ open source software licenses. To obtain source code for
972
+ software provided under licenses that require
973
+ redistribution of source code, including the GNU General
974
+ Public License (GPL) and GNU Lesser General Public License
975
+ (LGPL), contact [email protected]. This offer is
976
+ valid for a period of three (3) years from the date of the
977
+ distribution of this product by NVIDIA CORPORATION.
978
+
979
+ Component License
980
+ CUDA-GDB GPL v3
981
+
982
+ 2. Licensee represents and warrants that any and all third
983
+ party licensing and/or royalty payment obligations in
984
+ connection with Licensee's use of the H.264 video codecs
985
+ are solely the responsibility of Licensee.
986
+
987
+ 3. Licensee's use of the Thrust library is subject to the
988
+ terms and conditions of the Apache License Version 2.0.
989
+ All third-party software packages are copyright by their
990
+ respective authors. Apache License Version 2.0 terms and
991
+ conditions are hereby incorporated into the Agreement by
992
+ this reference.
993
+ http://www.apache.org/licenses/LICENSE-2.0.html
994
+
995
+ In addition, Licensee acknowledges the following notice:
996
+ Thrust includes source code from the Boost Iterator,
997
+ Tuple, System, and Random Number libraries.
998
+
999
+ Boost Software License - Version 1.0 - August 17th, 2003
1000
+ . . . .
1001
+
1002
+ Permission is hereby granted, free of charge, to any person or
1003
+ organization obtaining a copy of the software and accompanying
1004
+ documentation covered by this license (the "Software") to use,
1005
+ reproduce, display, distribute, execute, and transmit the Software,
1006
+ and to prepare derivative works of the Software, and to permit
1007
+ third-parties to whom the Software is furnished to do so, all
1008
+ subject to the following:
1009
+
1010
+ The copyright notices in the Software and this entire statement,
1011
+ including the above license grant, this restriction and the following
1012
+ disclaimer, must be included in all copies of the Software, in whole
1013
+ or in part, and all derivative works of the Software, unless such
1014
+ copies or derivative works are solely in the form of machine-executable
1015
+ object code generated by a source language processor.
1016
+
1017
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
1018
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
1019
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE AND
1020
+ NON-INFRINGEMENT. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR
1021
+ ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE FOR ANY DAMAGES OR
1022
+ OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, ARISING
1023
+ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
1024
+ OTHER DEALINGS IN THE SOFTWARE.
1025
+
1026
+ 4. Licensee's use of the LLVM third party component is
1027
+ subject to the following terms and conditions:
1028
+
1029
+ ======================================================
1030
+ LLVM Release License
1031
+ ======================================================
1032
+ University of Illinois/NCSA
1033
+ Open Source License
1034
+
1035
+ Copyright (c) 2003-2010 University of Illinois at Urbana-Champaign.
1036
+ All rights reserved.
1037
+
1038
+ Developed by:
1039
+
1040
+ LLVM Team
1041
+
1042
+ University of Illinois at Urbana-Champaign
1043
+
1044
+ http://llvm.org
1045
+
1046
+ Permission is hereby granted, free of charge, to any person obtaining a copy
1047
+ of this software and associated documentation files (the "Software"), to
1048
+ deal with the Software without restriction, including without limitation the
1049
+ rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
1050
+ sell copies of the Software, and to permit persons to whom the Software is
1051
+ furnished to do so, subject to the following conditions:
1052
+
1053
+ * Redistributions of source code must retain the above copyright notice,
1054
+ this list of conditions and the following disclaimers.
1055
+
1056
+ * Redistributions in binary form must reproduce the above copyright
1057
+ notice, this list of conditions and the following disclaimers in the
1058
+ documentation and/or other materials provided with the distribution.
1059
+
1060
+ * Neither the names of the LLVM Team, University of Illinois at Urbana-
1061
+ Champaign, nor the names of its contributors may be used to endorse or
1062
+ promote products derived from this Software without specific prior
1063
+ written permission.
1064
+
1065
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
1066
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
1067
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
1068
+ THE CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
1069
+ OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
1070
+ ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
1071
+ DEALINGS WITH THE SOFTWARE.
1072
+
1073
+ 5. Licensee's use of the PCRE third party component is
1074
+ subject to the following terms and conditions:
1075
+
1076
+ ------------
1077
+ PCRE LICENCE
1078
+ ------------
1079
+ PCRE is a library of functions to support regular expressions whose syntax
1080
+ and semantics are as close as possible to those of the Perl 5 language.
1081
+ Release 8 of PCRE is distributed under the terms of the "BSD" licence, as
1082
+ specified below. The documentation for PCRE, supplied in the "doc"
1083
+ directory, is distributed under the same terms as the software itself. The
1084
+ basic library functions are written in C and are freestanding. Also
1085
+ included in the distribution is a set of C++ wrapper functions, and a just-
1086
+ in-time compiler that can be used to optimize pattern matching. These are
1087
+ both optional features that can be omitted when the library is built.
1088
+
1089
+ THE BASIC LIBRARY FUNCTIONS
1090
+ ---------------------------
1091
+ Written by: Philip Hazel
1092
+ Email local part: ph10
1093
+ Email domain: cam.ac.uk
1094
+ University of Cambridge Computing Service,
1095
+ Cambridge, England.
1096
+ Copyright (c) 1997-2012 University of Cambridge
1097
+ All rights reserved.
1098
+
1099
+ PCRE JUST-IN-TIME COMPILATION SUPPORT
1100
+ -------------------------------------
1101
+ Written by: Zoltan Herczeg
1102
+ Email local part: hzmester
1103
+ Emain domain: freemail.hu
1104
+ Copyright(c) 2010-2012 Zoltan Herczeg
1105
+ All rights reserved.
1106
+
1107
+ STACK-LESS JUST-IN-TIME COMPILER
1108
+ --------------------------------
1109
+ Written by: Zoltan Herczeg
1110
+ Email local part: hzmester
1111
+ Emain domain: freemail.hu
1112
+ Copyright(c) 2009-2012 Zoltan Herczeg
1113
+ All rights reserved.
1114
+
1115
+ THE C++ WRAPPER FUNCTIONS
1116
+ -------------------------
1117
+ Contributed by: Google Inc.
1118
+ Copyright (c) 2007-2012, Google Inc.
1119
+ All rights reserved.
1120
+
1121
+ THE "BSD" LICENCE
1122
+ -----------------
1123
+ Redistribution and use in source and binary forms, with or without
1124
+ modification, are permitted provided that the following conditions are met:
1125
+
1126
+ * Redistributions of source code must retain the above copyright notice,
1127
+ this list of conditions and the following disclaimer.
1128
+
1129
+ * Redistributions in binary form must reproduce the above copyright
1130
+ notice, this list of conditions and the following disclaimer in the
1131
+ documentation and/or other materials provided with the distribution.
1132
+
1133
+ * Neither the name of the University of Cambridge nor the name of Google
1134
+ Inc. nor the names of their contributors may be used to endorse or
1135
+ promote products derived from this software without specific prior
1136
+ written permission.
1137
+
1138
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
1139
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
1140
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
1141
+ ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
1142
+ LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
1143
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
1144
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
1145
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
1146
+ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
1147
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
1148
+ POSSIBILITY OF SUCH DAMAGE.
1149
+
1150
+ 6. Some of the cuBLAS library routines were written by or
1151
+ derived from code written by Vasily Volkov and are subject
1152
+ to the Modified Berkeley Software Distribution License as
1153
+ follows:
1154
+
1155
+ Copyright (c) 2007-2009, Regents of the University of California
1156
+
1157
+ All rights reserved.
1158
+
1159
+ Redistribution and use in source and binary forms, with or without
1160
+ modification, are permitted provided that the following conditions are
1161
+ met:
1162
+ * Redistributions of source code must retain the above copyright
1163
+ notice, this list of conditions and the following disclaimer.
1164
+ * Redistributions in binary form must reproduce the above
1165
+ copyright notice, this list of conditions and the following
1166
+ disclaimer in the documentation and/or other materials provided
1167
+ with the distribution.
1168
+ * Neither the name of the University of California, Berkeley nor
1169
+ the names of its contributors may be used to endorse or promote
1170
+ products derived from this software without specific prior
1171
+ written permission.
1172
+
1173
+ THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR
1174
+ IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
1175
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
1176
+ DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
1177
+ INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
1178
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
1179
+ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
1180
+ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
1181
+ STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
1182
+ IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
1183
+ POSSIBILITY OF SUCH DAMAGE.
1184
+
1185
+ 7. Some of the cuBLAS library routines were written by or
1186
+ derived from code written by Davide Barbieri and are
1187
+ subject to the Modified Berkeley Software Distribution
1188
+ License as follows:
1189
+
1190
+ Copyright (c) 2008-2009 Davide Barbieri @ University of Rome Tor Vergata.
1191
+
1192
+ All rights reserved.
1193
+
1194
+ Redistribution and use in source and binary forms, with or without
1195
+ modification, are permitted provided that the following conditions are
1196
+ met:
1197
+ * Redistributions of source code must retain the above copyright
1198
+ notice, this list of conditions and the following disclaimer.
1199
+ * Redistributions in binary form must reproduce the above
1200
+ copyright notice, this list of conditions and the following
1201
+ disclaimer in the documentation and/or other materials provided
1202
+ with the distribution.
1203
+ * The name of the author may not be used to endorse or promote
1204
+ products derived from this software without specific prior
1205
+ written permission.
1206
+
1207
+ THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR
1208
+ IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
1209
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
1210
+ DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
1211
+ INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
1212
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
1213
+ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
1214
+ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
1215
+ STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
1216
+ IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
1217
+ POSSIBILITY OF SUCH DAMAGE.
1218
+
1219
+ 8. Some of the cuBLAS library routines were derived from
1220
+ code developed by the University of Tennessee and are
1221
+ subject to the Modified Berkeley Software Distribution
1222
+ License as follows:
1223
+
1224
+ Copyright (c) 2010 The University of Tennessee.
1225
+
1226
+ All rights reserved.
1227
+
1228
+ Redistribution and use in source and binary forms, with or without
1229
+ modification, are permitted provided that the following conditions are
1230
+ met:
1231
+ * Redistributions of source code must retain the above copyright
1232
+ notice, this list of conditions and the following disclaimer.
1233
+ * Redistributions in binary form must reproduce the above
1234
+ copyright notice, this list of conditions and the following
1235
+ disclaimer listed in this license in the documentation and/or
1236
+ other materials provided with the distribution.
1237
+ * Neither the name of the copyright holders nor the names of its
1238
+ contributors may be used to endorse or promote products derived
1239
+ from this software without specific prior written permission.
1240
+
1241
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
1242
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
1243
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
1244
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
1245
+ OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
1246
+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
1247
+ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
1248
+ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
1249
+ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
1250
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
1251
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
1252
+
1253
+ 9. Some of the cuBLAS library routines were written by or
1254
+ derived from code written by Jonathan Hogg and are subject
1255
+ to the Modified Berkeley Software Distribution License as
1256
+ follows:
1257
+
1258
+ Copyright (c) 2012, The Science and Technology Facilities Council (STFC).
1259
+
1260
+ All rights reserved.
1261
+
1262
+ Redistribution and use in source and binary forms, with or without
1263
+ modification, are permitted provided that the following conditions are
1264
+ met:
1265
+ * Redistributions of source code must retain the above copyright
1266
+ notice, this list of conditions and the following disclaimer.
1267
+ * Redistributions in binary form must reproduce the above
1268
+ copyright notice, this list of conditions and the following
1269
+ disclaimer in the documentation and/or other materials provided
1270
+ with the distribution.
1271
+ * Neither the name of the STFC nor the names of its contributors
1272
+ may be used to endorse or promote products derived from this
1273
+ software without specific prior written permission.
1274
+
1275
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
1276
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
1277
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
1278
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE STFC BE
1279
+ LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
1280
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
1281
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
1282
+ BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
1283
+ WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
1284
+ OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
1285
+ IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
1286
+
1287
+ 10. Some of the cuBLAS library routines were written by or
1288
+ derived from code written by Ahmad M. Abdelfattah, David
1289
+ Keyes, and Hatem Ltaief, and are subject to the Apache
1290
+ License, Version 2.0, as follows:
1291
+
1292
+ -- (C) Copyright 2013 King Abdullah University of Science and Technology
1293
+ Authors:
1294
+ Ahmad Abdelfattah ([email protected])
1295
+ David Keyes ([email protected])
1296
+ Hatem Ltaief ([email protected])
1297
+
1298
+ Redistribution and use in source and binary forms, with or without
1299
+ modification, are permitted provided that the following conditions
1300
+ are met:
1301
+
1302
+ * Redistributions of source code must retain the above copyright
1303
+ notice, this list of conditions and the following disclaimer.
1304
+ * Redistributions in binary form must reproduce the above copyright
1305
+ notice, this list of conditions and the following disclaimer in the
1306
+ documentation and/or other materials provided with the distribution.
1307
+ * Neither the name of the King Abdullah University of Science and
1308
+ Technology nor the names of its contributors may be used to endorse
1309
+ or promote products derived from this software without specific prior
1310
+ written permission.
1311
+
1312
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
1313
+ ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
1314
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
1315
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
1316
+ HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
1317
+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
1318
+ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
1319
+ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
1320
+ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
1321
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
1322
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE
1323
+
1324
+ 11. Some of the cuSPARSE library routines were written by or
1325
+ derived from code written by Li-Wen Chang and are subject
1326
+ to the NCSA Open Source License as follows:
1327
+
1328
+ Copyright (c) 2012, University of Illinois.
1329
+
1330
+ All rights reserved.
1331
+
1332
+ Developed by: IMPACT Group, University of Illinois, http://impact.crhc.illinois.edu
1333
+
1334
+ Permission is hereby granted, free of charge, to any person obtaining
1335
+ a copy of this software and associated documentation files (the
1336
+ "Software"), to deal with the Software without restriction, including
1337
+ without limitation the rights to use, copy, modify, merge, publish,
1338
+ distribute, sublicense, and/or sell copies of the Software, and to
1339
+ permit persons to whom the Software is furnished to do so, subject to
1340
+ the following conditions:
1341
+ * Redistributions of source code must retain the above copyright
1342
+ notice, this list of conditions and the following disclaimer.
1343
+ * Redistributions in binary form must reproduce the above
1344
+ copyright notice, this list of conditions and the following
1345
+ disclaimers in the documentation and/or other materials provided
1346
+ with the distribution.
1347
+ * Neither the names of IMPACT Group, University of Illinois, nor
1348
+ the names of its contributors may be used to endorse or promote
1349
+ products derived from this Software without specific prior
1350
+ written permission.
1351
+
1352
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
1353
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
1354
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
1355
+ NONINFRINGEMENT. IN NO EVENT SHALL THE CONTRIBUTORS OR COPYRIGHT
1356
+ HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
1357
+ IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
1358
+ IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE
1359
+ SOFTWARE.
1360
+
1361
+ 12. Some of the cuRAND library routines were written by or
1362
+ derived from code written by Mutsuo Saito and Makoto
1363
+ Matsumoto and are subject to the following license:
1364
+
1365
+ Copyright (c) 2009, 2010 Mutsuo Saito, Makoto Matsumoto and Hiroshima
1366
+ University. All rights reserved.
1367
+
1368
+ Copyright (c) 2011 Mutsuo Saito, Makoto Matsumoto, Hiroshima
1369
+ University and University of Tokyo. All rights reserved.
1370
+
1371
+ Redistribution and use in source and binary forms, with or without
1372
+ modification, are permitted provided that the following conditions are
1373
+ met:
1374
+ * Redistributions of source code must retain the above copyright
1375
+ notice, this list of conditions and the following disclaimer.
1376
+ * Redistributions in binary form must reproduce the above
1377
+ copyright notice, this list of conditions and the following
1378
+ disclaimer in the documentation and/or other materials provided
1379
+ with the distribution.
1380
+ * Neither the name of the Hiroshima University nor the names of
1381
+ its contributors may be used to endorse or promote products
1382
+ derived from this software without specific prior written
1383
+ permission.
1384
+
1385
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
1386
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
1387
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
1388
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
1389
+ OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
1390
+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
1391
+ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
1392
+ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
1393
+ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
1394
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
1395
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
1396
+
1397
+ 13. Some of the cuRAND library routines were derived from
1398
+ code developed by D. E. Shaw Research and are subject to
1399
+ the following license:
1400
+
1401
+ Copyright 2010-2011, D. E. Shaw Research.
1402
+
1403
+ All rights reserved.
1404
+
1405
+ Redistribution and use in source and binary forms, with or without
1406
+ modification, are permitted provided that the following conditions are
1407
+ met:
1408
+ * Redistributions of source code must retain the above copyright
1409
+ notice, this list of conditions, and the following disclaimer.
1410
+ * Redistributions in binary form must reproduce the above
1411
+ copyright notice, this list of conditions, and the following
1412
+ disclaimer in the documentation and/or other materials provided
1413
+ with the distribution.
1414
+ * Neither the name of D. E. Shaw Research nor the names of its
1415
+ contributors may be used to endorse or promote products derived
1416
+ from this software without specific prior written permission.
1417
+
1418
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
1419
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
1420
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
1421
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
1422
+ OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
1423
+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
1424
+ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
1425
+ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
1426
+ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
1427
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
1428
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
1429
+
1430
+ 14. Some of the Math library routines were written by or
1431
+ derived from code developed by Norbert Juffa and are
1432
+ subject to the following license:
1433
+
1434
+ Copyright (c) 2015-2017, Norbert Juffa
1435
+ All rights reserved.
1436
+
1437
+ Redistribution and use in source and binary forms, with or without
1438
+ modification, are permitted provided that the following conditions
1439
+ are met:
1440
+
1441
+ 1. Redistributions of source code must retain the above copyright
1442
+ notice, this list of conditions and the following disclaimer.
1443
+
1444
+ 2. Redistributions in binary form must reproduce the above copyright
1445
+ notice, this list of conditions and the following disclaimer in the
1446
+ documentation and/or other materials provided with the distribution.
1447
+
1448
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
1449
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
1450
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
1451
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
1452
+ HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
1453
+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
1454
+ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
1455
+ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
1456
+ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
1457
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
1458
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
1459
+
1460
+ 15. Licensee's use of the lz4 third party component is
1461
+ subject to the following terms and conditions:
1462
+
1463
+ Copyright (C) 2011-2013, Yann Collet.
1464
+ BSD 2-Clause License (http://www.opensource.org/licenses/bsd-license.php)
1465
+
1466
+ Redistribution and use in source and binary forms, with or without
1467
+ modification, are permitted provided that the following conditions are
1468
+ met:
1469
+
1470
+ * Redistributions of source code must retain the above copyright
1471
+ notice, this list of conditions and the following disclaimer.
1472
+ * Redistributions in binary form must reproduce the above
1473
+ copyright notice, this list of conditions and the following disclaimer
1474
+ in the documentation and/or other materials provided with the
1475
+ distribution.
1476
+
1477
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
1478
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
1479
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
1480
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
1481
+ OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
1482
+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
1483
+ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
1484
+ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
1485
+ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
1486
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
1487
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
1488
+
1489
+ 16. The NPP library uses code from the Boost Math Toolkit,
1490
+ and is subject to the following license:
1491
+
1492
+ Boost Software License - Version 1.0 - August 17th, 2003
1493
+ . . . .
1494
+
1495
+ Permission is hereby granted, free of charge, to any person or
1496
+ organization obtaining a copy of the software and accompanying
1497
+ documentation covered by this license (the "Software") to use,
1498
+ reproduce, display, distribute, execute, and transmit the Software,
1499
+ and to prepare derivative works of the Software, and to permit
1500
+ third-parties to whom the Software is furnished to do so, all
1501
+ subject to the following:
1502
+
1503
+ The copyright notices in the Software and this entire statement,
1504
+ including the above license grant, this restriction and the following
1505
+ disclaimer, must be included in all copies of the Software, in whole
1506
+ or in part, and all derivative works of the Software, unless such
1507
+ copies or derivative works are solely in the form of machine-executable
1508
+ object code generated by a source language processor.
1509
+
1510
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
1511
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
1512
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE AND
1513
+ NON-INFRINGEMENT. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR
1514
+ ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE FOR ANY DAMAGES OR
1515
+ OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, ARISING
1516
+ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
1517
+ OTHER DEALINGS IN THE SOFTWARE.
1518
+
1519
+ 17. Portions of the Nsight Eclipse Edition is subject to the
1520
+ following license:
1521
+
1522
+ The Eclipse Foundation makes available all content in this plug-in
1523
+ ("Content"). Unless otherwise indicated below, the Content is provided
1524
+ to you under the terms and conditions of the Eclipse Public License
1525
+ Version 1.0 ("EPL"). A copy of the EPL is available at http://
1526
+ www.eclipse.org/legal/epl-v10.html. For purposes of the EPL, "Program"
1527
+ will mean the Content.
1528
+
1529
+ If you did not receive this Content directly from the Eclipse
1530
+ Foundation, the Content is being redistributed by another party
1531
+ ("Redistributor") and different terms and conditions may apply to your
1532
+ use of any object code in the Content. Check the Redistributor's
1533
+ license that was provided with the Content. If no such license exists,
1534
+ contact the Redistributor. Unless otherwise indicated below, the terms
1535
+ and conditions of the EPL still apply to any source code in the
1536
+ Content and such source code may be obtained at http://www.eclipse.org.
1537
+
1538
+ 18. Some of the cuBLAS library routines uses code from
1539
+ OpenAI, which is subject to the following license:
1540
+
1541
+ License URL
1542
+ https://github.com/openai/openai-gemm/blob/master/LICENSE
1543
+
1544
+ License Text
1545
+ The MIT License
1546
+
1547
+ Copyright (c) 2016 OpenAI (http://openai.com), 2016 Google Inc.
1548
+
1549
+ Permission is hereby granted, free of charge, to any person obtaining a copy
1550
+ of this software and associated documentation files (the "Software"), to deal
1551
+ in the Software without restriction, including without limitation the rights
1552
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
1553
+ copies of the Software, and to permit persons to whom the Software is
1554
+ furnished to do so, subject to the following conditions:
1555
+
1556
+ The above copyright notice and this permission notice shall be included in
1557
+ all copies or substantial portions of the Software.
1558
+
1559
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
1560
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
1561
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
1562
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
1563
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
1564
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
1565
+ THE SOFTWARE.
1566
+
1567
+ 19. Licensee's use of the Visual Studio Setup Configuration
1568
+ Samples is subject to the following license:
1569
+
1570
+ The MIT License (MIT)
1571
+ Copyright (C) Microsoft Corporation. All rights reserved.
1572
+
1573
+ Permission is hereby granted, free of charge, to any person
1574
+ obtaining a copy of this software and associated documentation
1575
+ files (the "Software"), to deal in the Software without restriction,
1576
+ including without limitation the rights to use, copy, modify, merge,
1577
+ publish, distribute, sublicense, and/or sell copies of the Software,
1578
+ and to permit persons to whom the Software is furnished to do so,
1579
+ subject to the following conditions:
1580
+
1581
+ The above copyright notice and this permission notice shall be included
1582
+ in all copies or substantial portions of the Software.
1583
+
1584
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
1585
+ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
1586
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
1587
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
1588
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
1589
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
1590
+
1591
+ 20. Licensee's use of linmath.h header for CPU functions for
1592
+ GL vector/matrix operations from lunarG is subject to the
1593
+ Apache License Version 2.0.
1594
+
1595
+ 21. The DX12-CUDA sample uses the d3dx12.h header, which is
1596
+ subject to the MIT license .
1597
+
1598
+ -----------------
docs/licenses/cudnn/LICENSE ADDED
@@ -0,0 +1,291 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ LICENSE AGREEMENT FOR NVIDIA SOFTWARE DEVELOPMENT KITS
2
+
3
+ This license agreement, including exhibits attached ("Agreement”) is a legal agreement between you and NVIDIA Corporation ("NVIDIA") and governs your use of a NVIDIA software development kit (“SDK”).
4
+
5
+ Each SDK has its own set of software and materials, but here is a description of the types of items that may be included in a SDK: source code, header files, APIs, data sets and assets (examples include images, textures, models, scenes, videos, native API input/output files), binary software, sample code, libraries, utility programs, programming code and documentation.
6
+
7
+ This Agreement can be accepted only by an adult of legal age of majority in the country in which the SDK is used.
8
+
9
+ If you are entering into this Agreement on behalf of a company or other legal entity, you represent that you have the legal authority to bind the entity to this Agreement, in which case “you” will mean the entity you represent.
10
+
11
+ If you don’t have the required age or authority to accept this Agreement, or if you don’t accept all the terms and conditions of this Agreement, do not download, install or use the SDK.
12
+
13
+ You agree to use the SDK only for purposes that are permitted by (a) this Agreement, and (b) any applicable law, regulation or generally accepted practices or guidelines in the relevant jurisdictions.
14
+
15
+ Chapter 1. License.
16
+
17
+ 1.1. Grant
18
+
19
+ Subject to the terms of this Agreement, NVIDIA hereby grants you a non-exclusive, non-transferable license, without the right to sublicense (except as expressly provided in this Agreement) to:
20
+
21
+ (i) Install and use the SDK,
22
+
23
+ (ii) Modify and create derivative works of sample source code delivered in the SDK, and
24
+
25
+ (iii) Distribute those portions of the SDK that are identified in this Agreement as distributable, as incorporated in object code format into a software application that meets the distribution requirements indicated in this Agreement.
26
+
27
+ 1.2. Distribution Requirements
28
+
29
+ These are the distribution requirements for you to exercise the distribution grant:
30
+
31
+ (i) Your application must have material additional functionality, beyond the included portions of the SDK.
32
+
33
+ (ii) The distributable portions of the SDK shall only be accessed by your application.
34
+
35
+ (iii) The following notice shall be included in modifications and derivative works of sample source code distributed: “This software contains source code provided by NVIDIA Corporation.”
36
+
37
+ (iv) Unless a developer tool is identified in this Agreement as distributable, it is delivered for your internal use only.
38
+
39
+ (v) The terms under which you distribute your application must be consistent with the terms of this Agreement, including (without limitation) terms relating to the license grant and license restrictions and protection of NVIDIA’s intellectual property rights. Additionally, you agree that you will protect the privacy, security and legal rights of your application users.
40
+
41
+ (vi) You agree to notify NVIDIA in writing of any known or suspected distribution or use of the SDK not in compliance with the requirements of this Agreement, and to enforce the terms of your agreements with respect to distributed SDK.
42
+
43
+ 1.3 Authorized Users
44
+
45
+ You may allow employees and contractors of your entity or of your subsidiary(ies) to access and use the SDK from your secure network to perform work on your behalf.
46
+
47
+ If you are an academic institution you may allow users enrolled or employed by the academic institution to access and use the SDK from your secure network.
48
+
49
+ You are responsible for the compliance with the terms of this Agreement by your authorized users. If you become aware that your authorized users didn’t follow the terms of this Agreement, you agree to take reasonable steps to resolve the non-compliance and prevent new occurrences.
50
+
51
+ 1.4 Pre-Release SDK
52
+
53
+ The SDK versions identified as alpha, beta, preview or otherwise as pre-release, may not be fully functional, may contain errors or design flaws, and may have reduced or different security, privacy, accessibility, availability, and reliability standards relative to commercial versions of NVIDIA software and materials. Use of a pre-release SDK may result in unexpected results, loss of data, project delays or other unpredictable damage or loss.
54
+
55
+ You may use a pre-release SDK at your own risk, understanding that pre-release SDKs are not intended for use in production or business-critical systems.
56
+
57
+ NVIDIA may choose not to make available a commercial version of any pre-release SDK. NVIDIA may also choose to abandon development and terminate the availability of a pre-release SDK at any time without liability.
58
+
59
+ 1.5 Updates
60
+
61
+ NVIDIA may, at its option, make available patches, workarounds or other updates to this SDK. Unless the updates are provided with their separate governing terms, they are deemed part of the SDK licensed to you as provided in this Agreement.
62
+
63
+ You agree that the form and content of the SDK that NVIDIA provides may change without prior notice to you. While NVIDIA generally maintains compatibility between versions, NVIDIA may in some cases make changes that introduce incompatibilities in future versions of the SDK.
64
+
65
+ 1.6 Components Under Other Licenses
66
+
67
+ The SDK may come bundled with, or otherwise include or be distributed with, NVIDIA or third party software licensed with separate legal notices or terms as may be described in proprietary notices accompanying the SDK. If and to the extent there is a conflict between the terms in this Agreement and the license terms associated with the component, the license terms associated with the components control only to the extent necessary to resolve the conflict.
68
+
69
+ 1.7 Reservation of Rights
70
+
71
+ NVIDIA reserves all rights, title and interest in and to the SDK not expressly granted to you under this Agreement.
72
+
73
+ Chapter 2. Limitations.
74
+
75
+ The following license limitations apply to your use of the SDK:
76
+
77
+ 2.1 You may not reverse engineer, decompile or disassemble, or remove copyright or other proprietary notices from any portion of the SDK or copies of the SDK.
78
+
79
+ 2.2 Except as expressly provided in this Agreement, you may not copy, sell, rent, sublicense, transfer, distribute, modify, or create derivative works of any portion of the SDK.
80
+
81
+ 2.3 Unless you have an agreement with NVIDIA for this purpose, you may not indicate that an application created with the SDK is sponsored or endorsed by NVIDIA.
82
+
83
+ 2.4 You may not bypass, disable, or circumvent any encryption, security, digital rights management or authentication mechanism in the SDK.
84
+
85
+ 2.5 You may not use the SDK in any manner that would cause it to become subject to an open source software license. As examples, licenses that require as a condition of use, modification, and/or distribution that the SDK be (i) disclosed or distributed in source code form; (ii) licensed for the purpose of making derivative works; or (iii) redistributable at no charge.
86
+
87
+ 2.6 You acknowledge that the SDK as delivered is not tested or certified by NVIDIA for use in connection with the design, construction, maintenance, and/or operation of any system where the use or failure of such system could result in a situation that threatens the safety of human life or results in catastrophic damages (each, a “Critical Application”). Examples of Critical Applications include use in avionics, navigation, autonomous vehicle applications, ai solutions for automotive products, military, medical, life support or other life critical applications. NVIDIA shall not be liable to you or any third party, in whole or in part, for any claims or damages arising from such uses. You are solely responsible for ensuring that any product or service developed with the SDK as a whole includes sufficient features to comply with all applicable legal and regulatory standards and requirements.
88
+
89
+ 2.7 You agree to defend, indemnify and hold harmless NVIDIA and its affiliates, and their respective employees, contractors, agents, officers and directors, from and against any and all claims, damages, obligations, losses, liabilities, costs or debt, fines, restitutions and expenses (including but not limited to attorney’s fees and costs incident to establishing the right of indemnification) arising out of or related to products or services that use the SDK in or for Critical Applications, and for use of the SDK, outside of the scope of this Agreement or not in compliance with its terms.
90
+
91
+ Chapter 3. Ownership.
92
+
93
+ 3.1 NVIDIA or its licensors hold all rights, title and interest in and to the SDK and its modifications and derivative works, including their respective intellectual property rights, subject to your rights under Section 3.2. This SDK may include software and materials from NVIDIA’s licensors, and these licensors are intended third party beneficiaries that may enforce this Agreement with respect to their intellectual property rights.
94
+
95
+ 3.2 You hold all rights, title and interest in and to your applications and your derivative works of the sample source code delivered in the SDK, including their respective intellectual property rights, subject to NVIDIA’s rights under section 3.1.
96
+
97
+ 3.3 You may, but don’t have to, provide to NVIDIA suggestions, feature requests or other feedback regarding the SDK, including possible enhancements or modifications to the SDK. For any feedback that you voluntarily provide, you hereby grant NVIDIA and its affiliates a perpetual, non-exclusive, worldwide, irrevocable license to use, reproduce, modify, license, sublicense (through multiple tiers of sublicensees), and distribute (through multiple tiers of distributors) it without the payment of any royalties or fees to you. NVIDIA will use feedback at its choice. NVIDIA is constantly looking for ways to improve its products, so you may send feedback to NVIDIA through the developer portal at https://developer.nvidia.com.
98
+
99
+ Chapter 4. No Warranties.
100
+
101
+ THE SDK IS PROVIDED BY NVIDIA “AS IS” AND “WITH ALL FAULTS.” TO THE MAXIMUM EXTENT PERMITTED BY LAW, NVIDIA AND ITS AFFILIATES EXPRESSLY DISCLAIM ALL WARRANTIES OF ANY KIND OR NATURE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE, NON-INFRINGEMENT, OR THE ABSENCE OF ANY DEFECTS THEREIN, WHETHER LATENT OR PATENT. NO WARRANTY IS MADE ON THE BASIS OF TRADE USAGE, COURSE OF DEALING OR COURSE OF TRADE.
102
+
103
+ Chapter 5. Limitations of Liability.
104
+
105
+ TO THE MAXIMUM EXTENT PERMITTED BY LAW, NVIDIA AND ITS AFFILIATES SHALL NOT BE LIABLE FOR ANY SPECIAL, INCIDENTAL, PUNITIVE OR CONSEQUENTIAL DAMAGES, OR ANY LOST PROFITS, LOSS OF USE, LOSS OF DATA OR LOSS OF GOODWILL, OR THE COSTS OF PROCURING SUBSTITUTE PRODUCTS, ARISING OUT OF OR IN CONNECTION WITH THIS AGREEMENT OR THE USE OR PERFORMANCE OF THE SDK, WHETHER SUCH LIABILITY ARISES FROM ANY CLAIM BASED UPON BREACH OF CONTRACT, BREACH OF WARRANTY, TORT (INCLUDING NEGLIGENCE), PRODUCT LIABILITY OR ANY OTHER CAUSE OF ACTION OR THEORY OF LIABILITY. IN NO EVENT WILL NVIDIA’S AND ITS AFFILIATES TOTAL CUMULATIVE LIABILITY UNDER OR ARISING OUT OF THIS AGREEMENT EXCEED US$10.00. THE NATURE OF THE LIABILITY OR THE NUMBER OF CLAIMS OR SUITS SHALL NOT ENLARGE OR EXTEND THIS LIMIT.
106
+
107
+ These exclusions and limitations of liability shall apply regardless if NVIDIA or its affiliates have been advised of the possibility of such damages, and regardless of whether a remedy fails its essential purpose. These exclusions and limitations of liability form an essential basis of the bargain between the parties, and, absent any of these exclusions or limitations of liability, the provisions of this Agreement, including, without limitation, the economic terms, would be substantially different.
108
+
109
+ Chapter 6. Termination.
110
+
111
+ 6.1 This Agreement will continue to apply until terminated by either you or NVIDIA as described below.
112
+
113
+ 6.2 If you want to terminate this Agreement, you may do so by stopping to use the SDK.
114
+
115
+ 6.3 NVIDIA may, at any time, terminate this Agreement if: (i) you fail to comply with any term of this Agreement and the non-compliance is not fixed within thirty (30) days following notice from NVIDIA (or immediately if you violate NVIDIA’s intellectual property rights); (ii) you commence or participate in any legal proceeding against NVIDIA with respect to the SDK; or (iii) NVIDIA decides to no longer provide the SDK in a country or, in NVIDIA’s sole discretion, the continued use of it is no longer commercially viable.
116
+
117
+ 6.4 Upon any termination of this Agreement, you agree to promptly discontinue use of the SDK and destroy all copies in your possession or control. Your prior distributions in accordance with this Agreement are not affected by the termination of this Agreement. Upon written request, you will certify in writing that you have complied with your commitments under this section. Upon any termination of this Agreement all provisions survive except for the licenses granted to you.
118
+
119
+ Chapter 7. General.
120
+
121
+ If you wish to assign this Agreement or your rights and obligations, including by merger, consolidation, dissolution or operation of law, contact NVIDIA to ask for permission. Any attempted assignment not approved by NVIDIA in writing shall be void and of no effect. NVIDIA may assign, delegate or transfer this Agreement and its rights and obligations, and if to a non-affiliate you will be notified.
122
+
123
+ You agree to cooperate with NVIDIA and provide reasonably requested information to verify your compliance with this Agreement.
124
+
125
+ This Agreement will be governed in all respects by the laws of the United States and of the State of Delaware as those laws are applied to contracts entered into and performed entirely within Delaware by Delaware residents, without regard to the conflicts of laws principles. The United Nations Convention on Contracts for the International Sale of Goods is specifically disclaimed. You agree to all terms of this Agreement in the English language.
126
+
127
+ The state or federal courts residing in Santa Clara County, California shall have exclusive jurisdiction over any dispute or claim arising out of this Agreement. Notwithstanding this, you agree that NVIDIA shall still be allowed to apply for injunctive remedies or an equivalent type of urgent legal relief in any jurisdiction.
128
+
129
+ If any court of competent jurisdiction determines that any provision of this Agreement is illegal, invalid or unenforceable, such provision will be construed as limited to the extent necessary to be consistent with and fully enforceable under the law and the remaining provisions will remain in full force and effect. Unless otherwise specified, remedies are cumulative.
130
+
131
+ Each party acknowledges and agrees that the other is an independent contractor in the performance of this Agreement
132
+
133
+ The SDK has been developed entirely at private expense and is “commercial items” consisting of “commercial computer software” and “commercial computer software documentation” provided with RESTRICTED RIGHTS. Use, duplication or disclosure by the U.S. Government or a U.S. Government subcontractor is subject to the restrictions in this Agreement pursuant to DFARS 227.7202-3(a) or as set forth in subparagraphs (b)(1) and (2) of the Commercial Computer Software - Restricted Rights clause at FAR 52.227-19, as applicable. Contractor/ manufacturer is NVIDIA, 2788 San Tomas Expressway, Santa Clara, CA 95051
134
+
135
+ The SDK is subject to United States export laws and regulations. You agree that you will not ship, transfer or export the SDK into any country, or use the SDK in any manner, prohibited by the United States Bureau of Industry and Security or economic sanctions regulations administered by the U.S. Department of Treasury’s Office of Foreign Assets Control (OFAC), or any applicable export laws, restrictions or regulations. These laws include restrictions on destinations, end users and end use. By accepting this Agreement, you confirm that you are not a resident or citizen of any country currently embargoed by the U.S. and that you are not otherwise prohibited from receiving the SDK
136
+
137
+ Any notice delivered by NVIDIA to you under this Agreement will be delivered via mail, email or fax. You agree that any notices that NVIDIA sends you electronically will satisfy any legal communication requirements. Please direct your legal notices or other correspondence to NVIDIA Corporation, 2788 San Tomas Expressway, Santa Clara, California 95051, United States of America, Attention: Legal Department.
138
+
139
+ This Agreement and any exhibits incorporated into this Agreement constitute the entire agreement of the parties with respect to the subject matter of this Agreement and supersede all prior negotiations or documentation exchanged between the parties relating to this SDK license. Any additional and/or conflicting terms on documents issued by you are null, void, and invalid. Any amendment or waiver under this Agreement shall be in writing and signed by representatives of both parties.
140
+
141
+ (v. February 22, 2022)
142
+
143
+ Chapter 8. cuDNN SUPPLEMENT TO SOFTWARE LICENSE AGREEMENT FOR NVIDIA SOFTWARE DEVELOPMENT KITS
144
+
145
+ The terms in this supplement govern your use of the NVIDIA cuDNN SDK under the terms of your license agreement (“Agreement”) as modified by this supplement. Capitalized terms used but not defined below have the meaning assigned to them in the Agreement.
146
+
147
+ This supplement is an exhibit to the Agreement and is incorporated as an integral part of the Agreement. In the event of conflict between the terms in this supplement and the terms in the Agreement, the terms in this supplement govern.
148
+
149
+ 4.1 License Scope. The SDK is licensed for you to develop applications only for use in systems with NVIDIA GPUs.
150
+
151
+ 2. Distribution. The following portions of the SDK are distributable under the Agreement: the runtime files .so and .dll.
152
+
153
+ In addition to the rights above, for parties that are developing software intended solely for use on Jetson development kits or Jetson modules and running Linux for Tegra software the following shall apply: the SDK may be distributed in its entirety, as provided by NVIDIA and without separation of its components, for you and/or your licensees to create software development kits for use only on the Jetson platform and running Linux for Tegra software.
154
+
155
+ 3. Licensing. If the distribution terms in this Agreement are not suitable for your organization, or for any questions regarding this Agreement, please contact NVIDIA at [email protected]
156
+
157
+ (v. February 22, 2022)
158
+
159
+ Notice
160
+
161
+ This document is provided for information purposes only and shall not be regarded as a warranty of a certain functionality, condition, or quality of a product. NVIDIA Corporation (“NVIDIA”) makes no representations or warranties, expressed or implied, as to the accuracy or completeness of the information contained in this document and assumes no responsibility for any errors contained herein. NVIDIA shall have no liability for the consequences or use of such information or for any infringement of patents or other rights of third parties that may result from its use. This document is not a commitment to develop, release, or deliver any Material (defined below), code, or functionality.
162
+
163
+ NVIDIA reserves the right to make corrections, modifications, enhancements, improvements, and any other changes to this document, at any time without notice.
164
+
165
+ Customer should obtain the latest relevant information before placing orders and should verify that such information is current and complete.
166
+
167
+ NVIDIA products are sold subject to the NVIDIA standard terms and conditions of sale supplied at the time of order acknowledgement, unless otherwise agreed in an individual sales agreement signed by authorized representatives of NVIDIA and customer (“Terms of Sale”). NVIDIA hereby expressly objects to applying any customer general terms and conditions with regards to the purchase of the NVIDIA product referenced in this document. No contractual obligations are formed either directly or indirectly by this document.
168
+
169
+ NVIDIA products are not designed, authorized, or warranted to be suitable for use in medical, military, aircraft, space, or life support equipment, nor in applications where failure or malfunction of the NVIDIA product can reasonably be expected to result in personal injury, death, or property or environmental damage. NVIDIA accepts no liability for inclusion and/or use of NVIDIA products in such equipment or applications and therefore such inclusion and/or use is at customer’s own risk.
170
+
171
+ NVIDIA makes no representation or warranty that products based on this document will be suitable for any specified use. Testing of all parameters of each product is not necessarily performed by NVIDIA. It is customer’s sole responsibility to evaluate and determine the applicability of any information contained in this document, ensure the product is suitable and fit for the application planned by customer, and perform the necessary testing for the application in order to avoid a default of the application or the product. Weaknesses in customer’s product designs may affect the quality and reliability of the NVIDIA product and may result in additional or different conditions and/or requirements beyond those contained in this document. NVIDIA accepts no liability related to any default, damage, costs, or problem which may be based on or attributable to: (i) the use of the NVIDIA product in any manner that is contrary to this document or (ii) customer product designs.
172
+
173
+ No license, either expressed or implied, is granted under any NVIDIA patent right, copyright, or other NVIDIA intellectual property right under this document. Information published by NVIDIA regarding third-party products or services does not constitute a license from NVIDIA to use such products or services or a warranty or endorsement thereof. Use of such information may require a license from a third party under the patents or other intellectual property rights of the third party, or a license from NVIDIA under the patents or other intellectual property rights of NVIDIA.
174
+
175
+ Reproduction of information in this document is permissible only if approved in advance by NVIDIA in writing, reproduced without alteration and in full compliance with all applicable export laws and regulations, and accompanied by all associated conditions, limitations, and notices.
176
+
177
+ THIS DOCUMENT AND ALL NVIDIA DESIGN SPECIFICATIONS, REFERENCE BOARDS, FILES, DRAWINGS, DIAGNOSTICS, LISTS, AND OTHER DOCUMENTS (TOGETHER AND SEPARATELY, “MATERIALS”) ARE BEING PROVIDED “AS IS.” NVIDIA MAKES NO WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO THE MATERIALS, AND EXPRESSLY DISCLAIMS ALL IMPLIED WARRANTIES OF NONINFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE. TO THE EXTENT NOT PROHIBITED BY LAW, IN NO EVENT WILL NVIDIA BE LIABLE FOR ANY DAMAGES, INCLUDING WITHOUT LIMITATION ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL, PUNITIVE, OR CONSEQUENTIAL DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF ANY USE OF THIS DOCUMENT, EVEN IF NVIDIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. Notwithstanding any damages that customer might incur for any reason whatsoever, NVIDIA’s aggregate and cumulative liability towards customer for the products described herein shall be limited in accordance with the Terms of Sale for the product.
178
+
179
+ ARM
180
+
181
+ ARM, AMBA and ARM Powered are registered trademarks of ARM Limited. Cortex, MPCore and Mali are trademarks of ARM Limited. "ARM" is used to represent ARM Holdings plc; its operating company ARM Limited; and the regional subsidiaries ARM Inc.; ARM KK; ARM Korea Limited.; ARM Taiwan Limited; ARM France SAS; ARM Consulting (Shanghai) Co. Ltd.; ARM Germany GmbH; ARM Embedded Technologies Pvt. Ltd.; ARM Norway, AS and ARM Sweden AB.
182
+
183
+ Trademarks
184
+
185
+ NVIDIA, the NVIDIA logo, and CUDA, DRIVE, JetPack, Kepler, Maxwell, Pascal, Turing, Volta and Xavier are trademarks and/or registered trademarks of NVIDIA Corporation in the United States and other countries. Other company and product names may be trademarks of the respective companies with which they are associated.
186
+
187
+ Copyright
188
+
189
+ © 2017-2022 NVIDIA Corporation & affiliates. All rights reserved.
190
+
191
+ NVIDIA Corporation | 2788 San Tomas Expressway, Santa Clara, CA 95051
192
+
193
+ www.nvidia.com
194
+
195
+ THIRD PARTY LICENSES
196
+
197
+ zlib
198
+
199
+ /* zlib.h -- interface of the 'zlib' general purpose compression library
200
+ version 1.2.11, January 15th, 2017
201
+
202
+ Copyright (C) 1995-2017 Jean-loup Gailly and Mark Adler
203
+
204
+ This software is provided 'as-is', without any express or implied
205
+ warranty. In no event will the authors be held liable for any damages
206
+ arising from the use of this software.
207
+
208
+ Permission is granted to anyone to use this software for any purpose,
209
+ including commercial applications, and to alter it and redistribute it
210
+ freely, subject to the following restrictions:
211
+
212
+ 1. The origin of this software must not be misrepresented; you must not
213
+ claim that you wrote the original software. If you use this software
214
+ in a product, an acknowledgment in the product documentation would be
215
+ appreciated but is not required.
216
+ 2. Altered source versions must be plainly marked as such, and must not be
217
+ misrepresented as being the original software.
218
+ 3. This notice may not be removed or altered from any source distribution.
219
+
220
+ Jean-loup Gailly Mark Adler
221
222
+
223
+ */
224
+
225
+
226
+
227
+ mateidavid/zstr
228
+
229
+ The MIT License (MIT)
230
+
231
+ Copyright (c) 2015 Matei David, Ontario Institute for Cancer Research
232
+
233
+ Permission is hereby granted, free of charge, to any person obtaining a copy
234
+ of this software and associated documentation files (the "Software"), to deal
235
+ in the Software without restriction, including without limitation the rights
236
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
237
+ copies of the Software, and to permit persons to whom the Software is
238
+ furnished to do so, subject to the following conditions:
239
+
240
+ The above copyright notice and this permission notice shall be included in all
241
+ copies or substantial portions of the Software.
242
+
243
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
244
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
245
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
246
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
247
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
248
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
249
+ SOFTWARE.
250
+
251
+
252
+
253
+ RapidJSON
254
+
255
+ Tencent is pleased to support the open source community by making RapidJSON available.
256
+
257
+ Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip.
258
+
259
+ Licensed under the MIT License (the "License"); you may not use this file except
260
+ in compliance with the License. You may obtain a copy of the License at
261
+
262
+ http://opensource.org/licenses/MIT
263
+
264
+ Unless required by applicable law or agreed to in writing, software distributed
265
+ under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
266
+ CONDITIONS OF ANY KIND, either express or implied. See the License for the
267
+ specific language governing permissions and limitations under the License.
268
+
269
+
270
+
271
+ {fmt}
272
+
273
+ Copyright (c) 2012 - present, Victor Zverovich
274
+
275
+ Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
276
+
277
+ The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
278
+
279
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
280
+
281
+ --- Optional exception to the license ---
282
+
283
+ As an exception, if, as a result of your compiling your source code, portions of this Software are embedded into a machine-executable object form of such source code, you may redistribute such embedded portions in such object form without including the above copyright and permission notices.
284
+
285
+
286
+
287
+ Sleef
288
+
289
+ Copyright Naoki Shibata and contributors 2010 - 2021.
290
+ Distributed under the Boost Software License, Version 1.0.
291
+ (See accompanying file LICENSE.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
docs/licenses/open_jtalk/COPYING ADDED
@@ -0,0 +1,39 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /* ----------------------------------------------------------------- */
2
+ /* The Japanese TTS System "Open JTalk" */
3
+ /* developed by HTS Working Group */
4
+ /* http://open-jtalk.sourceforge.net/ */
5
+ /* ----------------------------------------------------------------- */
6
+ /* */
7
+ /* Copyright (c) 2008-2016 Nagoya Institute of Technology */
8
+ /* Department of Computer Science */
9
+ /* */
10
+ /* All rights reserved. */
11
+ /* */
12
+ /* Redistribution and use in source and binary forms, with or */
13
+ /* without modification, are permitted provided that the following */
14
+ /* conditions are met: */
15
+ /* */
16
+ /* - Redistributions of source code must retain the above copyright */
17
+ /* notice, this list of conditions and the following disclaimer. */
18
+ /* - Redistributions in binary form must reproduce the above */
19
+ /* copyright notice, this list of conditions and the following */
20
+ /* disclaimer in the documentation and/or other materials provided */
21
+ /* with the distribution. */
22
+ /* - Neither the name of the HTS working group nor the names of its */
23
+ /* contributors may be used to endorse or promote products derived */
24
+ /* from this software without specific prior written permission. */
25
+ /* */
26
+ /* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND */
27
+ /* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, */
28
+ /* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF */
29
+ /* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE */
30
+ /* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS */
31
+ /* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, */
32
+ /* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED */
33
+ /* TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, */
34
+ /* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON */
35
+ /* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, */
36
+ /* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY */
37
+ /* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE */
38
+ /* POSSIBILITY OF SUCH DAMAGE. */
39
+ /* ----------------------------------------------------------------- */
docs/licenses/open_jtalk/mecab-naist-jdic/COPYING ADDED
@@ -0,0 +1,69 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Copyright (c) 2009, Nara Institute of Science and Technology, Japan.
2
+
3
+ All rights reserved.
4
+
5
+ Redistribution and use in source and binary forms, with or without
6
+ modification, are permitted provided that the following conditions are
7
+ met:
8
+
9
+ Redistributions of source code must retain the above copyright notice,
10
+ this list of conditions and the following disclaimer.
11
+ Redistributions in binary form must reproduce the above copyright
12
+ notice, this list of conditions and the following disclaimer in the
13
+ documentation and/or other materials provided with the distribution.
14
+ Neither the name of the Nara Institute of Science and Technology
15
+ (NAIST) nor the names of its contributors may be used to endorse or
16
+ promote products derived from this software without specific prior
17
+ written permission.
18
+
19
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
20
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
21
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
22
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
23
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
24
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
25
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
26
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
27
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
28
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
29
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30
+
31
+ /* ----------------------------------------------------------------- */
32
+ /* The Japanese TTS System "Open JTalk" */
33
+ /* developed by HTS Working Group */
34
+ /* http://open-jtalk.sourceforge.net/ */
35
+ /* ----------------------------------------------------------------- */
36
+ /* */
37
+ /* Copyright (c) 2008-2016 Nagoya Institute of Technology */
38
+ /* Department of Computer Science */
39
+ /* */
40
+ /* All rights reserved. */
41
+ /* */
42
+ /* Redistribution and use in source and binary forms, with or */
43
+ /* without modification, are permitted provided that the following */
44
+ /* conditions are met: */
45
+ /* */
46
+ /* - Redistributions of source code must retain the above copyright */
47
+ /* notice, this list of conditions and the following disclaimer. */
48
+ /* - Redistributions in binary form must reproduce the above */
49
+ /* copyright notice, this list of conditions and the following */
50
+ /* disclaimer in the documentation and/or other materials provided */
51
+ /* with the distribution. */
52
+ /* - Neither the name of the HTS working group nor the names of its */
53
+ /* contributors may be used to endorse or promote products derived */
54
+ /* from this software without specific prior written permission. */
55
+ /* */
56
+ /* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND */
57
+ /* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, */
58
+ /* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF */
59
+ /* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE */
60
+ /* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS */
61
+ /* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, */
62
+ /* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED */
63
+ /* TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, */
64
+ /* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON */
65
+ /* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, */
66
+ /* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY */
67
+ /* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE */
68
+ /* POSSIBILITY OF SUCH DAMAGE. */
69
+ /* ----------------------------------------------------------------- */
docs/licenses/open_jtalk/mecab/COPYING ADDED
@@ -0,0 +1,69 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Copyright (c) 2001-2008, Taku Kudo
2
+ Copyright (c) 2004-2008, Nippon Telegraph and Telephone Corporation
3
+ All rights reserved.
4
+
5
+ Redistribution and use in source and binary forms, with or without modification, are
6
+ permitted provided that the following conditions are met:
7
+
8
+ * Redistributions of source code must retain the above
9
+ copyright notice, this list of conditions and the
10
+ following disclaimer.
11
+
12
+ * Redistributions in binary form must reproduce the above
13
+ copyright notice, this list of conditions and the
14
+ following disclaimer in the documentation and/or other
15
+ materials provided with the distribution.
16
+
17
+ * Neither the name of the Nippon Telegraph and Telegraph Corporation
18
+ nor the names of its contributors may be used to endorse or
19
+ promote products derived from this software without specific
20
+ prior written permission.
21
+
22
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED
23
+ WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
24
+ PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
25
+ ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
26
+ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
27
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
28
+ TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
29
+ ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30
+
31
+ /* ----------------------------------------------------------------- */
32
+ /* The Japanese TTS System "Open JTalk" */
33
+ /* developed by HTS Working Group */
34
+ /* http://open-jtalk.sourceforge.net/ */
35
+ /* ----------------------------------------------------------------- */
36
+ /* */
37
+ /* Copyright (c) 2008-2016 Nagoya Institute of Technology */
38
+ /* Department of Computer Science */
39
+ /* */
40
+ /* All rights reserved. */
41
+ /* */
42
+ /* Redistribution and use in source and binary forms, with or */
43
+ /* without modification, are permitted provided that the following */
44
+ /* conditions are met: */
45
+ /* */
46
+ /* - Redistributions of source code must retain the above copyright */
47
+ /* notice, this list of conditions and the following disclaimer. */
48
+ /* - Redistributions in binary form must reproduce the above */
49
+ /* copyright notice, this list of conditions and the following */
50
+ /* disclaimer in the documentation and/or other materials provided */
51
+ /* with the distribution. */
52
+ /* - Neither the name of the HTS working group nor the names of its */
53
+ /* contributors may be used to endorse or promote products derived */
54
+ /* from this software without specific prior written permission. */
55
+ /* */
56
+ /* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND */
57
+ /* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, */
58
+ /* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF */
59
+ /* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE */
60
+ /* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS */
61
+ /* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, */
62
+ /* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED */
63
+ /* TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, */
64
+ /* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON */
65
+ /* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, */
66
+ /* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY */
67
+ /* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE */
68
+ /* POSSIBILITY OF SUCH DAMAGE. */
69
+ /* ----------------------------------------------------------------- */
docs/licenses/world/LICENSE.txt ADDED
@@ -0,0 +1,39 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /* ----------------------------------------------------------------- */
2
+ /* WORLD: High-quality speech analysis, */
3
+ /* manipulation and synthesis system */
4
+ /* developed by M. Morise */
5
+ /* http://www.kisc.meiji.ac.jp/~mmorise/world/english/ */
6
+ /* ----------------------------------------------------------------- */
7
+ /* */
8
+ /* Copyright (c) 2010 M. Morise */
9
+ /* */
10
+ /* All rights reserved. */
11
+ /* */
12
+ /* Redistribution and use in source and binary forms, with or */
13
+ /* without modification, are permitted provided that the following */
14
+ /* conditions are met: */
15
+ /* */
16
+ /* - Redistributions of source code must retain the above copyright */
17
+ /* notice, this list of conditions and the following disclaimer. */
18
+ /* - Redistributions in binary form must reproduce the above */
19
+ /* copyright notice, this list of conditions and the following */
20
+ /* disclaimer in the documentation and/or other materials provided */
21
+ /* with the distribution. */
22
+ /* - Neither the name of the M. Morise nor the names of its */
23
+ /* contributors may be used to endorse or promote products derived */
24
+ /* from this software without specific prior written permission. */
25
+ /* */
26
+ /* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND */
27
+ /* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, */
28
+ /* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF */
29
+ /* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE */
30
+ /* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS */
31
+ /* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, */
32
+ /* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED */
33
+ /* TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, */
34
+ /* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON */
35
+ /* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, */
36
+ /* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY */
37
+ /* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE */
38
+ /* POSSIBILITY OF SUCH DAMAGE. */
39
+ /* ----------------------------------------------------------------- */
docs/res/マルチエンジン概念図.svg ADDED
engine_manifest.json ADDED
@@ -0,0 +1,62 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "manifest_version": "0.13.1",
3
+ "name": "DUMMY Engine",
4
+ "brand_name": "DUMMY",
5
+ "uuid": "c7b58856-bd56-4aa1-afb7-b8415f824b06",
6
+ "version": "999.999.999",
7
+ "url": "https://github.com/VOICEVOX/voicevox_engine",
8
+ "command": "run",
9
+ "port": 50021,
10
+ "icon": "engine_manifest_assets/icon.png",
11
+ "default_sampling_rate": 24000,
12
+ "terms_of_service": "engine_manifest_assets/terms_of_service.md",
13
+ "update_infos": "engine_manifest_assets/update_infos.json",
14
+ "dependency_licenses": "engine_manifest_assets/dependency_licenses.json",
15
+ "supported_features": {
16
+ "adjust_mora_pitch": {
17
+ "type": "bool",
18
+ "value": true,
19
+ "name": "モーラごとの音高の調整"
20
+ },
21
+ "adjust_phoneme_length": {
22
+ "type": "bool",
23
+ "value": true,
24
+ "name": "音素ごとの長さの調整"
25
+ },
26
+ "adjust_speed_scale": {
27
+ "type": "bool",
28
+ "value": true,
29
+ "name": "全体の話速の調整"
30
+ },
31
+ "adjust_pitch_scale": {
32
+ "type": "bool",
33
+ "value": true,
34
+ "name": "全体の音高の調整"
35
+ },
36
+ "adjust_intonation_scale": {
37
+ "type": "bool",
38
+ "value": true,
39
+ "name": "全体の抑揚の調整"
40
+ },
41
+ "adjust_volume_scale": {
42
+ "type": "bool",
43
+ "value": true,
44
+ "name": "全体の音量の調整"
45
+ },
46
+ "interrogative_upspeak": {
47
+ "type": "bool",
48
+ "value": true,
49
+ "name": "疑問文の自動調整"
50
+ },
51
+ "synthesis_morphing" : {
52
+ "type": "bool",
53
+ "value": true,
54
+ "name": "2人の話者でモーフィングした音声を合成"
55
+ },
56
+ "manage_library": {
57
+ "type": "bool",
58
+ "value": true,
59
+ "name": "音声ライブラリのインストール・アンインストール"
60
+ }
61
+ }
62
+ }
engine_manifest_assets/dependency_licenses.json ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
 
1
+ [
2
+ {
3
+ "name": "dummy library",
4
+ "version": "0.0.1",
5
+ "license": "dummy license",
6
+ "text": "dummy license text"
7
+ }
8
+ ]
engine_manifest_assets/downloadable_libraries.json ADDED
@@ -0,0 +1,44 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ [
2
+ {
3
+ "name": "Dummy Library",
4
+ "uuid": "2bb8bccf-1c3f-4bc9-959a-f388e37af3ad",
5
+ "version": "0.0.1",
6
+ "download_url": "https://github.com/VOICEVOX/voicevox_engine/archive/d7cf31c058bc83e1abf8e14d4231a06409c4cc2d.zip",
7
+ "bytes": 1000,
8
+ "speakers": [
9
+ {
10
+ "speaker": {
11
+ "name": "dummy1",
12
+ "speaker_uuid": "7ffcb7ce-00ec-4bdc-82cd-45a8889e43ff",
13
+ "styles": [
14
+ {
15
+ "name": "style1",
16
+ "id": 0
17
+ },
18
+ {
19
+ "name": "style2",
20
+ "id": 2
21
+ }
22
+ ],
23
+ "version": "0.0.1"
24
+ },
25
+ "speaker_info": {
26
+ "policy": "",
27
+ "portrait": "",
28
+ "style_infos": [
29
+ {
30
+ "id": 0,
31
+ "icon": "",
32
+ "voice_samples": ["", "", ""]
33
+ },
34
+ {
35
+ "id": 2,
36
+ "icon": "",
37
+ "voice_samples": ["", "", ""]
38
+ }
39
+ ]
40
+ }
41
+ }
42
+ ]
43
+ }
44
+ ]
engine_manifest_assets/icon.png ADDED
engine_manifest_assets/terms_of_service.md ADDED
@@ -0,0 +1 @@
 
 
1
+ dummy teams of service
engine_manifest_assets/update_infos.json ADDED
@@ -0,0 +1,67 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ [
2
+ {
3
+ "version": "0.14.4",
4
+ "descriptions": [
5
+ "キャラクター「春歌ナナ」「猫使アル」「猫使ビィ」を追加",
6
+ "バグ修正"
7
+ ],
8
+ "contributors": ["Hiroshiba"]
9
+ },
10
+ {
11
+ "version": "0.14.3",
12
+ "descriptions": [
13
+ "キャラクター「†聖騎士 紅桜†」「雀松朱司」「麒ヶ島宗麟」を追加",
14
+ "同時書き込みで辞書が破損する問題を修正"
15
+ ],
16
+ "contributors": ["Hiroshiba"]
17
+ },
18
+ {
19
+ "version": "0.14.2",
20
+ "descriptions": ["DirectML版の生成が遅い問題を修正"],
21
+ "contributors": []
22
+ },
23
+ {
24
+ "version": "0.14.1",
25
+ "descriptions": ["AquesTalkライクな記法で生成した音声のバグを修正"],
26
+ "contributors": []
27
+ },
28
+ {
29
+ "version": "0.14.0",
30
+ "descriptions": [
31
+ "コアをRust言語に移行",
32
+ "セキュリティアップデート",
33
+ "スタイルごとに異なる立ち絵の提供を可能に",
34
+ "VVPPファイルの提供",
35
+ "設定GUIの提供",
36
+ "プリセットの保存",
37
+ "モーフィングAPIの仕様変更",
38
+ "DirectML利用時に適したGPUを自動選択",
39
+ "開発環境の向上",
40
+ "バグ修正"
41
+ ],
42
+ "contributors": [
43
+ "aoirint",
44
+ "Appletigerv",
45
+ "haru3me",
46
+ "Hiroshiba",
47
+ "ksk001100",
48
+ "masinc",
49
+ "misogihagi",
50
+ "My-MC",
51
+ "nebocco",
52
+ "PickledChair",
53
+ "qryxip",
54
+ "qwerty2501",
55
+ "sabonerune",
56
+ "sarisia",
57
+ "Segu-g",
58
+ "sevenc-nanashi",
59
+ "shigobu",
60
+ "smly",
61
+ "takana-v",
62
+ "ts-klassen",
63
+ "whiteball",
64
+ "y-chan"
65
+ ]
66
+ }
67
+ ]
generate_licenses.py ADDED
@@ -0,0 +1,337 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import json
2
+ import os
3
+ import subprocess
4
+ import urllib.request
5
+ from dataclasses import asdict, dataclass
6
+ from pathlib import Path
7
+ from typing import List, Optional
8
+
9
+
10
+ @dataclass
11
+ class License:
12
+ name: str
13
+ version: Optional[str]
14
+ license: Optional[str]
15
+ text: str
16
+
17
+
18
+ def generate_licenses() -> List[License]:
19
+ licenses: List[License] = []
20
+
21
+ # openjtalk
22
+ # https://sourceforge.net/projects/open-jtalk/files/Open%20JTalk/open_jtalk-1.11/
23
+ licenses.append(
24
+ License(
25
+ name="Open JTalk",
26
+ version="1.11",
27
+ license="Modified BSD license",
28
+ text=Path("docs/licenses/open_jtalk/COPYING").read_text(),
29
+ )
30
+ )
31
+ licenses.append(
32
+ License(
33
+ name="MeCab",
34
+ version=None,
35
+ license="Modified BSD license",
36
+ text=Path("docs/licenses/open_jtalk/mecab/COPYING").read_text(),
37
+ )
38
+ )
39
+ licenses.append(
40
+ License(
41
+ name="NAIST Japanese Dictionary",
42
+ version=None,
43
+ license="Modified BSD license",
44
+ text=Path("docs/licenses//open_jtalk/mecab-naist-jdic/COPYING").read_text(),
45
+ )
46
+ )
47
+ with urllib.request.urlopen(
48
+ "https://raw.githubusercontent.com/r9y9/pyopenjtalk/master/pyopenjtalk/htsvoice/LICENSE_mei_normal.htsvoice" # noqa: B950
49
+ ) as res:
50
+ licenses.append(
51
+ License(
52
+ name='HTS Voice "Mei"',
53
+ version=None,
54
+ license="Creative Commons Attribution 3.0 license",
55
+ text=res.read().decode(),
56
+ )
57
+ )
58
+
59
+ # VOICEVOX CORE
60
+ with urllib.request.urlopen(
61
+ "https://raw.githubusercontent.com/VOICEVOX/voicevox_core/main/LICENSE"
62
+ ) as res:
63
+ licenses.append(
64
+ License(
65
+ name="VOICEVOX CORE",
66
+ version=None,
67
+ license="MIT license",
68
+ text=res.read().decode(),
69
+ )
70
+ )
71
+
72
+ # VOICEVOX ENGINE
73
+ with urllib.request.urlopen(
74
+ "https://raw.githubusercontent.com/VOICEVOX/voicevox_engine/master/LGPL_LICENSE"
75
+ ) as res:
76
+ licenses.append(
77
+ License(
78
+ name="VOICEVOX ENGINE",
79
+ version=None,
80
+ license="LGPL license",
81
+ text=res.read().decode(),
82
+ )
83
+ )
84
+
85
+ # world
86
+ with urllib.request.urlopen(
87
+ "https://raw.githubusercontent.com/mmorise/World/master/LICENSE.txt"
88
+ ) as res:
89
+ licenses.append(
90
+ License(
91
+ name="world",
92
+ version=None,
93
+ license="Modified BSD license",
94
+ text=res.read().decode(),
95
+ )
96
+ )
97
+
98
+ # pytorch
99
+ with urllib.request.urlopen(
100
+ "https://raw.githubusercontent.com/pytorch/pytorch/master/LICENSE"
101
+ ) as res:
102
+ licenses.append(
103
+ License(
104
+ name="PyTorch",
105
+ version="1.9.0",
106
+ license="BSD-style license",
107
+ text=res.read().decode(),
108
+ )
109
+ )
110
+
111
+ # onnxruntime
112
+ with urllib.request.urlopen(
113
+ "https://raw.githubusercontent.com/microsoft/onnxruntime/master/LICENSE"
114
+ ) as res:
115
+ licenses.append(
116
+ License(
117
+ name="ONNX Runtime",
118
+ version="1.13.1",
119
+ license="MIT license",
120
+ text=res.read().decode(),
121
+ )
122
+ )
123
+
124
+ # Python
125
+ python_version = "3.11.3"
126
+ with urllib.request.urlopen(
127
+ f"https://raw.githubusercontent.com/python/cpython/v{python_version}/LICENSE"
128
+ ) as res:
129
+ licenses.append(
130
+ License(
131
+ name="Python",
132
+ version=python_version,
133
+ license="Python Software Foundation License",
134
+ text=res.read().decode(),
135
+ )
136
+ )
137
+
138
+ # pip
139
+ try:
140
+ pip_licenses_output = subprocess.run(
141
+ "pip-licenses "
142
+ "--from=mixed "
143
+ "--format=json "
144
+ "--with-urls "
145
+ "--with-license-file "
146
+ "--no-license-path ",
147
+ shell=True,
148
+ capture_output=True,
149
+ check=True,
150
+ env=os.environ,
151
+ ).stdout.decode()
152
+ except subprocess.CalledProcessError as err:
153
+ raise Exception(
154
+ f"command output:\n{err.stderr and err.stderr.decode()}"
155
+ ) from err
156
+
157
+ licenses_json = json.loads(pip_licenses_output)
158
+ for license_json in licenses_json:
159
+ license = License(
160
+ name=license_json["Name"],
161
+ version=license_json["Version"],
162
+ license=license_json["License"],
163
+ text=license_json["LicenseText"],
164
+ )
165
+ # FIXME: assert license type
166
+ if license.text == "UNKNOWN":
167
+ if license.name.lower() == "core" and license.version == "0.0.0":
168
+ continue
169
+ elif license.name.lower() == "future":
170
+ with urllib.request.urlopen(
171
+ "https://raw.githubusercontent.com/PythonCharmers/python-future/master/LICENSE.txt" # noqa: B950
172
+ ) as res:
173
+ license.text = res.read().decode()
174
+ elif license.name.lower() == "pefile":
175
+ with urllib.request.urlopen(
176
+ "https://raw.githubusercontent.com/erocarrera/pefile/master/LICENSE" # noqa: B950
177
+ ) as res:
178
+ license.text = res.read().decode()
179
+ elif license.name.lower() == "pyopenjtalk":
180
+ with urllib.request.urlopen(
181
+ "https://raw.githubusercontent.com/r9y9/pyopenjtalk/master/LICENSE.md"
182
+ ) as res:
183
+ license.text = res.read().decode()
184
+ elif license.name.lower() == "python-multipart":
185
+ with urllib.request.urlopen(
186
+ "https://raw.githubusercontent.com/andrew-d/python-multipart/master/LICENSE.txt" # noqa: B950
187
+ ) as res:
188
+ license.text = res.read().decode()
189
+ elif license.name.lower() == "romkan":
190
+ with urllib.request.urlopen(
191
+ "https://raw.githubusercontent.com/soimort/python-romkan/master/LICENSE"
192
+ ) as res:
193
+ license.text = res.read().decode()
194
+ elif license.name.lower() == "distlib":
195
+ with urllib.request.urlopen(
196
+ "https://bitbucket.org/pypa/distlib/raw/7d93712134b28401407da27382f2b6236c87623a/LICENSE.txt" # noqa: B950
197
+ ) as res:
198
+ license.text = res.read().decode()
199
+ elif license.name.lower() == "jsonschema":
200
+ with urllib.request.urlopen(
201
+ "https://raw.githubusercontent.com/python-jsonschema/jsonschema/dbc398245a583cb2366795dc529ae042d10c1577/COPYING"
202
+ ) as res:
203
+ license.text = res.read().decode()
204
+ elif license.name.lower() == "lockfile":
205
+ with urllib.request.urlopen(
206
+ "https://opendev.org/openstack/pylockfile/raw/tag/0.12.2/LICENSE"
207
+ ) as res:
208
+ license.text = res.read().decode()
209
+ elif license.name.lower() == "platformdirs":
210
+ with urllib.request.urlopen(
211
+ "https://raw.githubusercontent.com/platformdirs/platformdirs/aa671aaa97913c7b948567f4d9c77d4f98bfa134/LICENSE"
212
+ ) as res:
213
+ license.text = res.read().decode()
214
+ elif license.name.lower() == "webencodings":
215
+ with urllib.request.urlopen(
216
+ "https://raw.githubusercontent.com/gsnedders/python-webencodings/fa2cb5d75ab41e63ace691bc0825d3432ba7d694/LICENSE"
217
+ ) as res:
218
+ license.text = res.read().decode()
219
+ else:
220
+ # ライセンスがpypiに無い
221
+ raise Exception(f"No License info provided for {license.name}")
222
+ licenses.append(license)
223
+
224
+ # OpenBLAS
225
+ with urllib.request.urlopen(
226
+ "https://raw.githubusercontent.com/xianyi/OpenBLAS/develop/LICENSE"
227
+ ) as res:
228
+ licenses.append(
229
+ License(
230
+ name="OpenBLAS",
231
+ version=None,
232
+ license="BSD 3-clause license",
233
+ text=res.read().decode(),
234
+ )
235
+ )
236
+
237
+ # libsndfile-binaries
238
+ with urllib.request.urlopen(
239
+ "https://raw.githubusercontent.com/bastibe/libsndfile-binaries/84cb164928f17c7ca0c1e5c40342c20ce2b90e8c/COPYING" # noqa: B950
240
+ ) as res:
241
+ licenses.append(
242
+ License(
243
+ name="libsndfile-binaries",
244
+ version="1.0.28",
245
+ license="LGPL-2.1 license",
246
+ text=res.read().decode(),
247
+ )
248
+ )
249
+
250
+ # libogg
251
+ with urllib.request.urlopen(
252
+ "https://raw.githubusercontent.com/xiph/ogg/v1.3.2/COPYING"
253
+ ) as res:
254
+ licenses.append(
255
+ License(
256
+ name="libogg",
257
+ version="1.3.2",
258
+ license="BSD 3-clause license",
259
+ text=res.read().decode(),
260
+ )
261
+ )
262
+
263
+ # libvorbis
264
+ with urllib.request.urlopen(
265
+ "https://raw.githubusercontent.com/xiph/vorbis/v1.3.5/COPYING"
266
+ ) as res:
267
+ licenses.append(
268
+ License(
269
+ name="libvorbis",
270
+ version="1.3.5",
271
+ license="BSD 3-clause license",
272
+ text=res.read().decode(),
273
+ )
274
+ )
275
+
276
+ # libflac
277
+ with urllib.request.urlopen(
278
+ "https://raw.githubusercontent.com/xiph/flac/1.3.2/COPYING.Xiph"
279
+ ) as res:
280
+ licenses.append(
281
+ License(
282
+ name="FLAC",
283
+ version="1.3.2",
284
+ license="Xiph.org's BSD-like license",
285
+ text=res.read().decode(),
286
+ )
287
+ )
288
+
289
+ # cuda
290
+ # license text from CUDA 11.6.2
291
+ # https://developer.nvidia.com/cuda-11-6-2-download-archive?target_os=Windows&target_arch=x86_64&target_version=10&target_type=exe_local # noqa: B950
292
+ # https://developer.download.nvidia.com/compute/cuda/11.6.2/local_installers/cuda_11.6.2_511.65_windows.exe # noqa: B950
293
+ # cuda_11.6.2_511.65_windows.exe (cuda_documentation/Doc/EULA.txt)
294
+ licenses.append(
295
+ License(
296
+ name="CUDA Toolkit",
297
+ version="11.6.2",
298
+ license=None,
299
+ text=Path("docs/licenses/cuda/EULA.txt").read_text(encoding="utf8"),
300
+ )
301
+ )
302
+ # cudnn
303
+ # license text from
304
+ # cuDNN v8.4.1 (May 27th, 2022), for CUDA 11.x, cuDNN Library for Windows
305
+ # https://developer.nvidia.com/rdp/cudnn-archive # noqa: B950
306
+ # https://developer.download.nvidia.com/compute/redist/cudnn/v8.4.1/local_installers/11.6/cudnn-windows-x86_64-8.4.1.50_cuda11.6-archive.zip # noqa: B950
307
+ # cudnn-windows-x86_64-8.4.1.50_cuda11.6-archive.zip (cudnn-windows-x86_64-8.4.1.50_cuda11.6-archive/LICENSE) # noqa: B950
308
+ licenses.append(
309
+ License(
310
+ name="cuDNN",
311
+ version="8.4.1",
312
+ license=None,
313
+ text=Path("docs/licenses/cudnn/LICENSE").read_text(encoding="utf8"),
314
+ )
315
+ )
316
+
317
+ return licenses
318
+
319
+
320
+ if __name__ == "__main__":
321
+ import argparse
322
+ import sys
323
+
324
+ parser = argparse.ArgumentParser()
325
+ parser.add_argument("-o", "--output_path", type=str)
326
+ args = parser.parse_args()
327
+
328
+ output_path = args.output_path
329
+
330
+ licenses = generate_licenses()
331
+
332
+ # dump
333
+ out = Path(output_path).open("w") if output_path else sys.stdout
334
+ json.dump(
335
+ [asdict(license) for license in licenses],
336
+ out,
337
+ )
get_cost_candidates.py ADDED
@@ -0,0 +1,91 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """
2
+ voicevox_engine/part_of_speech_data.pyのcost_candidatesを計算するプログラムです。
3
+ 引数のnaist_jdic_pathには、open_jtalkのsrc/mecab-naist-jdic/naist-jdic.csvを指定してください。
4
+
5
+ 実行例:
6
+ python get_cost_candidates.py --naist_jdic_path=/path/to/naist-jdic.csv \
7
+ --pos=名詞 \
8
+ --pos_detail_1=固有名詞 \
9
+ --pos_detail_2=一般 \
10
+ --pos_detail_3=*
11
+
12
+ cost_candidatesの値の詳細は以下の通りです。
13
+ - 1番目の値はnaist_jdic内の同一品詞の最小コストから1を引いたもの、11番目の値は最大コストに1を足したものです。
14
+ - 2番目の値はnaist_jdic内の同一品詞のコストの下位1%、10番目の値は99%の値です。
15
+ - 6番目の値はnaist_jdic内の同一品詞のコストの最頻値です。
16
+ - 2番目から6番目、6番目から10番目までの値は一定割合で増加するようになっています。
17
+ """
18
+
19
+ import argparse
20
+ import statistics
21
+ from pathlib import Path
22
+ from typing import List
23
+
24
+ import numpy as np
25
+
26
+
27
+ def get_candidates(
28
+ naist_jdic_path: Path,
29
+ pos: str,
30
+ pos_detail_1: str,
31
+ pos_detail_2: str,
32
+ pos_detail_3: str,
33
+ ) -> List[int]:
34
+ costs = []
35
+ with naist_jdic_path.open(encoding="utf-8") as f:
36
+ for line in f:
37
+ (
38
+ _,
39
+ _,
40
+ _,
41
+ _cost,
42
+ _pos,
43
+ _pos_detail_1,
44
+ _pos_detail_2,
45
+ _pos_detail_3,
46
+ _,
47
+ _,
48
+ _,
49
+ _,
50
+ _,
51
+ _,
52
+ _,
53
+ ) = line.split(",")
54
+ if (_pos, _pos_detail_1, _pos_detail_2, _pos_detail_3) == (
55
+ pos,
56
+ pos_detail_1,
57
+ pos_detail_2,
58
+ pos_detail_3,
59
+ ):
60
+ costs.append(int(_cost))
61
+ assert len(costs) > 0
62
+ cost_min = min(costs) - 1
63
+ cost_1per = np.quantile(costs, 0.01).astype(np.int64)
64
+ cost_mode = statistics.mode(costs)
65
+ cost_99per = np.quantile(costs, 0.99).astype(np.int64)
66
+ cost_max = max(costs) + 1
67
+ return (
68
+ [cost_min]
69
+ + [int(cost_1per + (cost_mode - cost_1per) * i / 4) for i in range(5)]
70
+ + [int(cost_mode + (cost_99per - cost_mode) * i / 4) for i in range(1, 5)]
71
+ + [cost_max]
72
+ )
73
+
74
+
75
+ if __name__ == "__main__":
76
+ parser = argparse.ArgumentParser()
77
+ parser.add_argument("--naist_jdic_path", type=Path)
78
+ parser.add_argument("--pos", type=str)
79
+ parser.add_argument("--pos_detail_1", type=str)
80
+ parser.add_argument("--pos_detail_2", type=str)
81
+ parser.add_argument("--pos_detail_3", type=str)
82
+ args = parser.parse_args()
83
+ print(
84
+ get_candidates(
85
+ naist_jdic_path=args.naist_jdic_path,
86
+ pos=args.pos,
87
+ pos_detail_1=args.pos_detail_1,
88
+ pos_detail_2=args.pos_detail_2,
89
+ pos_detail_3=args.pos_detail_3,
90
+ )
91
+ )
make_docs.py ADDED
@@ -0,0 +1,33 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import json
2
+
3
+ from voicevox_engine.dev.core import mock as core
4
+ from voicevox_engine.dev.synthesis_engine.mock import MockSynthesisEngine
5
+ from voicevox_engine.setting import USER_SETTING_PATH, SettingLoader
6
+
7
+ if __name__ == "__main__":
8
+ import run
9
+
10
+ app = run.generate_app(
11
+ synthesis_engines={"mock": MockSynthesisEngine(speakers=core.metas())},
12
+ latest_core_version="mock",
13
+ setting_loader=SettingLoader(USER_SETTING_PATH),
14
+ )
15
+ with open("docs/api/index.html", "w") as f:
16
+ f.write(
17
+ """<!DOCTYPE html>
18
+ <html lang="ja">
19
+ <head>
20
+ <title>voicevox_engine API Document</title>
21
+ <meta charset="utf-8">
22
+ <link rel="shortcut icon" href="https://voicevox.hiroshiba.jp/favicon-32x32.png">
23
+ </head>
24
+ <body>
25
+ <div id="redoc-container"></div>
26
+ <script src="https://cdn.jsdelivr.net/npm/redoc/bundles/redoc.standalone.js"></script>
27
+ <script>
28
+ Redoc.init(%s, {"hideHostname": true}, document.getElementById("redoc-container"));
29
+ </script>
30
+ </body>
31
+ </html>"""
32
+ % json.dumps(app.openapi())
33
+ )
poetry.lock ADDED
The diff for this file is too large to render. See raw diff
 
presets.yaml ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ - id: 1
2
+ name: サンプルプリセット
3
+ speaker_uuid: 7ffcb7ce-00ec-4bdc-82cd-45a8889e43ff
4
+ style_id: 0
5
+ speedScale: 1
6
+ pitchScale: 0
7
+ intonationScale: 1
8
+ volumeScale: 1
9
+ prePhonemeLength: 0.1
10
+ postPhonemeLength: 0.1
pyproject.toml ADDED
@@ -0,0 +1,82 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ [tool.pysen]
2
+ version = "0.10.3"
3
+
4
+ [tool.pysen.lint]
5
+ enable_black = true
6
+ enable_flake8 = true
7
+ enable_isort = true
8
+ enable_mypy = false # TODO: eliminate errors and enable at CI
9
+ mypy_preset = "entry" # TODO: "strict"
10
+ line_length = 88
11
+ py_version = "py310" # TODO: update to py311 after pysen supports Python 3.11
12
+ isort_known_first_party = ["voicevox_engine"]
13
+ isort_known_third_party = ["numpy"]
14
+ [[tool.pysen.lint.mypy_targets]]
15
+ paths = [".", "voicevox_engine/"]
16
+
17
+ [tool.black] # automatically generated by pysen
18
+ # pysen ignores and overwrites any modifications
19
+ line-length = 88
20
+ target-version = ["py310"] # TODO: update to py311 after pysen supports Python 3.11
21
+
22
+
23
+ [tool.isort] # automatically generated by pysen
24
+ # pysen ignores and overwrites any modifications
25
+ default_section = "THIRDPARTY"
26
+ ensure_newline_before_comments = true
27
+ force_grid_wrap = 0
28
+ force_single_line = false
29
+ include_trailing_comma = true
30
+ known_first_party = ["voicevox_engine"]
31
+ known_third_party = ["numpy"]
32
+ line_length = 88
33
+ multi_line_output = 3
34
+ use_parentheses = true
35
+
36
+ [tool.poetry]
37
+ name = "voicevox_engine"
38
+ version = "0.0.0"
39
+ description = ""
40
+ authors = ["Hiroshiba <[email protected]>"]
41
+
42
+ [tool.poetry.dependencies]
43
+ python = "~3.11"
44
+ numpy = "^1.20.0"
45
+ fastapi = "^0.70.0"
46
+ python-multipart = "^0.0.5"
47
+ uvicorn = "^0.15.0"
48
+ aiofiles = "^0.7.0"
49
+ soundfile = "^0.10.3.post1"
50
+ scipy = "^1.7.1"
51
+ pyyaml = "^6.0"
52
+ pyworld = "^0.3.0"
53
+ appdirs = "^1.4.4"
54
+ requests = "^2.28.1"
55
+ jinja2 = "^3.1.2"
56
+ pyopenjtalk = {git = "https://github.com/VOICEVOX/pyopenjtalk", rev = "827a3fc5c7dda7bbe832c0c69da98e39cc8cb2c3"}
57
+ semver = "^3.0.0"
58
+
59
+ [tool.poetry.group.dev.dependencies]
60
+ cython = "^0.29.34,>=0.29.33" # NOTE: for Python 3.11
61
+ pyinstaller = "^5.6,<5.7.0" # NOTE: 5.7.0 or higher will fail to build the bootloader.
62
+ pre-commit = "^2.16.0"
63
+ atomicwrites = "^1.4.0"
64
+ colorama = "^0.4.4"
65
+ poetry = "^1.3.1"
66
+
67
+ [tool.poetry.group.test.dependencies]
68
+ pysen = "~0.10.3"
69
+ black = "^22.12.0"
70
+ flake8-bugbear = "^23.1.0"
71
+ flake8 = "^6.0.0"
72
+ isort = "^5.12.0"
73
+ mypy = "~0.991"
74
+ pytest = "^6.2.5"
75
+ coveralls = "^3.2.0"
76
+
77
+ [tool.poetry.group.license.dependencies]
78
+ pip-licenses = "^4.2.0"
79
+
80
+ [build-system]
81
+ requires = ["poetry-core"]
82
+ build-backend = "poetry.core.masonry.api"
requirements-dev.txt ADDED
@@ -0,0 +1,83 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ aiofiles==0.7.0 ; python_version >= "3.11" and python_version < "3.12"
2
+ altgraph==0.17.3 ; python_version >= "3.11" and python_version < "3.12"
3
+ anyio==3.6.2 ; python_version >= "3.11" and python_version < "3.12"
4
+ appdirs==1.4.4 ; python_version >= "3.11" and python_version < "3.12"
5
+ asgiref==3.6.0 ; python_version >= "3.11" and python_version < "3.12"
6
+ atomicwrites==1.4.0 ; python_version >= "3.11" and python_version < "3.12"
7
+ attrs==22.2.0 ; python_version >= "3.11" and python_version < "3.12"
8
+ cachecontrol[filecache]==0.12.11 ; python_version >= "3.11" and python_version < "3.12"
9
+ certifi==2022.12.7 ; python_version >= "3.11" and python_version < "3.12"
10
+ cffi==1.15.1 ; python_version >= "3.11" and python_version < "3.12"
11
+ cfgv==3.3.1 ; python_version >= "3.11" and python_version < "3.12"
12
+ charset-normalizer==2.1.1 ; python_version >= "3.11" and python_version < "3.12"
13
+ cleo==2.0.1 ; python_version >= "3.11" and python_version < "3.12"
14
+ click==8.0.4 ; python_version >= "3.11" and python_version < "3.12"
15
+ colorama==0.4.4 ; python_version >= "3.11" and python_version < "3.12"
16
+ crashtest==0.4.1 ; python_version >= "3.11" and python_version < "3.12"
17
+ cryptography==39.0.0 ; python_version >= "3.11" and python_version < "3.12" and sys_platform == "linux"
18
+ cython==0.29.34 ; python_version >= "3.11" and python_version < "3.12"
19
+ distlib==0.3.6 ; python_version >= "3.11" and python_version < "3.12"
20
+ dulwich==0.20.50 ; python_version >= "3.11" and python_version < "3.12"
21
+ fastapi==0.70.0 ; python_version >= "3.11" and python_version < "3.12"
22
+ filelock==3.8.2 ; python_version >= "3.11" and python_version < "3.12"
23
+ future==0.18.2 ; python_version >= "3.11" and python_version < "3.12" and sys_platform == "win32"
24
+ h11==0.14.0 ; python_version >= "3.11" and python_version < "3.12"
25
+ html5lib==1.1 ; python_version >= "3.11" and python_version < "3.12"
26
+ identify==2.5.11 ; python_version >= "3.11" and python_version < "3.12"
27
+ idna==3.4 ; python_version >= "3.11" and python_version < "3.12"
28
+ importlib-metadata==4.13.0 ; python_version >= "3.11" and python_version < "3.12"
29
+ jaraco-classes==3.2.3 ; python_version >= "3.11" and python_version < "3.12"
30
+ jeepney==0.8.0 ; python_version >= "3.11" and python_version < "3.12" and sys_platform == "linux"
31
+ jinja2==3.1.2 ; python_version >= "3.11" and python_version < "3.12"
32
+ jsonschema==4.17.3 ; python_version >= "3.11" and python_version < "3.12"
33
+ keyring==23.13.1 ; python_version >= "3.11" and python_version < "3.12"
34
+ lockfile==0.12.2 ; python_version >= "3.11" and python_version < "3.12"
35
+ macholib==1.16.2 ; python_version >= "3.11" and python_version < "3.12" and sys_platform == "darwin"
36
+ markupsafe==2.1.2 ; python_version >= "3.11" and python_version < "3.12"
37
+ more-itertools==9.0.0 ; python_version >= "3.11" and python_version < "3.12"
38
+ msgpack==1.0.4 ; python_version >= "3.11" and python_version < "3.12"
39
+ nodeenv==1.7.0 ; python_version >= "3.11" and python_version < "3.12"
40
+ numpy==1.24.2 ; python_version >= "3.11" and python_version < "3.12"
41
+ packaging==22.0 ; python_version >= "3.11" and python_version < "3.12"
42
+ pefile==2022.5.30 ; python_version >= "3.11" and python_version < "3.12" and sys_platform == "win32"
43
+ pexpect==4.8.0 ; python_version >= "3.11" and python_version < "3.12"
44
+ pkginfo==1.9.4 ; python_version >= "3.11" and python_version < "3.12"
45
+ platformdirs==2.6.2 ; python_version >= "3.11" and python_version < "3.12"
46
+ poetry-core==1.4.0 ; python_version >= "3.11" and python_version < "3.12"
47
+ poetry-plugin-export==1.2.0 ; python_version >= "3.11" and python_version < "3.12"
48
+ poetry==1.3.1 ; python_version >= "3.11" and python_version < "3.12"
49
+ pre-commit==2.16.0 ; python_version >= "3.11" and python_version < "3.12"
50
+ ptyprocess==0.7.0 ; python_version >= "3.11" and python_version < "3.12"
51
+ pycparser==2.21 ; python_version >= "3.11" and python_version < "3.12"
52
+ pydantic==1.10.2 ; python_version >= "3.11" and python_version < "3.12"
53
+ pyinstaller-hooks-contrib==2022.14 ; python_version >= "3.11" and python_version < "3.12"
54
+ pyinstaller==5.6.2 ; python_version >= "3.11" and python_version < "3.12"
55
+ pyopenjtalk @ git+https://github.com/VOICEVOX/pyopenjtalk@827a3fc5c7dda7bbe832c0c69da98e39cc8cb2c3 ; python_version >= "3.11" and python_version < "3.12"
56
+ pyrsistent==0.19.3 ; python_version >= "3.11" and python_version < "3.12"
57
+ python-multipart==0.0.5 ; python_version >= "3.11" and python_version < "3.12"
58
+ pywin32-ctypes==0.2.0 ; python_version >= "3.11" and python_version < "3.12" and sys_platform == "win32"
59
+ pyworld==0.3.2 ; python_version >= "3.11" and python_version < "3.12"
60
+ pyyaml==6.0 ; python_version >= "3.11" and python_version < "3.12"
61
+ rapidfuzz==2.13.7 ; python_version >= "3.11" and python_version < "3.12"
62
+ requests-toolbelt==0.10.1 ; python_version >= "3.11" and python_version < "3.12"
63
+ requests==2.28.1 ; python_version >= "3.11" and python_version < "3.12"
64
+ scipy==1.10.1 ; python_version >= "3.11" and python_version < "3.12"
65
+ secretstorage==3.3.3 ; python_version >= "3.11" and python_version < "3.12" and sys_platform == "linux"
66
+ semver==3.0.0 ; python_version >= "3.11" and python_version < "3.12"
67
+ setuptools==65.6.3 ; python_version >= "3.11" and python_version < "3.12"
68
+ shellingham==1.5.0.post1 ; python_version >= "3.11" and python_version < "3.12"
69
+ six==1.16.0 ; python_version >= "3.11" and python_version < "3.12"
70
+ sniffio==1.3.0 ; python_version >= "3.11" and python_version < "3.12"
71
+ soundfile==0.10.3.post1 ; python_version >= "3.11" and python_version < "3.12"
72
+ starlette==0.16.0 ; python_version >= "3.11" and python_version < "3.12"
73
+ toml==0.10.2 ; python_version >= "3.11" and python_version < "3.12"
74
+ tomlkit==0.11.6 ; python_version >= "3.11" and python_version < "3.12"
75
+ tqdm==4.64.1 ; python_version >= "3.11" and python_version < "3.12"
76
+ trove-classifiers==2022.12.22 ; python_version >= "3.11" and python_version < "3.12"
77
+ typing-extensions==4.4.0 ; python_version >= "3.11" and python_version < "3.12"
78
+ urllib3==1.26.13 ; python_version >= "3.11" and python_version < "3.12"
79
+ uvicorn==0.15.0 ; python_version >= "3.11" and python_version < "3.12"
80
+ virtualenv==20.17.1 ; python_version >= "3.11" and python_version < "3.12"
81
+ webencodings==0.5.1 ; python_version >= "3.11" and python_version < "3.12"
82
+ xattr==0.10.1 ; python_version >= "3.11" and python_version < "3.12" and sys_platform == "darwin"
83
+ zipp==3.11.0 ; python_version >= "3.11" and python_version < "3.12"
requirements-license.txt ADDED
@@ -0,0 +1,36 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ aiofiles==0.7.0 ; python_version >= "3.11" and python_version < "3.12"
2
+ anyio==3.6.2 ; python_version >= "3.11" and python_version < "3.12"
3
+ appdirs==1.4.4 ; python_version >= "3.11" and python_version < "3.12"
4
+ asgiref==3.6.0 ; python_version >= "3.11" and python_version < "3.12"
5
+ certifi==2022.12.7 ; python_version >= "3.11" and python_version < "3.12"
6
+ cffi==1.15.1 ; python_version >= "3.11" and python_version < "3.12"
7
+ charset-normalizer==2.1.1 ; python_version >= "3.11" and python_version < "3.12"
8
+ click==8.0.4 ; python_version >= "3.11" and python_version < "3.12"
9
+ colorama==0.4.4 ; python_version >= "3.11" and python_version < "3.12" and platform_system == "Windows"
10
+ cython==0.29.34 ; python_version >= "3.11" and python_version < "3.12"
11
+ fastapi==0.70.0 ; python_version >= "3.11" and python_version < "3.12"
12
+ h11==0.14.0 ; python_version >= "3.11" and python_version < "3.12"
13
+ idna==3.4 ; python_version >= "3.11" and python_version < "3.12"
14
+ jinja2==3.1.2 ; python_version >= "3.11" and python_version < "3.12"
15
+ markupsafe==2.1.2 ; python_version >= "3.11" and python_version < "3.12"
16
+ numpy==1.24.2 ; python_version >= "3.11" and python_version < "3.12"
17
+ pip-licenses==4.2.0 ; python_version >= "3.11" and python_version < "3.12"
18
+ prettytable==3.7.0 ; python_version >= "3.11" and python_version < "3.12"
19
+ pycparser==2.21 ; python_version >= "3.11" and python_version < "3.12"
20
+ pydantic==1.10.2 ; python_version >= "3.11" and python_version < "3.12"
21
+ pyopenjtalk @ git+https://github.com/VOICEVOX/pyopenjtalk@827a3fc5c7dda7bbe832c0c69da98e39cc8cb2c3 ; python_version >= "3.11" and python_version < "3.12"
22
+ python-multipart==0.0.5 ; python_version >= "3.11" and python_version < "3.12"
23
+ pyworld==0.3.2 ; python_version >= "3.11" and python_version < "3.12"
24
+ pyyaml==6.0 ; python_version >= "3.11" and python_version < "3.12"
25
+ requests==2.28.1 ; python_version >= "3.11" and python_version < "3.12"
26
+ scipy==1.10.1 ; python_version >= "3.11" and python_version < "3.12"
27
+ semver==3.0.0 ; python_version >= "3.11" and python_version < "3.12"
28
+ six==1.16.0 ; python_version >= "3.11" and python_version < "3.12"
29
+ sniffio==1.3.0 ; python_version >= "3.11" and python_version < "3.12"
30
+ soundfile==0.10.3.post1 ; python_version >= "3.11" and python_version < "3.12"
31
+ starlette==0.16.0 ; python_version >= "3.11" and python_version < "3.12"
32
+ tqdm==4.64.1 ; python_version >= "3.11" and python_version < "3.12"
33
+ typing-extensions==4.4.0 ; python_version >= "3.11" and python_version < "3.12"
34
+ urllib3==1.26.13 ; python_version >= "3.11" and python_version < "3.12"
35
+ uvicorn==0.15.0 ; python_version >= "3.11" and python_version < "3.12"
36
+ wcwidth==0.2.6 ; python_version >= "3.11" and python_version < "3.12"
requirements-test.txt ADDED
@@ -0,0 +1,63 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ aiofiles==0.7.0 ; python_version >= "3.11" and python_version < "3.12"
2
+ anyio==3.6.2 ; python_version >= "3.11" and python_version < "3.12"
3
+ appdirs==1.4.4 ; python_version >= "3.11" and python_version < "3.12"
4
+ asgiref==3.6.0 ; python_version >= "3.11" and python_version < "3.12"
5
+ atomicwrites==1.4.0 ; python_version >= "3.11" and python_version < "3.12" and sys_platform == "win32"
6
+ attrs==22.2.0 ; python_version >= "3.11" and python_version < "3.12"
7
+ black==22.12.0 ; python_version >= "3.11" and python_version < "3.12"
8
+ certifi==2022.12.7 ; python_version >= "3.11" and python_version < "3.12"
9
+ cffi==1.15.1 ; python_version >= "3.11" and python_version < "3.12"
10
+ charset-normalizer==2.1.1 ; python_version >= "3.11" and python_version < "3.12"
11
+ click==8.0.4 ; python_version >= "3.11" and python_version < "3.12"
12
+ colorama==0.4.4 ; python_version >= "3.11" and python_version < "3.12" and sys_platform == "win32" or python_version >= "3.11" and python_version < "3.12" and platform_system == "Windows"
13
+ colorlog==4.8.0 ; python_version >= "3.11" and python_version < "3.12"
14
+ coverage==5.5 ; python_version >= "3.11" and python_version < "3.12"
15
+ coveralls==3.2.0 ; python_version >= "3.11" and python_version < "3.12"
16
+ cython==0.29.34 ; python_version >= "3.11" and python_version < "3.12"
17
+ dacite==1.7.0 ; python_version >= "3.11" and python_version < "3.12"
18
+ docopt==0.6.2 ; python_version >= "3.11" and python_version < "3.12"
19
+ fastapi==0.70.0 ; python_version >= "3.11" and python_version < "3.12"
20
+ flake8-bugbear==23.1.20 ; python_version >= "3.11" and python_version < "3.12"
21
+ flake8==6.0.0 ; python_version >= "3.11" and python_version < "3.12"
22
+ gitdb==4.0.10 ; python_version >= "3.11" and python_version < "3.12"
23
+ gitpython==3.1.29 ; python_version >= "3.11" and python_version < "3.12"
24
+ h11==0.14.0 ; python_version >= "3.11" and python_version < "3.12"
25
+ idna==3.4 ; python_version >= "3.11" and python_version < "3.12"
26
+ iniconfig==1.1.1 ; python_version >= "3.11" and python_version < "3.12"
27
+ isort==5.12.0 ; python_version >= "3.11" and python_version < "3.12"
28
+ jinja2==3.1.2 ; python_version >= "3.11" and python_version < "3.12"
29
+ markupsafe==2.1.2 ; python_version >= "3.11" and python_version < "3.12"
30
+ mccabe==0.7.0 ; python_version >= "3.11" and python_version < "3.12"
31
+ mypy-extensions==0.4.3 ; python_version >= "3.11" and python_version < "3.12"
32
+ mypy==0.991 ; python_version >= "3.11" and python_version < "3.12"
33
+ numpy==1.24.2 ; python_version >= "3.11" and python_version < "3.12"
34
+ packaging==22.0 ; python_version >= "3.11" and python_version < "3.12"
35
+ pathspec==0.10.3 ; python_version >= "3.11" and python_version < "3.12"
36
+ platformdirs==2.6.2 ; python_version >= "3.11" and python_version < "3.12"
37
+ pluggy==1.0.0 ; python_version >= "3.11" and python_version < "3.12"
38
+ py==1.11.0 ; python_version >= "3.11" and python_version < "3.12"
39
+ pycodestyle==2.10.0 ; python_version >= "3.11" and python_version < "3.12"
40
+ pycparser==2.21 ; python_version >= "3.11" and python_version < "3.12"
41
+ pydantic==1.10.2 ; python_version >= "3.11" and python_version < "3.12"
42
+ pyflakes==3.0.1 ; python_version >= "3.11" and python_version < "3.12"
43
+ pyopenjtalk @ git+https://github.com/VOICEVOX/pyopenjtalk@827a3fc5c7dda7bbe832c0c69da98e39cc8cb2c3 ; python_version >= "3.11" and python_version < "3.12"
44
+ pysen==0.10.3 ; python_version >= "3.11" and python_version < "3.12"
45
+ pytest==6.2.5 ; python_version >= "3.11" and python_version < "3.12"
46
+ python-multipart==0.0.5 ; python_version >= "3.11" and python_version < "3.12"
47
+ pyworld==0.3.2 ; python_version >= "3.11" and python_version < "3.12"
48
+ pyyaml==6.0 ; python_version >= "3.11" and python_version < "3.12"
49
+ requests==2.28.1 ; python_version >= "3.11" and python_version < "3.12"
50
+ scipy==1.10.1 ; python_version >= "3.11" and python_version < "3.12"
51
+ semver==3.0.0 ; python_version >= "3.11" and python_version < "3.12"
52
+ six==1.16.0 ; python_version >= "3.11" and python_version < "3.12"
53
+ smmap==5.0.0 ; python_version >= "3.11" and python_version < "3.12"
54
+ sniffio==1.3.0 ; python_version >= "3.11" and python_version < "3.12"
55
+ soundfile==0.10.3.post1 ; python_version >= "3.11" and python_version < "3.12"
56
+ starlette==0.16.0 ; python_version >= "3.11" and python_version < "3.12"
57
+ toml==0.10.2 ; python_version >= "3.11" and python_version < "3.12"
58
+ tomlkit==0.11.6 ; python_version >= "3.11" and python_version < "3.12"
59
+ tqdm==4.64.1 ; python_version >= "3.11" and python_version < "3.12"
60
+ typing-extensions==4.4.0 ; python_version >= "3.11" and python_version < "3.12"
61
+ unidiff==0.7.4 ; python_version >= "3.11" and python_version < "3.12"
62
+ urllib3==1.26.13 ; python_version >= "3.11" and python_version < "3.12"
63
+ uvicorn==0.15.0 ; python_version >= "3.11" and python_version < "3.12"
requirements.txt ADDED
@@ -0,0 +1,33 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ aiofiles==0.7.0 ; python_version >= "3.11" and python_version < "3.12"
2
+ anyio==3.6.2 ; python_version >= "3.11" and python_version < "3.12"
3
+ appdirs==1.4.4 ; python_version >= "3.11" and python_version < "3.12"
4
+ asgiref==3.6.0 ; python_version >= "3.11" and python_version < "3.12"
5
+ certifi==2022.12.7 ; python_version >= "3.11" and python_version < "3.12"
6
+ cffi==1.15.1 ; python_version >= "3.11" and python_version < "3.12"
7
+ charset-normalizer==2.1.1 ; python_version >= "3.11" and python_version < "3.12"
8
+ click==8.0.4 ; python_version >= "3.11" and python_version < "3.12"
9
+ colorama==0.4.4 ; python_version >= "3.11" and python_version < "3.12" and platform_system == "Windows"
10
+ cython==0.29.34 ; python_version >= "3.11" and python_version < "3.12"
11
+ fastapi==0.70.0 ; python_version >= "3.11" and python_version < "3.12"
12
+ h11==0.14.0 ; python_version >= "3.11" and python_version < "3.12"
13
+ idna==3.4 ; python_version >= "3.11" and python_version < "3.12"
14
+ jinja2==3.1.2 ; python_version >= "3.11" and python_version < "3.12"
15
+ markupsafe==2.1.2 ; python_version >= "3.11" and python_version < "3.12"
16
+ numpy==1.24.2 ; python_version >= "3.11" and python_version < "3.12"
17
+ pycparser==2.21 ; python_version >= "3.11" and python_version < "3.12"
18
+ pydantic==1.10.2 ; python_version >= "3.11" and python_version < "3.12"
19
+ pyopenjtalk @ git+https://github.com/VOICEVOX/pyopenjtalk@827a3fc5c7dda7bbe832c0c69da98e39cc8cb2c3 ; python_version >= "3.11" and python_version < "3.12"
20
+ python-multipart==0.0.5 ; python_version >= "3.11" and python_version < "3.12"
21
+ pyworld==0.3.2 ; python_version >= "3.11" and python_version < "3.12"
22
+ pyyaml==6.0 ; python_version >= "3.11" and python_version < "3.12"
23
+ requests==2.28.1 ; python_version >= "3.11" and python_version < "3.12"
24
+ scipy==1.10.1 ; python_version >= "3.11" and python_version < "3.12"
25
+ semver==3.0.0 ; python_version >= "3.11" and python_version < "3.12"
26
+ six==1.16.0 ; python_version >= "3.11" and python_version < "3.12"
27
+ sniffio==1.3.0 ; python_version >= "3.11" and python_version < "3.12"
28
+ soundfile==0.10.3.post1 ; python_version >= "3.11" and python_version < "3.12"
29
+ starlette==0.16.0 ; python_version >= "3.11" and python_version < "3.12"
30
+ tqdm==4.64.1 ; python_version >= "3.11" and python_version < "3.12"
31
+ typing-extensions==4.4.0 ; python_version >= "3.11" and python_version < "3.12"
32
+ urllib3==1.26.13 ; python_version >= "3.11" and python_version < "3.12"
33
+ uvicorn==0.15.0 ; python_version >= "3.11" and python_version < "3.12"
run.py ADDED
@@ -0,0 +1,1243 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import argparse
2
+ import asyncio
3
+ import base64
4
+ import json
5
+ import multiprocessing
6
+ import os
7
+ import re
8
+ import sys
9
+ import traceback
10
+ import zipfile
11
+ from functools import lru_cache
12
+ from io import BytesIO, TextIOWrapper
13
+ from pathlib import Path
14
+ from tempfile import NamedTemporaryFile, TemporaryFile
15
+ from typing import Dict, List, Optional
16
+
17
+ import soundfile
18
+ import uvicorn
19
+ from fastapi import FastAPI, Form, HTTPException, Query, Request, Response
20
+ from fastapi.middleware.cors import CORSMiddleware
21
+ from fastapi.responses import HTMLResponse, JSONResponse
22
+ from fastapi.templating import Jinja2Templates
23
+ from pydantic import ValidationError, conint
24
+ from starlette.background import BackgroundTask
25
+ from starlette.responses import FileResponse
26
+
27
+ from voicevox_engine import __version__
28
+ from voicevox_engine.cancellable_engine import CancellableEngine
29
+ from voicevox_engine.downloadable_library import LibraryManager
30
+ from voicevox_engine.engine_manifest import EngineManifestLoader
31
+ from voicevox_engine.engine_manifest.EngineManifest import EngineManifest
32
+ from voicevox_engine.kana_parser import create_kana, parse_kana
33
+ from voicevox_engine.metas.MetasStore import MetasStore, construct_lookup
34
+ from voicevox_engine.model import (
35
+ AccentPhrase,
36
+ AudioQuery,
37
+ DownloadableLibrary,
38
+ MorphableTargetInfo,
39
+ ParseKanaBadRequest,
40
+ ParseKanaError,
41
+ Speaker,
42
+ SpeakerInfo,
43
+ SpeakerNotFoundError,
44
+ SupportedDevicesInfo,
45
+ UserDictWord,
46
+ WordTypes,
47
+ )
48
+ from voicevox_engine.morphing import (
49
+ get_morphable_targets,
50
+ is_synthesis_morphing_permitted,
51
+ synthesis_morphing,
52
+ )
53
+ from voicevox_engine.morphing import (
54
+ synthesis_morphing_parameter as _synthesis_morphing_parameter,
55
+ )
56
+ from voicevox_engine.part_of_speech_data import MAX_PRIORITY, MIN_PRIORITY
57
+ from voicevox_engine.preset import Preset, PresetError, PresetManager
58
+ from voicevox_engine.setting import (
59
+ USER_SETTING_PATH,
60
+ CorsPolicyMode,
61
+ Setting,
62
+ SettingLoader,
63
+ )
64
+ from voicevox_engine.synthesis_engine import SynthesisEngineBase, make_synthesis_engines
65
+ from voicevox_engine.user_dict import (
66
+ apply_word,
67
+ delete_word,
68
+ import_user_dict,
69
+ read_dict,
70
+ rewrite_word,
71
+ update_dict,
72
+ )
73
+ from voicevox_engine.utility import (
74
+ ConnectBase64WavesException,
75
+ connect_base64_waves,
76
+ delete_file,
77
+ engine_root,
78
+ get_latest_core_version,
79
+ get_save_dir,
80
+ )
81
+
82
+
83
+ def b64encode_str(s):
84
+ return base64.b64encode(s).decode("utf-8")
85
+
86
+
87
+ def set_output_log_utf8() -> None:
88
+ """
89
+ stdout/stderrのエンコーディングをUTF-8に切り替える関数
90
+ """
91
+ # コンソールがない環境だとNone https://docs.python.org/ja/3/library/sys.html#sys.__stdin__
92
+ if sys.stdout is not None:
93
+ # 必ずしもreconfigure()が実装されているとは限らない
94
+ try:
95
+ sys.stdout.reconfigure(encoding="utf-8")
96
+ except AttributeError:
97
+ # バッファを全て出力する
98
+ sys.stdout.flush()
99
+ sys.stdout = TextIOWrapper(
100
+ sys.stdout.buffer, encoding="utf-8", errors="backslashreplace"
101
+ )
102
+ if sys.stderr is not None:
103
+ try:
104
+ sys.stderr.reconfigure(encoding="utf-8")
105
+ except AttributeError:
106
+ sys.stderr.flush()
107
+ sys.stderr = TextIOWrapper(
108
+ sys.stderr.buffer, encoding="utf-8", errors="backslashreplace"
109
+ )
110
+
111
+
112
+ def generate_app(
113
+ synthesis_engines: Dict[str, SynthesisEngineBase],
114
+ latest_core_version: str,
115
+ setting_loader: SettingLoader,
116
+ root_dir: Optional[Path] = None,
117
+ cors_policy_mode: CorsPolicyMode = CorsPolicyMode.localapps,
118
+ allow_origin: Optional[List[str]] = None,
119
+ ) -> FastAPI:
120
+ if root_dir is None:
121
+ root_dir = engine_root()
122
+
123
+ default_sampling_rate = synthesis_engines[latest_core_version].default_sampling_rate
124
+
125
+ app = FastAPI(
126
+ title="VOICEVOX Engine",
127
+ description="VOICEVOXの音声合成エンジンです。",
128
+ version=__version__,
129
+ )
130
+
131
+ # CORS用のヘッダを生成するミドルウェア
132
+ localhost_regex = "^https?://(localhost|127\\.0\\.0\\.1)(:[0-9]+)?$"
133
+ compiled_localhost_regex = re.compile(localhost_regex)
134
+ allowed_origins = ["*"]
135
+ if cors_policy_mode == "localapps":
136
+ allowed_origins = ["app://."]
137
+ if allow_origin is not None:
138
+ allowed_origins += allow_origin
139
+ if "*" in allow_origin:
140
+ print(
141
+ 'WARNING: Deprecated use of argument "*" in allow_origin. '
142
+ 'Use option "--cors_policy_mod all" instead. See "--help" for more.',
143
+ file=sys.stderr,
144
+ )
145
+
146
+ app.add_middleware(
147
+ CORSMiddleware,
148
+ allow_origins=allowed_origins,
149
+ allow_credentials=True,
150
+ allow_origin_regex=localhost_regex,
151
+ allow_methods=["*"],
152
+ allow_headers=["*"],
153
+ )
154
+
155
+ # 許可されていないOriginを遮断するミドルウェア
156
+ @app.middleware("http")
157
+ async def block_origin_middleware(request: Request, call_next):
158
+ isValidOrigin: bool = False
159
+ if "Origin" not in request.headers: # Originのない純粋なリクエストの場合
160
+ isValidOrigin = True
161
+ elif "*" in allowed_origins: # すべてを許可する設定の場合
162
+ isValidOrigin = True
163
+ elif request.headers["Origin"] in allowed_origins: # Originが許可されている場合
164
+ isValidOrigin = True
165
+ elif compiled_localhost_regex.fullmatch(
166
+ request.headers["Origin"]
167
+ ): # localhostの場合
168
+ isValidOrigin = True
169
+
170
+ if isValidOrigin:
171
+ return await call_next(request)
172
+ else:
173
+ return JSONResponse(
174
+ status_code=403, content={"detail": "Origin not allowed"}
175
+ )
176
+
177
+ preset_manager = PresetManager(
178
+ preset_path=root_dir / "presets.yaml",
179
+ )
180
+ engine_manifest_loader = EngineManifestLoader(
181
+ root_dir / "engine_manifest.json", root_dir
182
+ )
183
+ library_manager = LibraryManager(get_save_dir() / "installed_libraries")
184
+
185
+ metas_store = MetasStore(root_dir / "speaker_info")
186
+
187
+ setting_ui_template = Jinja2Templates(directory=engine_root() / "ui_template")
188
+
189
+ # キャッシュを有効化
190
+ # モジュール側でlru_cacheを指定するとキャッシュを制御しにくいため、HTTPサーバ側で指定する
191
+ # TODO: キャッシュを管理するモジュール側API・HTTP側APIを用意する
192
+ synthesis_morphing_parameter = lru_cache(maxsize=4)(_synthesis_morphing_parameter)
193
+
194
+ # @app.on_event("startup")
195
+ # async def start_catch_disconnection():
196
+ # if args.enable_cancellable_synthesis:
197
+ # loop = asyncio.get_event_loop()
198
+ # _ = loop.create_task(cancellable_engine.catch_disconnection())
199
+
200
+ @app.on_event("startup")
201
+ def apply_user_dict():
202
+ update_dict()
203
+
204
+ def get_engine(core_version: Optional[str]) -> SynthesisEngineBase:
205
+ if core_version is None:
206
+ return synthesis_engines[latest_core_version]
207
+ if core_version in synthesis_engines:
208
+ return synthesis_engines[core_version]
209
+ raise HTTPException(status_code=422, detail="不明なバージョンです")
210
+
211
+ @app.post(
212
+ "/audio_query",
213
+ response_model=AudioQuery,
214
+ tags=["クエリ作成"],
215
+ summary="音声合成用のクエリを作成する",
216
+ )
217
+ def audio_query(text: str, speaker: int, core_version: Optional[str] = None):
218
+ """
219
+ クエリの初期値を得ます。ここで得られたクエリはそのまま音声合成に利用できます。各値の意味は`Schemas`を参照してください。
220
+ """
221
+ engine = get_engine(core_version)
222
+ accent_phrases = engine.create_accent_phrases(text, speaker_id=speaker)
223
+ return AudioQuery(
224
+ accent_phrases=accent_phrases,
225
+ speedScale=1,
226
+ pitchScale=0,
227
+ intonationScale=1,
228
+ volumeScale=1,
229
+ prePhonemeLength=0.1,
230
+ postPhonemeLength=0.1,
231
+ outputSamplingRate=default_sampling_rate,
232
+ outputStereo=False,
233
+ kana=create_kana(accent_phrases),
234
+ )
235
+
236
+ @app.post(
237
+ "/audio_query_from_preset",
238
+ response_model=AudioQuery,
239
+ tags=["クエリ作成"],
240
+ summary="音声合成用のクエリをプリセットを用いて作成する",
241
+ )
242
+ def audio_query_from_preset(
243
+ text: str, preset_id: int, core_version: Optional[str] = None
244
+ ):
245
+ """
246
+ クエリの初期値を得ます。ここで得られたクエリはそのまま音声合成に利用できます。各値の意味は`Schemas`を参照してください。
247
+ """
248
+ engine = get_engine(core_version)
249
+ try:
250
+ presets = preset_manager.load_presets()
251
+ except PresetError as err:
252
+ raise HTTPException(status_code=422, detail=str(err))
253
+ for preset in presets:
254
+ if preset.id == preset_id:
255
+ selected_preset = preset
256
+ break
257
+ else:
258
+ raise HTTPException(status_code=422, detail="該当するプリセットIDが見つかりません")
259
+
260
+ accent_phrases = engine.create_accent_phrases(
261
+ text, speaker_id=selected_preset.style_id
262
+ )
263
+ return AudioQuery(
264
+ accent_phrases=accent_phrases,
265
+ speedScale=selected_preset.speedScale,
266
+ pitchScale=selected_preset.pitchScale,
267
+ intonationScale=selected_preset.intonationScale,
268
+ volumeScale=selected_preset.volumeScale,
269
+ prePhonemeLength=selected_preset.prePhonemeLength,
270
+ postPhonemeLength=selected_preset.postPhonemeLength,
271
+ outputSamplingRate=default_sampling_rate,
272
+ outputStereo=False,
273
+ kana=create_kana(accent_phrases),
274
+ )
275
+
276
+ @app.post(
277
+ "/accent_phrases",
278
+ response_model=List[AccentPhrase],
279
+ tags=["クエリ編集"],
280
+ summary="テキストからアクセント句を得る",
281
+ responses={
282
+ 400: {
283
+ "description": "読み仮名のパースに失敗",
284
+ "model": ParseKanaBadRequest,
285
+ }
286
+ },
287
+ )
288
+ def accent_phrases(
289
+ text: str,
290
+ speaker: int,
291
+ is_kana: bool = False,
292
+ core_version: Optional[str] = None,
293
+ ):
294
+ """
295
+ テキストからアクセント句を得ます。
296
+ is_kanaが`true`のとき、テキストは次のようなAquesTalkライクな記法に従う読み仮名として処理されます。デフォルトは`false`です。
297
+ * 全てのカナはカタカナで記述される
298
+ * アクセント句は`/`または`、`で区切る。`、`で区切った場合に限り無音区間が挿入される。
299
+ * カナの手前に`_`を入れるとそのカナは無声化される
300
+ * アクセント位置を`'`で指定する。全てのアクセント句にはアクセント位置を1つ指定する必要がある。
301
+ * アクセント句末に`?`(全角)を入れることにより疑問文の発音ができる。
302
+ """
303
+ engine = get_engine(core_version)
304
+ if is_kana:
305
+ try:
306
+ accent_phrases = parse_kana(text)
307
+ except ParseKanaError as err:
308
+ raise HTTPException(
309
+ status_code=400,
310
+ detail=ParseKanaBadRequest(err).dict(),
311
+ )
312
+ accent_phrases = engine.replace_mora_data(
313
+ accent_phrases=accent_phrases, speaker_id=speaker
314
+ )
315
+
316
+ return accent_phrases
317
+ else:
318
+ return engine.create_accent_phrases(text, speaker_id=speaker)
319
+
320
+ @app.post(
321
+ "/mora_data",
322
+ response_model=List[AccentPhrase],
323
+ tags=["クエリ編集"],
324
+ summary="アクセント句から音高・音素長を得る",
325
+ )
326
+ def mora_data(
327
+ accent_phrases: List[AccentPhrase],
328
+ speaker: int,
329
+ core_version: Optional[str] = None,
330
+ ):
331
+ engine = get_engine(core_version)
332
+ return engine.replace_mora_data(accent_phrases, speaker_id=speaker)
333
+
334
+ @app.post(
335
+ "/mora_length",
336
+ response_model=List[AccentPhrase],
337
+ tags=["クエリ編集"],
338
+ summary="アクセント句から音素長を得る",
339
+ )
340
+ def mora_length(
341
+ accent_phrases: List[AccentPhrase],
342
+ speaker: int,
343
+ core_version: Optional[str] = None,
344
+ ):
345
+ engine = get_engine(core_version)
346
+ return engine.replace_phoneme_length(
347
+ accent_phrases=accent_phrases, speaker_id=speaker
348
+ )
349
+
350
+ @app.post(
351
+ "/mora_pitch",
352
+ response_model=List[AccentPhrase],
353
+ tags=["クエリ編集"],
354
+ summary="アクセント句から音高を得る",
355
+ )
356
+ def mora_pitch(
357
+ accent_phrases: List[AccentPhrase],
358
+ speaker: int,
359
+ core_version: Optional[str] = None,
360
+ ):
361
+ engine = get_engine(core_version)
362
+ return engine.replace_mora_pitch(
363
+ accent_phrases=accent_phrases, speaker_id=speaker
364
+ )
365
+
366
+ @app.post(
367
+ "/synthesis",
368
+ response_class=FileResponse,
369
+ responses={
370
+ 200: {
371
+ "content": {
372
+ "audio/wav": {"schema": {"type": "string", "format": "binary"}}
373
+ },
374
+ }
375
+ },
376
+ tags=["音声合成"],
377
+ summary="音声合成する",
378
+ )
379
+ def synthesis(
380
+ query: AudioQuery,
381
+ speaker: int,
382
+ enable_interrogative_upspeak: bool = Query( # noqa: B008
383
+ default=True,
384
+ description="疑問系のテキストが与えられたら語尾を自動調整する",
385
+ ),
386
+ core_version: Optional[str] = None,
387
+ ):
388
+ engine = get_engine(core_version)
389
+ wave = engine.synthesis(
390
+ query=query,
391
+ speaker_id=speaker,
392
+ enable_interrogative_upspeak=enable_interrogative_upspeak,
393
+ )
394
+
395
+ with NamedTemporaryFile(delete=False) as f:
396
+ soundfile.write(
397
+ file=f, data=wave, samplerate=query.outputSamplingRate, format="WAV"
398
+ )
399
+
400
+ return FileResponse(
401
+ f.name,
402
+ media_type="audio/wav",
403
+ background=BackgroundTask(delete_file, f.name),
404
+ )
405
+
406
+ @app.post(
407
+ "/cancellable_synthesis",
408
+ response_class=FileResponse,
409
+ responses={
410
+ 200: {
411
+ "content": {
412
+ "audio/wav": {"schema": {"type": "string", "format": "binary"}}
413
+ },
414
+ }
415
+ },
416
+ tags=["音声合成"],
417
+ summary="音声合成する(キャンセル可能)",
418
+ )
419
+ def cancellable_synthesis(
420
+ query: AudioQuery,
421
+ speaker: int,
422
+ request: Request,
423
+ core_version: Optional[str] = None,
424
+ ):
425
+ if not args.enable_cancellable_synthesis:
426
+ raise HTTPException(
427
+ status_code=404,
428
+ detail="実験的機能はデフォルトで無効になっています。使用するには引数を指定してください。",
429
+ )
430
+ f_name = cancellable_engine._synthesis_impl(
431
+ query=query,
432
+ speaker_id=speaker,
433
+ request=request,
434
+ core_version=core_version,
435
+ )
436
+ if f_name == "":
437
+ raise HTTPException(status_code=422, detail="不明なバージョンです")
438
+
439
+ return FileResponse(
440
+ f_name,
441
+ media_type="audio/wav",
442
+ background=BackgroundTask(delete_file, f_name),
443
+ )
444
+
445
+ @app.post(
446
+ "/multi_synthesis",
447
+ response_class=FileResponse,
448
+ responses={
449
+ 200: {
450
+ "content": {
451
+ "application/zip": {
452
+ "schema": {"type": "string", "format": "binary"}
453
+ }
454
+ },
455
+ }
456
+ },
457
+ tags=["音声合成"],
458
+ summary="複数まとめて音声合成する",
459
+ )
460
+ def multi_synthesis(
461
+ queries: List[AudioQuery],
462
+ speaker: int,
463
+ core_version: Optional[str] = None,
464
+ ):
465
+ engine = get_engine(core_version)
466
+ sampling_rate = queries[0].outputSamplingRate
467
+
468
+ with NamedTemporaryFile(delete=False) as f:
469
+
470
+ with zipfile.ZipFile(f, mode="a") as zip_file:
471
+
472
+ for i in range(len(queries)):
473
+
474
+ if queries[i].outputSamplingRate != sampling_rate:
475
+ raise HTTPException(
476
+ status_code=422, detail="サンプリングレートが異なるクエリがあります"
477
+ )
478
+
479
+ with TemporaryFile() as wav_file:
480
+
481
+ wave = engine.synthesis(query=queries[i], speaker_id=speaker)
482
+ soundfile.write(
483
+ file=wav_file,
484
+ data=wave,
485
+ samplerate=sampling_rate,
486
+ format="WAV",
487
+ )
488
+ wav_file.seek(0)
489
+ zip_file.writestr(f"{str(i + 1).zfill(3)}.wav", wav_file.read())
490
+
491
+ return FileResponse(
492
+ f.name,
493
+ media_type="application/zip",
494
+ background=BackgroundTask(delete_file, f.name),
495
+ )
496
+
497
+ @app.post(
498
+ "/morphable_targets",
499
+ response_model=List[Dict[str, MorphableTargetInfo]],
500
+ tags=["音声合成"],
501
+ summary="指定した話者に対してエンジン内の話者がモーフィングが可能か判定する",
502
+ )
503
+ def morphable_targets(
504
+ base_speakers: List[int],
505
+ core_version: Optional[str] = None,
506
+ ):
507
+ """
508
+ 指定されたベース話者に対してエンジン内の各話者がモーフィング機能を利用可能か返します。
509
+ モーフィングの許可/禁止は`/speakers`の`speaker.supported_features.synthesis_morphing`に記載されています。
510
+ プロパティが存在しない場合は、モーフィングが許可されているとみなします。
511
+ 返り値の話者はstring型なので注意。
512
+ """
513
+ engine = get_engine(core_version)
514
+
515
+ try:
516
+ speakers = metas_store.load_combined_metas(engine=engine)
517
+ morphable_targets = get_morphable_targets(
518
+ speakers=speakers, base_speakers=base_speakers
519
+ )
520
+ # jsonはint型のキーを持てないので、string型に変換する
521
+ return [
522
+ {str(k): v for k, v in morphable_target.items()}
523
+ for morphable_target in morphable_targets
524
+ ]
525
+ except SpeakerNotFoundError as e:
526
+ raise HTTPException(
527
+ status_code=404, detail=f"該当する話者(speaker={e.speaker})が見つかりません"
528
+ )
529
+
530
+ @app.post(
531
+ "/synthesis_morphing",
532
+ response_class=FileResponse,
533
+ responses={
534
+ 200: {
535
+ "content": {
536
+ "audio/wav": {"schema": {"type": "string", "format": "binary"}}
537
+ },
538
+ }
539
+ },
540
+ tags=["音声合成"],
541
+ summary="2人の話者でモーフィングした音声を合成する",
542
+ )
543
+ def _synthesis_morphing(
544
+ query: AudioQuery,
545
+ base_speaker: int,
546
+ target_speaker: int,
547
+ morph_rate: float = Query(..., ge=0.0, le=1.0), # noqa: B008
548
+ core_version: Optional[str] = None,
549
+ ):
550
+ """
551
+ 指定された2人の話者で音声を合成、指定した割合でモーフィングした音声を得ます。
552
+ モーフィングの割合は`morph_rate`で指定でき、0.0でベースの話者、1.0でターゲットの話者に近づきま��。
553
+ """
554
+ engine = get_engine(core_version)
555
+
556
+ try:
557
+ speakers = metas_store.load_combined_metas(engine=engine)
558
+ speaker_lookup = construct_lookup(speakers=speakers)
559
+ is_permitted = is_synthesis_morphing_permitted(
560
+ speaker_lookup, base_speaker, target_speaker
561
+ )
562
+ if not is_permitted:
563
+ raise HTTPException(
564
+ status_code=400,
565
+ detail="指定された話者ペアでのモーフィングはできません",
566
+ )
567
+ except SpeakerNotFoundError as e:
568
+ raise HTTPException(
569
+ status_code=404, detail=f"該当する話者(speaker={e.speaker})が見つかりません"
570
+ )
571
+
572
+ # 生成したパラメータはキャッシュされる
573
+ morph_param = synthesis_morphing_parameter(
574
+ engine=engine,
575
+ query=query,
576
+ base_speaker=base_speaker,
577
+ target_speaker=target_speaker,
578
+ )
579
+
580
+ morph_wave = synthesis_morphing(
581
+ morph_param=morph_param,
582
+ morph_rate=morph_rate,
583
+ output_fs=query.outputSamplingRate,
584
+ output_stereo=query.outputStereo,
585
+ )
586
+
587
+ with NamedTemporaryFile(delete=False) as f:
588
+ soundfile.write(
589
+ file=f,
590
+ data=morph_wave,
591
+ samplerate=query.outputSamplingRate,
592
+ format="WAV",
593
+ )
594
+
595
+ return FileResponse(
596
+ f.name,
597
+ media_type="audio/wav",
598
+ background=BackgroundTask(delete_file, f.name),
599
+ )
600
+
601
+ @app.post(
602
+ "/connect_waves",
603
+ response_class=FileResponse,
604
+ responses={
605
+ 200: {
606
+ "content": {
607
+ "audio/wav": {"schema": {"type": "string", "format": "binary"}}
608
+ },
609
+ }
610
+ },
611
+ tags=["その他"],
612
+ summary="base64エンコードされた複数のwavデータを一つに結合する",
613
+ )
614
+ def connect_waves(waves: List[str]):
615
+ """
616
+ base64エンコードされたwavデータを一纏めにし、wavファイルで返します。
617
+ """
618
+ try:
619
+ waves_nparray, sampling_rate = connect_base64_waves(waves)
620
+ except ConnectBase64WavesException as err:
621
+ return HTTPException(status_code=422, detail=str(err))
622
+
623
+ with NamedTemporaryFile(delete=False) as f:
624
+ soundfile.write(
625
+ file=f,
626
+ data=waves_nparray,
627
+ samplerate=sampling_rate,
628
+ format="WAV",
629
+ )
630
+
631
+ return FileResponse(
632
+ f.name,
633
+ media_type="audio/wav",
634
+ background=BackgroundTask(delete_file, f.name),
635
+ )
636
+
637
+ @app.get("/presets", response_model=List[Preset], tags=["その他"])
638
+ def get_presets():
639
+ """
640
+ エンジンが保持しているプリセットの設定を返します
641
+
642
+ Returns
643
+ -------
644
+ presets: List[Preset]
645
+ プリセットのリスト
646
+ """
647
+ try:
648
+ presets = preset_manager.load_presets()
649
+ except PresetError as err:
650
+ raise HTTPException(status_code=422, detail=str(err))
651
+ return presets
652
+
653
+ @app.post("/add_preset", response_model=int, tags=["その他"])
654
+ def add_preset(preset: Preset):
655
+ """
656
+ 新しいプリセットを追加します
657
+
658
+ Parameters
659
+ -------
660
+ preset: Preset
661
+ 新しいプリセット。
662
+ プリセットIDが既存のものと重複している場合は、新規のプリセットIDが採番されます。
663
+
664
+ Returns
665
+ -------
666
+ id: int
667
+ 追加したプリセットのプリセットID
668
+ """
669
+ try:
670
+ id = preset_manager.add_preset(preset)
671
+ except PresetError as err:
672
+ raise HTTPException(status_code=422, detail=str(err))
673
+ return id
674
+
675
+ @app.post("/update_preset", response_model=int, tags=["その他"])
676
+ def update_preset(preset: Preset):
677
+ """
678
+ 既存のプリセットを更新します
679
+
680
+ Parameters
681
+ -------
682
+ preset: Preset
683
+ 更新するプリセット。
684
+ プリセットIDが更新対象と一致している必要があります。
685
+
686
+ Returns
687
+ -------
688
+ id: int
689
+ 更新したプリセットのプリセットID
690
+ """
691
+ try:
692
+ id = preset_manager.update_preset(preset)
693
+ except PresetError as err:
694
+ raise HTTPException(status_code=422, detail=str(err))
695
+ return id
696
+
697
+ @app.post("/delete_preset", status_code=204, tags=["その他"])
698
+ def delete_preset(id: int):
699
+ """
700
+ 既存のプリセットを削除します
701
+
702
+ Parameters
703
+ -------
704
+ id: int
705
+ 削除するプリセットのプリセットID
706
+
707
+ """
708
+ try:
709
+ preset_manager.delete_preset(id)
710
+ except PresetError as err:
711
+ raise HTTPException(status_code=422, detail=str(err))
712
+ return Response(status_code=204)
713
+
714
+ @app.get("/version", tags=["その他"])
715
+ def version() -> str:
716
+ return __version__
717
+
718
+ @app.get("/core_versions", response_model=List[str], tags=["その他"])
719
+ def core_versions() -> List[str]:
720
+ return Response(
721
+ content=json.dumps(list(synthesis_engines.keys())),
722
+ media_type="application/json",
723
+ )
724
+
725
+ @app.get("/speakers", response_model=List[Speaker], tags=["その他"])
726
+ def speakers(
727
+ core_version: Optional[str] = None,
728
+ ):
729
+ engine = get_engine(core_version)
730
+ return metas_store.load_combined_metas(engine=engine)
731
+
732
+ @app.get("/speaker_info", response_model=SpeakerInfo, tags=["その他"])
733
+ def speaker_info(speaker_uuid: str, core_version: Optional[str] = None):
734
+ """
735
+ 指定されたspeaker_uuidに関する情報をjson形式で返します。
736
+ 画像や音声はbase64エンコードされたものが返されます。
737
+
738
+ Returns
739
+ -------
740
+ ret_data: SpeakerInfo
741
+ """
742
+ speakers = json.loads(get_engine(core_version).speakers)
743
+ for i in range(len(speakers)):
744
+ if speakers[i]["speaker_uuid"] == speaker_uuid:
745
+ speaker = speakers[i]
746
+ break
747
+ else:
748
+ raise HTTPException(status_code=404, detail="該当する話者が見つかりません")
749
+
750
+ try:
751
+ policy = (root_dir / f"speaker_info/{speaker_uuid}/policy.md").read_text(
752
+ "utf-8"
753
+ )
754
+ portrait = b64encode_str(
755
+ (root_dir / f"speaker_info/{speaker_uuid}/portrait.png").read_bytes()
756
+ )
757
+ style_infos = []
758
+ for style in speaker["styles"]:
759
+ id = style["id"]
760
+ icon = b64encode_str(
761
+ (
762
+ root_dir / f"speaker_info/{speaker_uuid}/icons/{id}.png"
763
+ ).read_bytes()
764
+ )
765
+ style_portrait_path = (
766
+ root_dir / f"speaker_info/{speaker_uuid}/portraits/{id}.png"
767
+ )
768
+ style_portrait = (
769
+ b64encode_str(style_portrait_path.read_bytes())
770
+ if style_portrait_path.exists()
771
+ else None
772
+ )
773
+ voice_samples = [
774
+ b64encode_str(
775
+ (
776
+ root_dir
777
+ / "speaker_info/{}/voice_samples/{}_{}.wav".format(
778
+ speaker_uuid, id, str(j + 1).zfill(3)
779
+ )
780
+ ).read_bytes()
781
+ )
782
+ for j in range(3)
783
+ ]
784
+ style_infos.append(
785
+ {
786
+ "id": id,
787
+ "icon": icon,
788
+ "portrait": style_portrait,
789
+ "voice_samples": voice_samples,
790
+ }
791
+ )
792
+ except FileNotFoundError:
793
+ import traceback
794
+
795
+ traceback.print_exc()
796
+ raise HTTPException(status_code=500, detail="追加情報が見つかりませんでした")
797
+
798
+ ret_data = {"policy": policy, "portrait": portrait, "style_infos": style_infos}
799
+ return ret_data
800
+
801
+ @app.get(
802
+ "/downloadable_libraries",
803
+ response_model=List[DownloadableLibrary],
804
+ tags=["音声ライブラリ管理"],
805
+ )
806
+ def downloadable_libraries():
807
+ """
808
+ ダウンロード可能な音声ライブラリの情報を返します。
809
+
810
+ Returns
811
+ -------
812
+ ret_data: List[DownloadableLibrary]
813
+ """
814
+ manifest = engine_manifest_loader.load_manifest()
815
+ if not manifest.supported_features.manage_library:
816
+ raise HTTPException(status_code=404, detail="この機能は実装されていません")
817
+ return library_manager.downloadable_libraries()
818
+
819
+ @app.get(
820
+ "/installed_libraries",
821
+ response_model=List[DownloadableLibrary],
822
+ tags=["音声ライブラリ管理"],
823
+ )
824
+ def installed_libraries():
825
+ """
826
+ インストールした音声ライブラリの情報を返します。
827
+
828
+ Returns
829
+ -------
830
+ ret_data: List[DownloadableLibrary]
831
+ """
832
+ manifest = engine_manifest_loader.load_manifest()
833
+ if not manifest.supported_features.manage_library:
834
+ raise HTTPException(status_code=404, detail="この機能は実装されていません")
835
+ return library_manager.installed_libraries()
836
+
837
+ @app.post(
838
+ "/install_library/{library_uuid}",
839
+ status_code=204,
840
+ tags=["音声ライブラリ管理"],
841
+ )
842
+ async def install_library(library_uuid: str, request: Request):
843
+ """
844
+ 音声ライブラリをインストールします。
845
+ 音声ライブラリのZIPファイルをリクエストボディとして送信してください。
846
+
847
+ Parameters
848
+ ----------
849
+ library_uuid: str
850
+ 音声ライブラリのID
851
+ """
852
+ manifest = engine_manifest_loader.load_manifest()
853
+ if not manifest.supported_features.manage_library:
854
+ raise HTTPException(status_code=404, detail="この機能は実装されていません")
855
+ archive = BytesIO(await request.body())
856
+ loop = asyncio.get_event_loop()
857
+ await loop.run_in_executor(
858
+ None, library_manager.install_library, library_uuid, archive
859
+ )
860
+ return Response(status_code=204)
861
+
862
+ @app.post("/initialize_speaker", status_code=204, tags=["その他"])
863
+ def initialize_speaker(
864
+ speaker: int,
865
+ skip_reinit: bool = Query( # noqa: B008
866
+ False, description="既に初期化済みの話者の再初期化をスキップするかどうか"
867
+ ),
868
+ core_version: Optional[str] = None,
869
+ ):
870
+ """
871
+ 指定されたspeaker_idの話者を初期化します。
872
+ 実行しなくても他のAPIは使用できますが、初回実行時に時間がかかることがあります。
873
+ """
874
+ engine = get_engine(core_version)
875
+ engine.initialize_speaker_synthesis(speaker_id=speaker, skip_reinit=skip_reinit)
876
+ return Response(status_code=204)
877
+
878
+ @app.get("/is_initialized_speaker", response_model=bool, tags=["その他"])
879
+ def is_initialized_speaker(speaker: int, core_version: Optional[str] = None):
880
+ """
881
+ 指定されたspeaker_idの話者が初期化されているかどうかを返します。
882
+ """
883
+ engine = get_engine(core_version)
884
+ return engine.is_initialized_speaker_synthesis(speaker)
885
+
886
+ @app.get("/user_dict", response_model=Dict[str, UserDictWord], tags=["ユーザー辞書"])
887
+ def get_user_dict_words():
888
+ """
889
+ ユーザー辞書に登録されている単語の一覧を返します。
890
+ 単語の表層形(surface)は正規化済みの物を返します。
891
+
892
+ Returns
893
+ -------
894
+ Dict[str, UserDictWord]
895
+ 単語のUUIDとその詳細
896
+ """
897
+ try:
898
+ return read_dict()
899
+ except Exception:
900
+ traceback.print_exc()
901
+ raise HTTPException(status_code=422, detail="辞書の読み込みに失敗しました。")
902
+
903
+ @app.post("/user_dict_word", response_model=str, tags=["ユーザー辞書"])
904
+ def add_user_dict_word(
905
+ surface: str,
906
+ pronunciation: str,
907
+ accent_type: int,
908
+ word_type: Optional[WordTypes] = None,
909
+ priority: Optional[conint(ge=MIN_PRIORITY, le=MAX_PRIORITY)] = None,
910
+ ):
911
+ """
912
+ ユーザー辞書に言葉を追加します。
913
+
914
+ Parameters
915
+ ----------
916
+ surface : str
917
+ 言葉の表層形
918
+ pronunciation: str
919
+ 言葉の発音(カタカナ)
920
+ accent_type: int
921
+ アクセント型(音が下がる場所を指す)
922
+ word_type: WordTypes, optional
923
+ PROPER_NOUN(固有名詞)、COMMON_NOUN(普通名詞)、VERB(動詞)、ADJECTIVE(形容詞)、SUFFIX(語尾)のいずれか
924
+ priority: int, optional
925
+ 単語の優先度(0から10までの整数)
926
+ 数字が大きいほど優先度が高くなる
927
+ 1から9までの値を指定することを推奨
928
+ """
929
+ try:
930
+ word_uuid = apply_word(
931
+ surface=surface,
932
+ pronunciation=pronunciation,
933
+ accent_type=accent_type,
934
+ word_type=word_type,
935
+ priority=priority,
936
+ )
937
+ return Response(content=word_uuid)
938
+ except ValidationError as e:
939
+ raise HTTPException(status_code=422, detail="パラメータに誤りがあります。\n" + str(e))
940
+ except Exception:
941
+ traceback.print_exc()
942
+ raise HTTPException(status_code=422, detail="ユーザー辞書への追加に失敗しました。")
943
+
944
+ @app.put("/user_dict_word/{word_uuid}", status_code=204, tags=["ユーザー辞書"])
945
+ def rewrite_user_dict_word(
946
+ surface: str,
947
+ pronunciation: str,
948
+ accent_type: int,
949
+ word_uuid: str,
950
+ word_type: Optional[WordTypes] = None,
951
+ priority: Optional[conint(ge=MIN_PRIORITY, le=MAX_PRIORITY)] = None,
952
+ ):
953
+ """
954
+ ユーザー辞書に登録されている言葉を更新します。
955
+
956
+ Parameters
957
+ ----------
958
+ surface : str
959
+ 言葉の表層形
960
+ pronunciation: str
961
+ 言葉の発音(カタカナ)
962
+ accent_type: int
963
+ アクセント型(音が下がる場所を指す)
964
+ word_uuid: str
965
+ 更新する言葉のUUID
966
+ word_type: WordTypes, optional
967
+ PROPER_NOUN(固有名詞)、COMMON_NOUN(普通名詞)、VERB(動詞)、ADJECTIVE(形容詞)、SUFFIX(語尾)のいずれか
968
+ priority: int, optional
969
+ 単語の優先度(0から10までの整数)
970
+ 数字が大きいほど優先度が高くなる
971
+ 1から9までの値を指定することを推奨
972
+ """
973
+ try:
974
+ rewrite_word(
975
+ surface=surface,
976
+ pronunciation=pronunciation,
977
+ accent_type=accent_type,
978
+ word_uuid=word_uuid,
979
+ word_type=word_type,
980
+ priority=priority,
981
+ )
982
+ return Response(status_code=204)
983
+ except HTTPException:
984
+ raise
985
+ except ValidationError as e:
986
+ raise HTTPException(status_code=422, detail="パラメータに誤りがあります。\n" + str(e))
987
+ except Exception:
988
+ traceback.print_exc()
989
+ raise HTTPException(status_code=422, detail="ユーザー辞書の更新に失敗しました。")
990
+
991
+ @app.delete("/user_dict_word/{word_uuid}", status_code=204, tags=["ユーザー辞書"])
992
+ def delete_user_dict_word(word_uuid: str):
993
+ """
994
+ ユーザー辞書に登録されている言葉を削除します。
995
+
996
+ Parameters
997
+ ----------
998
+ word_uuid: str
999
+ 削除する言葉のUUID
1000
+ """
1001
+ try:
1002
+ delete_word(word_uuid=word_uuid)
1003
+ return Response(status_code=204)
1004
+ except HTTPException:
1005
+ raise
1006
+ except Exception:
1007
+ traceback.print_exc()
1008
+ raise HTTPException(status_code=422, detail="ユーザー辞書の更新に失敗しました。")
1009
+
1010
+ @app.post("/import_user_dict", status_code=204, tags=["ユーザー辞書"])
1011
+ def import_user_dict_words(
1012
+ import_dict_data: Dict[str, UserDictWord], override: bool
1013
+ ):
1014
+ """
1015
+ 他のユーザー辞書をインポートします。
1016
+
1017
+ Parameters
1018
+ ----------
1019
+ import_dict_data: Dict[str, UserDictWord]
1020
+ インポートするユーザー辞書のデータ
1021
+ override: bool
1022
+ 重複したエントリがあった場合、上書きするかどうか
1023
+ """
1024
+ try:
1025
+ import_user_dict(dict_data=import_dict_data, override=override)
1026
+ return Response(status_code=204)
1027
+ except Exception:
1028
+ traceback.print_exc()
1029
+ raise HTTPException(status_code=422, detail="ユーザー辞書のインポートに失敗しました。")
1030
+
1031
+ @app.get("/supported_devices", response_model=SupportedDevicesInfo, tags=["その他"])
1032
+ def supported_devices(
1033
+ core_version: Optional[str] = None,
1034
+ ):
1035
+ supported_devices = get_engine(core_version).supported_devices
1036
+ if supported_devices is None:
1037
+ raise HTTPException(status_code=422, detail="非対応の機能です。")
1038
+ return Response(
1039
+ content=supported_devices,
1040
+ media_type="application/json",
1041
+ )
1042
+
1043
+ @app.get("/engine_manifest", response_model=EngineManifest, tags=["その他"])
1044
+ def engine_manifest():
1045
+ return engine_manifest_loader.load_manifest()
1046
+
1047
+ @app.get("/setting", response_class=HTMLResponse, tags=["設定"])
1048
+ def setting_get(request: Request):
1049
+ settings = setting_loader.load_setting_file()
1050
+
1051
+ cors_policy_mode = settings.cors_policy_mode
1052
+ allow_origin = settings.allow_origin
1053
+
1054
+ if allow_origin is None:
1055
+ allow_origin = ""
1056
+
1057
+ return setting_ui_template.TemplateResponse(
1058
+ "ui.html",
1059
+ {
1060
+ "request": request,
1061
+ "cors_policy_mode": cors_policy_mode,
1062
+ "allow_origin": allow_origin,
1063
+ },
1064
+ )
1065
+
1066
+ @app.post("/setting", response_class=HTMLResponse, tags=["設定"])
1067
+ def setting_post(
1068
+ request: Request,
1069
+ cors_policy_mode: Optional[str] = Form(None), # noqa: B008
1070
+ allow_origin: Optional[str] = Form(None), # noqa: B008
1071
+ ):
1072
+ settings = Setting(
1073
+ cors_policy_mode=cors_policy_mode,
1074
+ allow_origin=allow_origin,
1075
+ )
1076
+
1077
+ # 更新した設定へ上書き
1078
+ setting_loader.dump_setting_file(settings)
1079
+
1080
+ if allow_origin is None:
1081
+ allow_origin = ""
1082
+
1083
+ return setting_ui_template.TemplateResponse(
1084
+ "ui.html",
1085
+ {
1086
+ "request": request,
1087
+ "cors_policy_mode": cors_policy_mode,
1088
+ "allow_origin": allow_origin,
1089
+ },
1090
+ )
1091
+
1092
+ return app
1093
+
1094
+
1095
+ if __name__ == "__main__":
1096
+ multiprocessing.freeze_support()
1097
+
1098
+ output_log_utf8 = os.getenv("VV_OUTPUT_LOG_UTF8", default="")
1099
+ if output_log_utf8 == "1":
1100
+ set_output_log_utf8()
1101
+ elif not (output_log_utf8 == "" or output_log_utf8 == "0"):
1102
+ print(
1103
+ "WARNING: invalid VV_OUTPUT_LOG_UTF8 environment variable value",
1104
+ file=sys.stderr,
1105
+ )
1106
+
1107
+ default_cors_policy_mode = CorsPolicyMode.localapps
1108
+
1109
+ parser = argparse.ArgumentParser(description="VOICEVOX のエンジンです。")
1110
+ parser.add_argument(
1111
+ "--host", type=str, default="127.0.0.1", help="接続を受け付けるホストアドレスです。"
1112
+ )
1113
+ parser.add_argument("--port", type=int, default=50021, help="接続を受け付けるポート番号です。")
1114
+ parser.add_argument(
1115
+ "--use_gpu", action="store_true", help="指定するとGPUを使って音声合成するようになります。"
1116
+ )
1117
+ parser.add_argument(
1118
+ "--voicevox_dir", type=Path, default=None, help="VOICEVOXのディレクトリパスです。"
1119
+ )
1120
+ parser.add_argument(
1121
+ "--voicelib_dir",
1122
+ type=Path,
1123
+ default=None,
1124
+ action="append",
1125
+ help="VOICEVOX COREのディレクトリパスです。",
1126
+ )
1127
+ parser.add_argument(
1128
+ "--runtime_dir",
1129
+ type=Path,
1130
+ default=None,
1131
+ action="append",
1132
+ help="VOICEVOX COREで使用するライブラリのディレクトリパスです。",
1133
+ )
1134
+ parser.add_argument(
1135
+ "--enable_mock",
1136
+ action="store_true",
1137
+ help="指定するとVOICEVOX COREを使わずモックで音声合成を行います。",
1138
+ )
1139
+ parser.add_argument(
1140
+ "--enable_cancellable_synthesis",
1141
+ action="store_true",
1142
+ help="指定すると音声合成を途中でキャンセルできるようになります。",
1143
+ )
1144
+ parser.add_argument("--init_processes", type=int, default=2)
1145
+ parser.add_argument(
1146
+ "--load_all_models", action="store_true", help="指定すると起動時に全ての音声合成モデルを読み込みます。"
1147
+ )
1148
+
1149
+ # 引数へcpu_num_threadsの指定がなければ、環境変数をロールします。
1150
+ # 環境変数にもない場合は、Noneのままとします。
1151
+ # VV_CPU_NUM_THREADSが空文字列でなく数値でもない場合、エラー終了します。
1152
+ parser.add_argument(
1153
+ "--cpu_num_threads",
1154
+ type=int,
1155
+ default=os.getenv("VV_CPU_NUM_THREADS") or None,
1156
+ help=(
1157
+ "音声合成を行うスレッド数です。指定しないと、代わりに環境変数VV_CPU_NUM_THREADSの値が使われます。"
1158
+ "VV_CPU_NUM_THREADSが空文字列でなく数値でもない場合はエラー終了します。"
1159
+ ),
1160
+ )
1161
+
1162
+ parser.add_argument(
1163
+ "--output_log_utf8",
1164
+ action="store_true",
1165
+ help=(
1166
+ "指定するとログ出力をUTF-8でおこないます。指定しないと、代わりに環境変数 VV_OUTPUT_LOG_UTF8 の値が使われます。"
1167
+ "VV_OUTPUT_LOG_UTF8 の値が1の場合はUTF-8で、0または空文字、値がない場合は環境によって自動的に決定されます。"
1168
+ ),
1169
+ )
1170
+
1171
+ parser.add_argument(
1172
+ "--cors_policy_mode",
1173
+ type=CorsPolicyMode,
1174
+ choices=list(CorsPolicyMode),
1175
+ default=None,
1176
+ help=(
1177
+ "CORSの許可モード。allまたはlocalappsが指定できます。allはすべてを許可します。"
1178
+ "localappsはオリジン間リソース共有ポリシーを、app://.とlocalhost関連に限定します。"
1179
+ "その他のオリジンはallow_originオプションで追加できます。デフォルトはlocalapps。"
1180
+ ),
1181
+ )
1182
+
1183
+ parser.add_argument(
1184
+ "--allow_origin", nargs="*", help="許可するオリジンを指定します。スペースで区切ることで複数指定できます。"
1185
+ )
1186
+
1187
+ parser.add_argument(
1188
+ "--setting_file", type=Path, default=USER_SETTING_PATH, help="設定ファイルを指定できます。"
1189
+ )
1190
+
1191
+ args = parser.parse_args()
1192
+
1193
+ if args.output_log_utf8:
1194
+ set_output_log_utf8()
1195
+
1196
+ cpu_num_threads: Optional[int] = args.cpu_num_threads
1197
+
1198
+ synthesis_engines = make_synthesis_engines(
1199
+ use_gpu=args.use_gpu,
1200
+ voicelib_dirs=args.voicelib_dir,
1201
+ voicevox_dir=args.voicevox_dir,
1202
+ runtime_dirs=args.runtime_dir,
1203
+ cpu_num_threads=cpu_num_threads,
1204
+ enable_mock=args.enable_mock,
1205
+ load_all_models=args.load_all_models,
1206
+ )
1207
+ assert len(synthesis_engines) != 0, "音声合成エンジンがありません。"
1208
+ latest_core_version = get_latest_core_version(versions=synthesis_engines.keys())
1209
+
1210
+ cancellable_engine = None
1211
+ if args.enable_cancellable_synthesis:
1212
+ cancellable_engine = CancellableEngine(args)
1213
+
1214
+ root_dir = args.voicevox_dir if args.voicevox_dir is not None else engine_root()
1215
+
1216
+ setting_loader = SettingLoader(args.setting_file)
1217
+
1218
+ settings = setting_loader.load_setting_file()
1219
+
1220
+ cors_policy_mode = (
1221
+ args.cors_policy_mode
1222
+ if args.cors_policy_mode is not None
1223
+ else settings.cors_policy_mode
1224
+ )
1225
+
1226
+ allow_origin = None
1227
+ if args.allow_origin is not None:
1228
+ allow_origin = args.allow_origin
1229
+ elif settings.allow_origin is not None:
1230
+ allow_origin = settings.allow_origin.split(" ")
1231
+
1232
+ uvicorn.run(
1233
+ generate_app(
1234
+ synthesis_engines,
1235
+ latest_core_version,
1236
+ setting_loader,
1237
+ root_dir=root_dir,
1238
+ cors_policy_mode=cors_policy_mode,
1239
+ allow_origin=allow_origin,
1240
+ ),
1241
+ host=args.host,
1242
+ port=args.port,
1243
+ )
run.spec ADDED
@@ -0,0 +1,85 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # -*- mode: python ; coding: utf-8 -*-
2
+ # このファイルはPyInstallerによって自動生成されたもので、それをカスタマイズして使用しています。
3
+ from PyInstaller.utils.hooks import collect_data_files
4
+ import os
5
+
6
+ datas = [
7
+ ('engine_manifest_assets', 'engine_manifest_assets'),
8
+ ('speaker_info', 'speaker_info'),
9
+ ('engine_manifest.json', '.'),
10
+ ('default.csv', '.'),
11
+ ('licenses.json', '.'),
12
+ ('presets.yaml', '.'),
13
+ ('default_setting.yml', '.'),
14
+ ('ui_template', 'ui_template'),
15
+ ('model', 'model'),
16
+ ]
17
+ datas += collect_data_files('pyopenjtalk')
18
+
19
+ # コアとONNX Runtimeはバイナリであるが、`binaries`に加えると
20
+ # 依存関係のパスがPyInstallerに書き換えらるので、`datas`に加える
21
+ # 参考: https://github.com/VOICEVOX/voicevox_engine/pull/446#issuecomment-1210052318
22
+ libcore_path = os.environ.get('LIBCORE_PATH')
23
+ if libcore_path:
24
+ print('LIBCORE_PATH is found:', libcore_path)
25
+ if not os.path.isfile(libcore_path):
26
+ raise Exception("LIBCORE_PATH was found, but it is not file!")
27
+ datas += [(libcore_path, ".")]
28
+
29
+ libonnxruntime_path = os.environ.get('LIBONNXRUNTIME_PATH')
30
+ if libonnxruntime_path:
31
+ print('LIBONNXRUNTIME_PATH is found:', libonnxruntime_path)
32
+ if not os.path.isfile(libonnxruntime_path):
33
+ raise Exception("LIBCORE_PATH was found, but it is not file!")
34
+ datas += [(libonnxruntime_path, ".")]
35
+
36
+
37
+ block_cipher = None
38
+
39
+
40
+ a = Analysis(
41
+ ['run.py'],
42
+ pathex=[],
43
+ binaries=[],
44
+ datas=datas,
45
+ hiddenimports=[],
46
+ hookspath=[],
47
+ hooksconfig={},
48
+ runtime_hooks=[],
49
+ excludes=[],
50
+ win_no_prefer_redirects=False,
51
+ win_private_assemblies=False,
52
+ cipher=block_cipher,
53
+ noarchive=False,
54
+ )
55
+
56
+ pyz = PYZ(a.pure, a.zipped_data, cipher=block_cipher)
57
+
58
+ exe = EXE(
59
+ pyz,
60
+ a.scripts,
61
+ [],
62
+ exclude_binaries=True,
63
+ name='run',
64
+ debug=False,
65
+ bootloader_ignore_signals=False,
66
+ strip=False,
67
+ upx=True,
68
+ console=True,
69
+ disable_windowed_traceback=False,
70
+ argv_emulation=False,
71
+ target_arch=None,
72
+ codesign_identity=None,
73
+ entitlements_file=None,
74
+ )
75
+
76
+ coll = COLLECT(
77
+ exe,
78
+ a.binaries,
79
+ a.zipfiles,
80
+ a.datas,
81
+ strip=False,
82
+ upx=True,
83
+ upx_exclude=[],
84
+ name='run',
85
+ )
setup.cfg ADDED
@@ -0,0 +1,36 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ [flake8]
2
+ # automatically generated by pysen
3
+ # pysen ignores and overwrites any modifications
4
+ # e203: black treats : as a binary operator
5
+ # e231: black doesn't put a space after ,
6
+ # e501: black may exceed the line-length to follow other style rules
7
+ # w503 or w504: either one needs to be disabled to select w error codes
8
+ ignore = E203,E231,E501,W503
9
+ max-line-length = 88
10
+ select = B,B950,C,E,F,W
11
+
12
+ [mypy]
13
+ # automatically generated by pysen
14
+ # pysen ignores and overwrites any modifications
15
+ check_untyped_defs = True
16
+ disallow_any_decorated = False
17
+ disallow_any_generics = False
18
+ disallow_any_unimported = False
19
+ disallow_incomplete_defs = True
20
+ disallow_subclassing_any = True
21
+ disallow_untyped_calls = False
22
+ disallow_untyped_decorators = False
23
+ disallow_untyped_defs = False
24
+ ignore_errors = False
25
+ ignore_missing_imports = True
26
+ no_implicit_optional = True
27
+ python_version = 3.10
28
+ show_error_codes = True
29
+ strict_equality = True
30
+ strict_optional = True
31
+ warn_redundant_casts = True
32
+ warn_return_any = False
33
+ warn_unreachable = True
34
+ warn_unused_configs = True
35
+ warn_unused_ignores = False
36
+
speaker_info/35b2c544-660e-401e-b503-0e14c635303a/icons/8.png ADDED
speaker_info/35b2c544-660e-401e-b503-0e14c635303a/metas.json ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ {
2
+ "supported_features": { "permitted_synthesis_morphing": "NOTHING" }
3
+ }
speaker_info/35b2c544-660e-401e-b503-0e14c635303a/policy.md ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ dummy3 policy
2
+
3
+ https://voicevox.hiroshiba.jp/
speaker_info/35b2c544-660e-401e-b503-0e14c635303a/portrait.png ADDED
speaker_info/35b2c544-660e-401e-b503-0e14c635303a/portraits/8.png ADDED
speaker_info/35b2c544-660e-401e-b503-0e14c635303a/voice_samples/8_001.wav ADDED
Binary file (153 kB). View file
 
speaker_info/35b2c544-660e-401e-b503-0e14c635303a/voice_samples/8_002.wav ADDED
Binary file (206 kB). View file
 
speaker_info/35b2c544-660e-401e-b503-0e14c635303a/voice_samples/8_003.wav ADDED
Binary file (168 kB). View file