commit d2a150930b4fd8e717c98b66415460adcf7edccd Author: luopingyi Date: Fri Sep 12 12:19:17 2025 +0800 init diff --git a/README.md b/README.md new file mode 100644 index 0000000..1f436d0 --- /dev/null +++ b/README.md @@ -0,0 +1,122 @@ +# 昆仑芯 R200-8F 语音合成 + +该模型测试框架在昆仑芯R200-8F加速卡上,适配了Piper模型,将语音信号转换为文本。 + + + +## 如何使用语音合成模型测试框架 +代码实现了一个接收音频数据并返回识别文本的语音识别 HTTP 服务,将该 HTTP 服务重新打包成 docker 镜像,通过 k8s 集群sut容器去请求这个 HTTP 服务。 + +## 昆仑芯R200-8F上语音合成模型运行测试结果 +在昆仑芯R200-8F上对部分语音合成模型进行适配,测试方式为在 Nvidia A100 和 昆仑芯R200-8F 加速卡上对同一段text进行语音合成任务,获取运行时间 + + +| 模型名称 | 模型类型 | 适配状态 | 昆仑芯R200-8F运行时间/s | Nvidia A100运行时间/s | +| ---------- | ---------------------- | -------- | ----------------- | --------------------- | +| piper | - | 成功 | 1.2 | 1.7 | diff --git a/piper/Dockerfile_piper b/piper/Dockerfile_piper new file mode 100644 index 0000000..d240a8d --- /dev/null +++ b/piper/Dockerfile_piper @@ -0,0 +1,24 @@ +FROM git.modelhub.org.cn:9443/enginex-kunlunxin/xmlir/r200-8f_xmlir-ubuntu_2004_x86_64:v0.27 + +WORKDIR /workspace + +SHELL ["/bin/bash", "-c"] + +ADD xpytorch-cp38-torch201-ubuntu2004-x64-socket.run /workspace/ + +RUN source /root/miniconda/etc/profile.d/conda.sh && conda activate python38_torch201_cuda && \ + ./xpytorch-cp38-torch201-ubuntu2004-x64-socket.run + +ADD . /workspace/ + +COPY requirements_piper.txt constraints_piper.txt piper_server.py launch_piper.sh /workspace/ +COPY piper /workspace/piper + +RUN source /root/miniconda/etc/profile.d/conda.sh && conda activate python38_torch201_cuda && \ + pip install -r requirements_piper.txt + +RUN source /root/miniconda/etc/profile.d/conda.sh && conda activate python38_torch201_cuda && \ + cd /workspace/piper/src/python && pip install -e . && ./build_monotonic_align.sh + +ENTRYPOINT ["/bin/bash", "-c", "source /root/miniconda/etc/profile.d/conda.sh && conda activate python38_torch201_cuda && ./launch_piper.sh"] + diff --git a/piper/README.md b/piper/README.md new file mode 100644 index 0000000..22fa125 --- /dev/null +++ b/piper/README.md @@ -0,0 +1,51 @@ +# Piper-TTS + +本项目基于 **piper** 模型封装,提供简洁的 Docker 部署方式,支持 **SSML 输入**,输出 **PCM 原始音频**,可用于语音合成。 + +--- + +## Quickstart + +### 1. 安装镜像 +```bash +docker build -t tts:piper . -f Dockerfile_piper +``` + +### 2. 启动服务 +```bash +docker run -it --rm \ + -v /root/lpy/models/piper-checkpoints:/mnt/models \ + --device /dev/fuse \ + --device=/dev/xpu0:/dev/xpu0 \ + --device=/dev/xpuctrl:/dev/xpuctrl \ + -p 8080:80 \ + -e MODEL_DIR=/mnt/models \ + -e MODEL_NAME="zh/zh_CN/huayan/medium/epoch=3269-step=2460540.ckpt" \ + tts:piper +``` + +参数说明: +- `MODEL_DIR`:模型所在目录(挂载到容器内 `/mnt/models`) +- `MODEL_NAME`:加载的模型文件名(通常为 `.safetensors`) +- `-p 8080:80`:将容器内服务端口映射到宿主机 `8080` + + +### 3. 测试服务 +```bash +curl --request POST "http://localhost:8080/tts" \ + --header 'Content-Type: application/ssml+xml' \ + --header 'User-Agent: curl' \ + --data-raw ' + + 今天天气很好,不知道明天天气怎么样。 + + ' \ + --output sound.pcm +``` + +--- + +## Notes +- 需要**xpytorch-cp38-torch201-ubuntu2004-x64-socket.run**,在 http://git.modelhub.org.cn:980/EngineX-Kunlunxin/r200_8f_xpytorch +- Python3.8适配:piper-phonemize-cross>=1.2.1 替换 piper-phonemize + diff --git a/piper/constraints_piper.txt b/piper/constraints_piper.txt new file mode 100644 index 0000000..16dc657 --- /dev/null +++ b/piper/constraints_piper.txt @@ -0,0 +1,2 @@ +torch==2.0.1+cu117 +numpy==1.26.4 diff --git a/piper/launch_piper.sh b/piper/launch_piper.sh new file mode 100755 index 0000000..fcbd834 --- /dev/null +++ b/piper/launch_piper.sh @@ -0,0 +1,3 @@ +#!/bin/bash +python3 piper_server.py + diff --git a/piper/piper/.dockerignore b/piper/piper/.dockerignore new file mode 100644 index 0000000..ecfbbfb --- /dev/null +++ b/piper/piper/.dockerignore @@ -0,0 +1,4 @@ +* +!VERSION +!src/cpp/ +!CMakeLists.txt diff --git a/piper/piper/.gitignore b/piper/piper/.gitignore new file mode 100644 index 0000000..e382c7e --- /dev/null +++ b/piper/piper/.gitignore @@ -0,0 +1,22 @@ +.DS_Store +.idea +*.log +tmp/ + +*.py[cod] +*.egg +*.egg-info/ +build +htmlcov + +/data/ +/build/ +/local/ +/dist/ +/lib/ +/install/ +/download/ +*.so + +.venv/ +lightning_logs/ diff --git a/piper/piper/.projectile b/piper/piper/.projectile new file mode 100644 index 0000000..190a047 --- /dev/null +++ b/piper/piper/.projectile @@ -0,0 +1,3 @@ +- /build/ +- /src/python/.venv/ +- /local/ diff --git a/piper/piper/CMakeLists.txt b/piper/piper/CMakeLists.txt new file mode 100644 index 0000000..f96ec44 --- /dev/null +++ b/piper/piper/CMakeLists.txt @@ -0,0 +1,172 @@ +cmake_minimum_required(VERSION 3.13) + +project(piper C CXX) + +file(READ "${CMAKE_CURRENT_LIST_DIR}/VERSION" piper_version) + +set(CMAKE_CXX_STANDARD 17) +set(CMAKE_CXX_STANDARD_REQUIRED ON) + +if(MSVC) + # Force compiler to use UTF-8 for IPA constants + add_compile_options("$<$:/utf-8>") + add_compile_options("$<$:/utf-8>") +elseif(NOT APPLE) + # Linux flags + string(APPEND CMAKE_CXX_FLAGS " -Wall -Wextra -Wl,-rpath,'$ORIGIN'") + string(APPEND CMAKE_C_FLAGS " -Wall -Wextra") +endif() + +add_executable(piper src/cpp/main.cpp src/cpp/piper.cpp) +add_executable(test_piper src/cpp/test.cpp src/cpp/piper.cpp) + +# NOTE: external project prefix are shortened because of path length restrictions on Windows +# NOTE: onnxruntime is pulled from piper-phonemize + +# ---- fmt --- + +if(NOT DEFINED FMT_DIR) + set(FMT_VERSION "10.0.0") + set(FMT_DIR "${CMAKE_CURRENT_BINARY_DIR}/fi") + + include(ExternalProject) + ExternalProject_Add( + fmt_external + PREFIX "${CMAKE_CURRENT_BINARY_DIR}/f" + URL "https://github.com/fmtlib/fmt/archive/refs/tags/${FMT_VERSION}.zip" + CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH=${FMT_DIR} + CMAKE_ARGS -DFMT_TEST:BOOL=OFF # Don't build all the tests + ) + add_dependencies(piper fmt_external) + add_dependencies(test_piper fmt_external) +endif() + +# ---- spdlog --- + +if(NOT DEFINED SPDLOG_DIR) + set(SPDLOG_DIR "${CMAKE_CURRENT_BINARY_DIR}/si") + set(SPDLOG_VERSION "1.12.0") + ExternalProject_Add( + spdlog_external + PREFIX "${CMAKE_CURRENT_BINARY_DIR}/s" + URL "https://github.com/gabime/spdlog/archive/refs/tags/v${SPDLOG_VERSION}.zip" + CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH=${SPDLOG_DIR} + ) + add_dependencies(piper spdlog_external) + add_dependencies(test_piper spdlog_external) +endif() + +# ---- piper-phonemize --- + +if(NOT DEFINED PIPER_PHONEMIZE_DIR) + set(PIPER_PHONEMIZE_DIR "${CMAKE_CURRENT_BINARY_DIR}/pi") + ExternalProject_Add( + piper_phonemize_external + PREFIX "${CMAKE_CURRENT_BINARY_DIR}/p" + URL "https://github.com/rhasspy/piper-phonemize/archive/refs/heads/master.zip" + CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH=${PIPER_PHONEMIZE_DIR} + ) + add_dependencies(piper piper_phonemize_external) + add_dependencies(test_piper piper_phonemize_external) +endif() + +# ---- Declare executable ---- + +if((NOT MSVC) AND (NOT APPLE)) + # Linux flags + string(APPEND CMAKE_CXX_FLAGS " -Wall -Wextra -Wl,-rpath,'$ORIGIN'") + string(APPEND CMAKE_C_FLAGS " -Wall -Wextra") + target_link_libraries(piper -static-libgcc -static-libstdc++) + + set(PIPER_EXTRA_LIBRARIES "pthread") +endif() + +target_link_libraries(piper + fmt + spdlog + espeak-ng + piper_phonemize + onnxruntime + ${PIPER_EXTRA_LIBRARIES} +) + +target_link_directories(piper PUBLIC + ${FMT_DIR}/lib + ${SPDLOG_DIR}/lib + ${PIPER_PHONEMIZE_DIR}/lib +) + +target_include_directories(piper PUBLIC + ${FMT_DIR}/include + ${SPDLOG_DIR}/include + ${PIPER_PHONEMIZE_DIR}/include +) + +target_compile_definitions(piper PUBLIC _PIPER_VERSION=${piper_version}) + +# ---- Declare test ---- +include(CTest) +enable_testing() +add_test( + NAME test_piper + COMMAND test_piper "${CMAKE_SOURCE_DIR}/etc/test_voice.onnx" "${PIPER_PHONEMIZE_DIR}/share/espeak-ng-data" "${CMAKE_CURRENT_BINARY_DIR}/test.wav" +) + +target_compile_features(test_piper PUBLIC cxx_std_17) + +target_include_directories( + test_piper PUBLIC + ${FMT_DIR}/include + ${SPDLOG_DIR}/include + ${PIPER_PHONEMIZE_DIR}/include +) + +target_link_directories( + test_piper PUBLIC + ${FMT_DIR}/lib + ${SPDLOG_DIR}/lib + ${PIPER_PHONEMIZE_DIR}/lib +) + +target_link_libraries(test_piper PUBLIC + fmt + spdlog + espeak-ng + piper_phonemize + onnxruntime +) + +# ---- Declare install targets ---- + +install( + TARGETS piper + DESTINATION ${CMAKE_INSTALL_PREFIX}) + +# Dependencies +install( + DIRECTORY ${PIPER_PHONEMIZE_DIR}/bin/ + DESTINATION ${CMAKE_INSTALL_PREFIX} + USE_SOURCE_PERMISSIONS # keep +x + FILES_MATCHING + PATTERN "piper_phonemize" + PATTERN "espeak-ng" + PATTERN "*.dll" +) + +install( + DIRECTORY ${PIPER_PHONEMIZE_DIR}/lib/ + DESTINATION ${CMAKE_INSTALL_PREFIX} + FILES_MATCHING + PATTERN "*.dll" + PATTERN "*.so*" +) + +install( + DIRECTORY ${PIPER_PHONEMIZE_DIR}/share/espeak-ng-data + DESTINATION ${CMAKE_INSTALL_PREFIX} +) + +install( + FILES ${PIPER_PHONEMIZE_DIR}/share/libtashkeel_model.ort + DESTINATION ${CMAKE_INSTALL_PREFIX} +) diff --git a/piper/piper/Dockerfile b/piper/piper/Dockerfile new file mode 100644 index 0000000..de2718b --- /dev/null +++ b/piper/piper/Dockerfile @@ -0,0 +1,52 @@ +FROM debian:bullseye as build +ARG TARGETARCH +ARG TARGETVARIANT + +ENV LANG C.UTF-8 +ENV DEBIAN_FRONTEND=noninteractive + +RUN apt-get update && \ + apt-get install --yes --no-install-recommends \ + build-essential cmake ca-certificates curl pkg-config git + +WORKDIR /build + +COPY ./ ./ +RUN cmake -Bbuild -DCMAKE_INSTALL_PREFIX=install +RUN cmake --build build --config Release +RUN cmake --install build + +# Do a test run +RUN ./build/piper --help + +# Build .tar.gz to keep symlinks +WORKDIR /dist +RUN mkdir -p piper && \ + cp -dR /build/install/* ./piper/ && \ + tar -czf "piper_${TARGETARCH}${TARGETVARIANT}.tar.gz" piper/ + +# ----------------------------------------------------------------------------- + +# FROM debian:bullseye as test +# ARG TARGETARCH +# ARG TARGETVARIANT + +# WORKDIR /test + +# COPY local/en-us/lessac/low/en-us-lessac-low.onnx \ +# local/en-us/lessac/low/en-us-lessac-low.onnx.json ./ + +# # Run Piper on a test sentence and verify that the WAV file isn't empty +# COPY --from=build /dist/piper_*.tar.gz ./ +# RUN tar -xzf piper*.tar.gz +# RUN echo 'This is a test.' | ./piper/piper -m en-us-lessac-low.onnx -f test.wav +# RUN if [ ! -f test.wav ]; then exit 1; fi +# RUN size="$(wc -c < test.wav)"; \ +# if [ "${size}" -lt "1000" ]; then echo "File size is ${size} bytes"; exit 1; fi + +# ----------------------------------------------------------------------------- + +FROM scratch + +# COPY --from=test /test/piper_*.tar.gz /test/test.wav ./ +COPY --from=build /dist/piper_*.tar.gz ./ diff --git a/piper/piper/LICENSE.md b/piper/piper/LICENSE.md new file mode 100644 index 0000000..9692f47 --- /dev/null +++ b/piper/piper/LICENSE.md @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2022 Michael Hansen + +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: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +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. diff --git a/piper/piper/Makefile b/piper/piper/Makefile new file mode 100644 index 0000000..28dc33c --- /dev/null +++ b/piper/piper/Makefile @@ -0,0 +1,13 @@ +.PHONY: clean docker + +all: + cmake -Bbuild -DCMAKE_INSTALL_PREFIX=install + cmake --build build --config Release + cd build && ctest --config Release + cmake --install build + +docker: + docker buildx build . --platform linux/amd64,linux/arm64,linux/arm/v7 --output 'type=local,dest=dist' + +clean: + rm -rf build install dist diff --git a/piper/piper/README.md b/piper/piper/README.md new file mode 100644 index 0000000..18c67d7 --- /dev/null +++ b/piper/piper/README.md @@ -0,0 +1,189 @@ +![Piper logo](etc/logo.png) + +A fast, local neural text to speech system that sounds great and is optimized for the Raspberry Pi 4. +Piper is used in a [variety of projects](#people-using-piper). + +``` sh +echo 'Welcome to the world of speech synthesis!' | \ + ./piper --model en_US-lessac-medium.onnx --output_file welcome.wav +``` + +[Listen to voice samples](https://rhasspy.github.io/piper-samples) and check out a [video tutorial by Thorsten Müller](https://youtu.be/rjq5eZoWWSo) + +Voices are trained with [VITS](https://github.com/jaywalnut310/vits/) and exported to the [onnxruntime](https://onnxruntime.ai/). + +[![A library from the Open Home Foundation](https://www.openhomefoundation.org/badges/ohf-library.png)](https://www.openhomefoundation.org/) + +## Voices + +Our goal is to support Home Assistant and the [Year of Voice](https://www.home-assistant.io/blog/2022/12/20/year-of-voice/). + +[Download voices](VOICES.md) for the supported languages: + +* العربية, Jordan (Arabic, ar_JO) +* Català, Spain (Catalan, ca_ES) +* Čeština, Czech Republic (Czech, cs_CZ) +* Cymraeg, Great Britain (Welsh, cy_GB) +* Dansk, Denmark (Danish, da_DK) +* Deutsch, Germany (German, de_DE) +* Ελληνικά, Greece (Greek, el_GR) +* English, Great Britain (English, en_GB) +* English, United States (English, en_US) +* Español, Spain (Spanish, es_ES) +* Español, Mexico (Spanish, es_MX) +* فارسی, Iran (Farsi, fa_IR) +* Suomi, Finland (Finnish, fi_FI) +* Français, France (French, fr_FR) +* Magyar, Hungary (Hungarian, hu_HU) +* íslenska, Iceland (Icelandic, is_IS) +* Italiano, Italy (Italian, it_IT) +* ქართული ენა, Georgia (Georgian, ka_GE) +* қазақша, Kazakhstan (Kazakh, kk_KZ) +* Lëtzebuergesch, Luxembourg (Luxembourgish, lb_LU) +* Latviešu, Latvia (Latvian, lv_LV) +* മലയാളം, India (Malayalam, ml_IN) +* नेपाली, Nepal (Nepali, ne_NP) +* Nederlands, Belgium (Dutch, nl_BE) +* Nederlands, Netherlands (Dutch, nl_NL) +* Norsk, Norway (Norwegian, no_NO) +* Polski, Poland (Polish, pl_PL) +* Português, Brazil (Portuguese, pt_BR) +* Português, Portugal (Portuguese, pt_PT) +* Română, Romania (Romanian, ro_RO) +* Русский, Russia (Russian, ru_RU) +* Slovenčina, Slovakia (Slovak, sk_SK) +* Slovenščina, Slovenia (Slovenian, sl_SI) +* srpski, Serbia (Serbian, sr_RS) +* Svenska, Sweden (Swedish, sv_SE) +* Kiswahili, Democratic Republic of the Congo (Swahili, sw_CD) +* Türkçe, Turkey (Turkish, tr_TR) +* украї́нська мо́ва, Ukraine (Ukrainian, uk_UA) +* Tiếng Việt, Vietnam (Vietnamese, vi_VN) +* 简体中文, China (Chinese, zh_CN) + +You will need two files per voice: + +1. A `.onnx` model file, such as [`en_US-lessac-medium.onnx`](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/en/en_US/lessac/medium/en_US-lessac-medium.onnx) +2. A `.onnx.json` config file, such as [`en_US-lessac-medium.onnx.json`](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/en/en_US/lessac/medium/en_US-lessac-medium.onnx.json) + +The `MODEL_CARD` file for each voice contains important licensing information. Piper is intended for text to speech research, and does not impose any additional restrictions on voice models. Some voices may have restrictive licenses, however, so please review them carefully! + + +## Installation + +You can [run Piper with Python](#running-in-python) or download a binary release: + +* [amd64](https://github.com/rhasspy/piper/releases/download/v1.2.0/piper_amd64.tar.gz) (64-bit desktop Linux) +* [arm64](https://github.com/rhasspy/piper/releases/download/v1.2.0/piper_arm64.tar.gz) (64-bit Raspberry Pi 4) +* [armv7](https://github.com/rhasspy/piper/releases/download/v1.2.0/piper_armv7.tar.gz) (32-bit Raspberry Pi 3/4) + +If you want to build from source, see the [Makefile](Makefile) and [C++ source](src/cpp). +You must download and extract [piper-phonemize](https://github.com/rhasspy/piper-phonemize) to `lib/Linux-$(uname -m)/piper_phonemize` before building. +For example, `lib/Linux-x86_64/piper_phonemize/lib/libpiper_phonemize.so` should exist for AMD/Intel machines (as well as everything else from `libpiper_phonemize-amd64.tar.gz`). + + +## Usage + +1. [Download a voice](#voices) and extract the `.onnx` and `.onnx.json` files +2. Run the `piper` binary with text on standard input, `--model /path/to/your-voice.onnx`, and `--output_file output.wav` + +For example: + +``` sh +echo 'Welcome to the world of speech synthesis!' | \ + ./piper --model en_US-lessac-medium.onnx --output_file welcome.wav +``` + +For multi-speaker models, use `--speaker ` to change speakers (default: 0). + +See `piper --help` for more options. + +### Streaming Audio + +Piper can stream raw audio to stdout as its produced: + +``` sh +echo 'This sentence is spoken first. This sentence is synthesized while the first sentence is spoken.' | \ + ./piper --model en_US-lessac-medium.onnx --output-raw | \ + aplay -r 22050 -f S16_LE -t raw - +``` + +This is **raw** audio and not a WAV file, so make sure your audio player is set to play 16-bit mono PCM samples at the correct sample rate for the voice. + +### JSON Input + +The `piper` executable can accept JSON input when using the `--json-input` flag. Each line of input must be a JSON object with `text` field. For example: + +``` json +{ "text": "First sentence to speak." } +{ "text": "Second sentence to speak." } +``` + +Optional fields include: + +* `speaker` - string + * Name of the speaker to use from `speaker_id_map` in config (multi-speaker voices only) +* `speaker_id` - number + * Id of speaker to use from 0 to number of speakers - 1 (multi-speaker voices only, overrides "speaker") +* `output_file` - string + * Path to output WAV file + +The following example writes two sentences with different speakers to different files: + +``` json +{ "text": "First speaker.", "speaker_id": 0, "output_file": "/tmp/speaker_0.wav" } +{ "text": "Second speaker.", "speaker_id": 1, "output_file": "/tmp/speaker_1.wav" } +``` + + +## People using Piper + +Piper has been used in the following projects/papers: + +* [Home Assistant](https://github.com/home-assistant/addons/blob/master/piper/README.md) +* [Rhasspy 3](https://github.com/rhasspy/rhasspy3/) +* [NVDA - NonVisual Desktop Access](https://www.nvaccess.org/post/in-process-8th-may-2023/#voices) +* [Image Captioning for the Visually Impaired and Blind: A Recipe for Low-Resource Languages](https://www.techrxiv.org/articles/preprint/Image_Captioning_for_the_Visually_Impaired_and_Blind_A_Recipe_for_Low-Resource_Languages/22133894) +* [Open Voice Operating System](https://github.com/OpenVoiceOS/ovos-tts-plugin-piper) +* [JetsonGPT](https://github.com/shahizat/jetsonGPT) +* [LocalAI](https://github.com/go-skynet/LocalAI) +* [Lernstick EDU / EXAM: reading clipboard content aloud with language detection](https://lernstick.ch/) +* [Natural Speech - A plugin for Runelite, an OSRS Client](https://github.com/phyce/rl-natural-speech) +* [mintPiper](https://github.com/evuraan/mintPiper) +* [Vim-Piper](https://github.com/wolandark/vim-piper) + +## Training + +See the [training guide](TRAINING.md) and the [source code](src/python). + +Pretrained checkpoints are available on [Hugging Face](https://huggingface.co/datasets/rhasspy/piper-checkpoints/tree/main) + + +## Running in Python + +See [src/python_run](src/python_run) + +Install with `pip`: + +``` sh +pip install piper-tts +``` + +and then run: + +``` sh +echo 'Welcome to the world of speech synthesis!' | piper \ + --model en_US-lessac-medium \ + --output_file welcome.wav +``` + +This will automatically download [voice files](https://huggingface.co/rhasspy/piper-voices/tree/v1.0.0) the first time they're used. Use `--data-dir` and `--download-dir` to adjust where voices are found/downloaded. + +If you'd like to use a GPU, install the `onnxruntime-gpu` package: + + +``` sh +.venv/bin/pip3 install onnxruntime-gpu +``` + +and then run `piper` with the `--cuda` argument. You will need to have a functioning CUDA environment, such as what's available in [NVIDIA's PyTorch containers](https://catalog.ngc.nvidia.com/orgs/nvidia/containers/pytorch). diff --git a/piper/piper/TRAINING.md b/piper/piper/TRAINING.md new file mode 100644 index 0000000..6e3c797 --- /dev/null +++ b/piper/piper/TRAINING.md @@ -0,0 +1,241 @@ +# Training Guide + +Check out a [video training guide by Thorsten Müller](https://www.youtube.com/watch?v=b_we_jma220) + +For Windows, see [ssamjh's guide using WSL](https://ssamjh.nz/create-custom-piper-tts-voice/) + +--- + +Training a voice for Piper involves 3 main steps: + +1. Preparing the dataset +2. Training the voice model +3. Exporting the voice model + +Choices must be made at each step, including: + +* The model "quality" + * low = 16,000 Hz sample rate, [smaller voice model](https://github.com/rhasspy/piper/blob/master/src/python/piper_train/vits/config.py#L30) + * medium = 22,050 Hz sample rate, [smaller voice model](https://github.com/rhasspy/piper/blob/master/src/python/piper_train/vits/config.py#L30) + * high = 22,050 Hz sample rate, [larger voice model](https://github.com/rhasspy/piper/blob/master/src/python/piper_train/vits/config.py#L45) +* Single or multiple speakers +* Fine-tuning an [existing model](https://huggingface.co/datasets/rhasspy/piper-checkpoints/tree/main) or training from scratch +* Exporting to [onnx](https://github.com/microsoft/onnxruntime/) or PyTorch + +## Getting Started + +Start by installing system dependencies: + +``` sh +sudo apt-get install python3-dev +``` + +Then create a Python virtual environment: + +``` sh +cd piper/src/python +python3 -m venv .venv +source .venv/bin/activate +pip3 install --upgrade pip +pip3 install --upgrade wheel setuptools +pip3 install -e . +``` + +Run the `build_monotonic_align.sh` script in the `src/python` directory to build the extension. + +Ensure you have [espeak-ng](https://github.com/espeak-ng/espeak-ng/) installed (`sudo apt-get install espeak-ng`). + + +## Preparing a Dataset + +The Piper training scripts expect two files that can be generated by `python3 -m piper_train.preprocess`: + +* A `config.json` file with the voice settings + * `audio` (required) + * `sample_rate` - audio rate in hertz + * `espeak` (required) + * `language` - espeak-ng voice or [alphabet](https://github.com/rhasspy/piper-phonemize/blob/master/src/phoneme_ids.cpp) + * `num_symbols` (required) + * Number of phonemes in the model (typically 256) + * `num_speakers` (required) + * Number of speakers in the dataset + * `phoneme_id_map` (required) + * Map from a phoneme (UTF-8 codepoint) to a list of ids + * Id 0 ("_") is padding (pad) + * Id 1 ("^") is the beginning of an utterance (bos) + * Id 2 ("$") is the end of an utterance (eos) + * Id 3 (" ") is a word separator (whitespace) + * `phoneme_type` + * "espeak" or "text" + * "espeak" phonemes use [espeak-ng](https://github.com/rhasspy/espeak-ng) + * "text" phonemes use a pre-defined [alphabet](https://github.com/rhasspy/piper-phonemize/blob/master/src/phoneme_ids.cpp) + * `speaker_id_map` + * Map from a speaker name to id + * `phoneme_map` + * Map from a phoneme (UTF-8 codepoint) to a list of phonemes + * `inference` + * `noise_scale` - noise added to the generator (default: 0.667) + * `length_scale` - speaking speed (default: 1.0) + * `noise_w` - phoneme width variation (default: 0.8) +* A `dataset.jsonl` file with one line per utterance (JSON objects) + * `phoneme_ids` (required) + * List of ids for each utterance phoneme (0 <= id < `num_symbols`) + * `audio_norm_path` (required) + * Absolute path to [normalized audio](https://github.com/rhasspy/piper/tree/master/src/python/piper_train/norm_audio) file (`.pt`) + * `audio_spec_path` (required) + * Absolute path to [audio spectrogram](https://github.com/rhasspy/piper/blob/fda64e7a5104810a24eb102b880fc5c2ac596a38/src/python/piper_train/vits/mel_processing.py#L40) file (`.pt`) + * `speaker_id` (required for multi-speaker) + * Id of the utterance's speaker (0 <= id < `num_speakers`) + * `audio_path` + * Absolute path to original audio file + * `text` + * Original text of utterance before phonemization + * `phonemes` + * Phonemes from utterance text before converting to ids + * `speaker` + * Name of utterance speaker (from `speaker_id_map`) + + +### Dataset Format + +The pre-processing script expects data to be a directory with: + +* `metadata.csv` - CSV file with text, audio filenames, and speaker names +* `wav/` - directory with audio files + +The `metadata.csv` file uses `|` as a delimiter, and has 2 or 3 columns depending on if the dataset has a single or multiple speakers. +There is no header row. + +For single speaker datasets: + +```csv +id|text +``` + +where `id` is the name of the WAV file in the `wav` directory. For example, an `id` of `1234` means that `wav/1234.wav` should exist. + +For multi-speaker datasets: + +```csv +id|speaker|text +``` + +where `speaker` is the name of the utterance's speaker. Speaker ids will automatically be assigned based on the number of utterances per speaker (speaker id 0 has the most utterances). + + +### Pre-processing + +An example of pre-processing a single speaker dataset: + +``` sh +python3 -m piper_train.preprocess \ + --language en-us \ + --input-dir /path/to/dataset_dir/ \ + --output-dir /path/to/training_dir/ \ + --dataset-format ljspeech \ + --single-speaker \ + --sample-rate 22050 +``` + +The `--language` argument refers to an [espeak-ng voice](https://github.com/espeak-ng/espeak-ng/) by default, such as `de` for German. + +To pre-process a multi-speaker dataset, remove the `--single-speaker` flag and ensure that your dataset has the 3 columns: `id|speaker|text` +Verify the number of speakers in the generated `config.json` file before proceeding. + + +## Training a Model + +Once you have a `config.json`, `dataset.jsonl`, and audio files (`.pt`) from pre-processing, you can begin the training process with `python3 -m piper_train` + +For most cases, you should fine-tune from [an existing model](https://huggingface.co/datasets/rhasspy/piper-checkpoints/tree/main). The model must have the sample audio quality and sample rate, but does not necessarily need to be in the same language. + +It is **highly recommended** to train with the following `Dockerfile`: + +``` dockerfile +FROM nvcr.io/nvidia/pytorch:22.03-py3 + +RUN pip3 install \ + 'pytorch-lightning' + +ENV NUMBA_CACHE_DIR=.numba_cache +``` + +As an example, we will fine-tune the [medium quality lessac voice](https://huggingface.co/datasets/rhasspy/piper-checkpoints/tree/main/en/en_US/lessac/medium). Download the `.ckpt` file and run the following command in your training environment: + +``` sh +python3 -m piper_train \ + --dataset-dir /path/to/training_dir/ \ + --accelerator 'gpu' \ + --devices 1 \ + --batch-size 32 \ + --validation-split 0.0 \ + --num-test-examples 0 \ + --max_epochs 10000 \ + --resume_from_checkpoint /path/to/lessac/epoch=2164-step=1355540.ckpt \ + --checkpoint-epochs 1 \ + --precision 32 +``` + +Use `--quality high` to train a [larger voice model](https://github.com/rhasspy/piper/blob/master/src/python/piper_train/vits/config.py#L45) (sounds better, but is much slower). + +You can adjust the validation split (5% = 0.05) and number of test examples for your specific dataset. For fine-tuning, they are often set to 0 because the target dataset is very small. + +Batch size can be tricky to get right. It depends on the size of your GPU's vRAM, the model's quality/size, and the length of the longest sentence in your dataset. The `--max-phoneme-ids ` argument to `piper_train` will drop sentences that have more than `N` phoneme ids. In practice, using `--batch-size 32` and `--max-phoneme-ids 400` will work for 24 GB of vRAM (RTX 3090/4090). + + +### Multi-Speaker Fine-Tuning + +If you're training a multi-speaker model, use `--resume_from_single_speaker_checkpoint` instead of `--resume_from_checkpoint`. This will be *much* faster than training your multi-speaker model from scratch. + + +### Testing + +To test your voice during training, you can use [these test sentences](https://github.com/rhasspy/piper/tree/master/etc/test_sentences) or generate your own with [piper-phonemize](https://github.com/rhasspy/piper-phonemize/). Run the following command to generate audio files: + +```sh +cat test_en-us.jsonl | \ + python3 -m piper_train.infer \ + --sample-rate 22050 \ + --checkpoint /path/to/training_dir/lightning_logs/version_0/checkpoints/*.ckpt \ + --output-dir /path/to/training_dir/output" +``` + +The input format to `piper_train.infer` is the same as `dataset.jsonl`: one line of JSON per utterance with `phoneme_ids` and `speaker_id` (multi-speaker only). Generate your own test file with [piper-phonemize](https://github.com/rhasspy/piper-phonemize/): + +```sh +lib/piper_phonemize -l en-us --espeak-data lib/espeak-ng-data/ < my_test_sentences.txt > my_test_phonemes.jsonl +``` + + +### Tensorboard + +Check on your model's progress with tensorboard: + +```sh +tensorboard --logdir /path/to/training_dir/lightning_logs +``` + +Click on the scalars tab and look at both `loss_disc_all` and `loss_gen_all`. In general, the model is "done" when `loss_disc_all` levels off. We've found that 2000 epochs is usually good for models trained from scratch, and an additional 1000 epochs when fine-tuning. + + +## Exporting a Model + +When your model is finished training, export it to onnx with: + +```sh +python3 -m piper_train.export_onnx \ + /path/to/model.ckpt \ + /path/to/model.onnx + +cp /path/to/training_dir/config.json \ + /path/to/model.onnx.json +``` + +The [export script](https://github.com/rhasspy/piper-samples/blob/master/_script/export.sh) does additional optimization of the model with [onnx-simplifier](https://github.com/daquexian/onnx-simplifier). + +If the export is successful, you can now use your voice with Piper: + +```sh +echo 'This is a test.' | \ + piper -m /path/to/model.onnx --output_file test.wav +``` diff --git a/piper/piper/VERSION b/piper/piper/VERSION new file mode 100644 index 0000000..26aaba0 --- /dev/null +++ b/piper/piper/VERSION @@ -0,0 +1 @@ +1.2.0 diff --git a/piper/piper/VOICES.md b/piper/piper/VOICES.md new file mode 100644 index 0000000..0a82347 --- /dev/null +++ b/piper/piper/VOICES.md @@ -0,0 +1,299 @@ +# Voices + +* Arabic (`ar_JO`, العربية) + * kareem + * low - [[model](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/ar/ar_JO/kareem/low/ar_JO-kareem-low.onnx?download=true)] [[config](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/ar/ar_JO/kareem/low/ar_JO-kareem-low.onnx.json?download=true.json)] + * medium - [[model](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/ar/ar_JO/kareem/medium/ar_JO-kareem-medium.onnx?download=true)] [[config](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/ar/ar_JO/kareem/medium/ar_JO-kareem-medium.onnx.json?download=true.json)] +* Catalan (`ca_ES`, Català) + * upc_ona + * x_low - [[model](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/ca/ca_ES/upc_ona/x_low/ca_ES-upc_ona-x_low.onnx?download=true)] [[config](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/ca/ca_ES/upc_ona/x_low/ca_ES-upc_ona-x_low.onnx.json?download=true.json)] + * medium - [[model](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/ca/ca_ES/upc_ona/medium/ca_ES-upc_ona-medium.onnx?download=true)] [[config](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/ca/ca_ES/upc_ona/medium/ca_ES-upc_ona-medium.onnx.json?download=true.json)] + * upc_pau + * x_low - [[model](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/ca/ca_ES/upc_pau/x_low/ca_ES-upc_pau-x_low.onnx?download=true)] [[config](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/ca/ca_ES/upc_pau/x_low/ca_ES-upc_pau-x_low.onnx.json?download=true.json)] +* Czech (`cs_CZ`, Čeština) + * jirka + * low - [[model](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/cs/cs_CZ/jirka/low/cs_CZ-jirka-low.onnx?download=true)] [[config](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/cs/cs_CZ/jirka/low/cs_CZ-jirka-low.onnx.json?download=true.json)] + * medium - [[model](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/cs/cs_CZ/jirka/medium/cs_CZ-jirka-medium.onnx?download=true)] [[config](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/cs/cs_CZ/jirka/medium/cs_CZ-jirka-medium.onnx.json?download=true.json)] +* Welsh (`cy_GB`, Cymraeg) + * bu_tts + * medium - [[model](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/cy/cy_GB/bu_tts/medium/cy_GB-bu_tts-medium.onnx?download=true)] [[config](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/cy/cy_GB/bu_tts/medium/cy_GB-bu_tts-medium.onnx.json?download=true.json)] + * gwryw_gogleddol + * medium - [[model](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/cy/cy_GB/gwryw_gogleddol/medium/cy_GB-gwryw_gogleddol-medium.onnx?download=true)] [[config](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/cy/cy_GB/gwryw_gogleddol/medium/cy_GB-gwryw_gogleddol-medium.onnx.json?download=true.json)] +* Danish (`da_DK`, Dansk) + * talesyntese + * medium - [[model](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/da/da_DK/talesyntese/medium/da_DK-talesyntese-medium.onnx?download=true)] [[config](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/da/da_DK/talesyntese/medium/da_DK-talesyntese-medium.onnx.json?download=true.json)] +* German (`de_DE`, Deutsch) + * eva_k + * x_low - [[model](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/de/de_DE/eva_k/x_low/de_DE-eva_k-x_low.onnx?download=true)] [[config](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/de/de_DE/eva_k/x_low/de_DE-eva_k-x_low.onnx.json?download=true.json)] + * karlsson + * low - [[model](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/de/de_DE/karlsson/low/de_DE-karlsson-low.onnx?download=true)] [[config](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/de/de_DE/karlsson/low/de_DE-karlsson-low.onnx.json?download=true.json)] + * kerstin + * low - [[model](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/de/de_DE/kerstin/low/de_DE-kerstin-low.onnx?download=true)] [[config](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/de/de_DE/kerstin/low/de_DE-kerstin-low.onnx.json?download=true.json)] + * mls + * medium - [[model](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/de/de_DE/mls/medium/de_DE-mls-medium.onnx?download=true)] [[config](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/de/de_DE/mls/medium/de_DE-mls-medium.onnx.json?download=true.json)] + * pavoque + * low - [[model](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/de/de_DE/pavoque/low/de_DE-pavoque-low.onnx?download=true)] [[config](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/de/de_DE/pavoque/low/de_DE-pavoque-low.onnx.json?download=true.json)] + * ramona + * low - [[model](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/de/de_DE/ramona/low/de_DE-ramona-low.onnx?download=true)] [[config](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/de/de_DE/ramona/low/de_DE-ramona-low.onnx.json?download=true.json)] + * thorsten + * low - [[model](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/de/de_DE/thorsten/low/de_DE-thorsten-low.onnx?download=true)] [[config](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/de/de_DE/thorsten/low/de_DE-thorsten-low.onnx.json?download=true.json)] + * medium - [[model](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/de/de_DE/thorsten/medium/de_DE-thorsten-medium.onnx?download=true)] [[config](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/de/de_DE/thorsten/medium/de_DE-thorsten-medium.onnx.json?download=true.json)] + * high - [[model](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/de/de_DE/thorsten/high/de_DE-thorsten-high.onnx?download=true)] [[config](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/de/de_DE/thorsten/high/de_DE-thorsten-high.onnx.json?download=true.json)] + * thorsten_emotional + * medium - [[model](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/de/de_DE/thorsten_emotional/medium/de_DE-thorsten_emotional-medium.onnx?download=true)] [[config](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/de/de_DE/thorsten_emotional/medium/de_DE-thorsten_emotional-medium.onnx.json?download=true.json)] +* Greek (`el_GR`, Ελληνικά) + * rapunzelina + * low - [[model](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/el/el_GR/rapunzelina/low/el_GR-rapunzelina-low.onnx?download=true)] [[config](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/el/el_GR/rapunzelina/low/el_GR-rapunzelina-low.onnx.json?download=true.json)] +* English (en_GB) + * alan + * low - [[model](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/en/en_GB/alan/low/en_GB-alan-low.onnx?download=true)] [[config](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/en/en_GB/alan/low/en_GB-alan-low.onnx.json?download=true.json)] + * medium - [[model](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/en/en_GB/alan/medium/en_GB-alan-medium.onnx?download=true)] [[config](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/en/en_GB/alan/medium/en_GB-alan-medium.onnx.json?download=true.json)] + * alba + * medium - [[model](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/en/en_GB/alba/medium/en_GB-alba-medium.onnx?download=true)] [[config](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/en/en_GB/alba/medium/en_GB-alba-medium.onnx.json?download=true.json)] + * aru + * medium - [[model](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/en/en_GB/aru/medium/en_GB-aru-medium.onnx?download=true)] [[config](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/en/en_GB/aru/medium/en_GB-aru-medium.onnx.json?download=true.json)] + * cori + * medium - [[model](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/en/en_GB/cori/medium/en_GB-cori-medium.onnx?download=true)] [[config](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/en/en_GB/cori/medium/en_GB-cori-medium.onnx.json?download=true.json)] + * high - [[model](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/en/en_GB/cori/high/en_GB-cori-high.onnx?download=true)] [[config](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/en/en_GB/cori/high/en_GB-cori-high.onnx.json?download=true.json)] + * jenny_dioco + * medium - [[model](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/en/en_GB/jenny_dioco/medium/en_GB-jenny_dioco-medium.onnx?download=true)] [[config](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/en/en_GB/jenny_dioco/medium/en_GB-jenny_dioco-medium.onnx.json?download=true.json)] + * northern_english_male + * medium - [[model](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/en/en_GB/northern_english_male/medium/en_GB-northern_english_male-medium.onnx?download=true)] [[config](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/en/en_GB/northern_english_male/medium/en_GB-northern_english_male-medium.onnx.json?download=true.json)] + * semaine + * medium - [[model](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/en/en_GB/semaine/medium/en_GB-semaine-medium.onnx?download=true)] [[config](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/en/en_GB/semaine/medium/en_GB-semaine-medium.onnx.json?download=true.json)] + * southern_english_female + * low - [[model](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/en/en_GB/southern_english_female/low/en_GB-southern_english_female-low.onnx?download=true)] [[config](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/en/en_GB/southern_english_female/low/en_GB-southern_english_female-low.onnx.json?download=true.json)] + * vctk + * medium - [[model](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/en/en_GB/vctk/medium/en_GB-vctk-medium.onnx?download=true)] [[config](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/en/en_GB/vctk/medium/en_GB-vctk-medium.onnx.json?download=true.json)] +* English (en_US) + * amy + * low - [[model](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/en/en_US/amy/low/en_US-amy-low.onnx?download=true)] [[config](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/en/en_US/amy/low/en_US-amy-low.onnx.json?download=true.json)] + * medium - [[model](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/en/en_US/amy/medium/en_US-amy-medium.onnx?download=true)] [[config](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/en/en_US/amy/medium/en_US-amy-medium.onnx.json?download=true.json)] + * arctic + * medium - [[model](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/en/en_US/arctic/medium/en_US-arctic-medium.onnx?download=true)] [[config](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/en/en_US/arctic/medium/en_US-arctic-medium.onnx.json?download=true.json)] + * bryce + * medium - [[model](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/en/en_US/bryce/medium/en_US-bryce-medium.onnx?download=true)] [[config](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/en/en_US/bryce/medium/en_US-bryce-medium.onnx.json?download=true.json)] + * danny + * low - [[model](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/en/en_US/danny/low/en_US-danny-low.onnx?download=true)] [[config](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/en/en_US/danny/low/en_US-danny-low.onnx.json?download=true.json)] + * hfc_female + * medium - [[model](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/en/en_US/hfc_female/medium/en_US-hfc_female-medium.onnx?download=true)] [[config](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/en/en_US/hfc_female/medium/en_US-hfc_female-medium.onnx.json?download=true.json)] + * hfc_male + * medium - [[model](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/en/en_US/hfc_male/medium/en_US-hfc_male-medium.onnx?download=true)] [[config](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/en/en_US/hfc_male/medium/en_US-hfc_male-medium.onnx.json?download=true.json)] + * joe + * medium - [[model](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/en/en_US/joe/medium/en_US-joe-medium.onnx?download=true)] [[config](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/en/en_US/joe/medium/en_US-joe-medium.onnx.json?download=true.json)] + * john + * medium - [[model](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/en/en_US/john/medium/en_US-john-medium.onnx?download=true)] [[config](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/en/en_US/john/medium/en_US-john-medium.onnx.json?download=true.json)] + * kathleen + * low - [[model](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/en/en_US/kathleen/low/en_US-kathleen-low.onnx?download=true)] [[config](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/en/en_US/kathleen/low/en_US-kathleen-low.onnx.json?download=true.json)] + * kristin + * medium - [[model](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/en/en_US/kristin/medium/en_US-kristin-medium.onnx?download=true)] [[config](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/en/en_US/kristin/medium/en_US-kristin-medium.onnx.json?download=true.json)] + * kusal + * medium - [[model](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/en/en_US/kusal/medium/en_US-kusal-medium.onnx?download=true)] [[config](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/en/en_US/kusal/medium/en_US-kusal-medium.onnx.json?download=true.json)] + * l2arctic + * medium - [[model](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/en/en_US/l2arctic/medium/en_US-l2arctic-medium.onnx?download=true)] [[config](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/en/en_US/l2arctic/medium/en_US-l2arctic-medium.onnx.json?download=true.json)] + * lessac + * low - [[model](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/en/en_US/lessac/low/en_US-lessac-low.onnx?download=true)] [[config](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/en/en_US/lessac/low/en_US-lessac-low.onnx.json?download=true.json)] + * medium - [[model](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/en/en_US/lessac/medium/en_US-lessac-medium.onnx?download=true)] [[config](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/en/en_US/lessac/medium/en_US-lessac-medium.onnx.json?download=true.json)] + * high - [[model](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/en/en_US/lessac/high/en_US-lessac-high.onnx?download=true)] [[config](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/en/en_US/lessac/high/en_US-lessac-high.onnx.json?download=true.json)] + * libritts + * high - [[model](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/en/en_US/libritts/high/en_US-libritts-high.onnx?download=true)] [[config](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/en/en_US/libritts/high/en_US-libritts-high.onnx.json?download=true.json)] + * libritts_r + * medium - [[model](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/en/en_US/libritts_r/medium/en_US-libritts_r-medium.onnx?download=true)] [[config](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/en/en_US/libritts_r/medium/en_US-libritts_r-medium.onnx.json?download=true.json)] + * ljspeech + * medium - [[model](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/en/en_US/ljspeech/medium/en_US-ljspeech-medium.onnx?download=true)] [[config](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/en/en_US/ljspeech/medium/en_US-ljspeech-medium.onnx.json?download=true.json)] + * high - [[model](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/en/en_US/ljspeech/high/en_US-ljspeech-high.onnx?download=true)] [[config](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/en/en_US/ljspeech/high/en_US-ljspeech-high.onnx.json?download=true.json)] + * norman + * medium - [[model](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/en/en_US/norman/medium/en_US-norman-medium.onnx?download=true)] [[config](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/en/en_US/norman/medium/en_US-norman-medium.onnx.json?download=true.json)] + * reza_ibrahim + * medium - [[model](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/en/en_US/reza_ibrahim/medium/en_US-reza_ibrahim-medium.onnx?download=true)] [[config](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/en/en_US/reza_ibrahim/medium/en_US-reza_ibrahim-medium.onnx.json?download=true.json)] + * ryan + * low - [[model](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/en/en_US/ryan/low/en_US-ryan-low.onnx?download=true)] [[config](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/en/en_US/ryan/low/en_US-ryan-low.onnx.json?download=true.json)] + * medium - [[model](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/en/en_US/ryan/medium/en_US-ryan-medium.onnx?download=true)] [[config](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/en/en_US/ryan/medium/en_US-ryan-medium.onnx.json?download=true.json)] + * high - [[model](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/en/en_US/ryan/high/en_US-ryan-high.onnx?download=true)] [[config](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/en/en_US/ryan/high/en_US-ryan-high.onnx.json?download=true.json)] + * sam + * medium - [[model](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/en/en_US/sam/medium/en_US-sam-medium.onnx?download=true)] [[config](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/en/en_US/sam/medium/en_US-sam-medium.onnx.json?download=true.json)] +* Spanish (`es_ES`, Español) + * carlfm + * x_low - [[model](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/es/es_ES/carlfm/x_low/es_ES-carlfm-x_low.onnx?download=true)] [[config](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/es/es_ES/carlfm/x_low/es_ES-carlfm-x_low.onnx.json?download=true.json)] + * davefx + * medium - [[model](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/es/es_ES/davefx/medium/es_ES-davefx-medium.onnx?download=true)] [[config](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/es/es_ES/davefx/medium/es_ES-davefx-medium.onnx.json?download=true.json)] + * mls_10246 + * low - [[model](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/es/es_ES/mls_10246/low/es_ES-mls_10246-low.onnx?download=true)] [[config](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/es/es_ES/mls_10246/low/es_ES-mls_10246-low.onnx.json?download=true.json)] + * mls_9972 + * low - [[model](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/es/es_ES/mls_9972/low/es_ES-mls_9972-low.onnx?download=true)] [[config](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/es/es_ES/mls_9972/low/es_ES-mls_9972-low.onnx.json?download=true.json)] + * sharvard + * medium - [[model](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/es/es_ES/sharvard/medium/es_ES-sharvard-medium.onnx?download=true)] [[config](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/es/es_ES/sharvard/medium/es_ES-sharvard-medium.onnx.json?download=true.json)] +* Spanish (`es_MX`, Español) + * ald + * medium - [[model](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/es/es_MX/ald/medium/es_MX-ald-medium.onnx?download=true)] [[config](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/es/es_MX/ald/medium/es_MX-ald-medium.onnx.json?download=true.json)] + * claude + * high - [[model](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/es/es_MX/claude/high/es_MX-claude-high.onnx?download=true)] [[config](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/es/es_MX/claude/high/es_MX-claude-high.onnx.json?download=true.json)] +* Farsi (`fa_IR`, فارسی) + * amir + * medium - [[model](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/fa/fa_IR/amir/medium/fa_IR-amir-medium.onnx?download=true)] [[config](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/fa/fa_IR/amir/medium/fa_IR-amir-medium.onnx.json?download=true.json)] + * ganji + * medium - [[model](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/fa/fa_IR/ganji/medium/fa_IR-ganji-medium.onnx?download=true)] [[config](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/fa/fa_IR/ganji/medium/fa_IR-ganji-medium.onnx.json?download=true.json)] + * ganji_adabi + * medium - [[model](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/fa/fa_IR/ganji_adabi/medium/fa_IR-ganji_adabi-medium.onnx?download=true)] [[config](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/fa/fa_IR/ganji_adabi/medium/fa_IR-ganji_adabi-medium.onnx.json?download=true.json)] + * gyro + * medium - [[model](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/fa/fa_IR/gyro/medium/fa_IR-gyro-medium.onnx?download=true)] [[config](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/fa/fa_IR/gyro/medium/fa_IR-gyro-medium.onnx.json?download=true.json)] + * reza_ibrahim + * medium - [[model](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/fa/fa_IR/reza_ibrahim/medium/fa_IR-reza_ibrahim-medium.onnx?download=true)] [[config](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/fa/fa_IR/reza_ibrahim/medium/fa_IR-reza_ibrahim-medium.onnx.json?download=true.json)] +* Finnish (`fi_FI`, Suomi) + * harri + * low - [[model](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/fi/fi_FI/harri/low/fi_FI-harri-low.onnx?download=true)] [[config](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/fi/fi_FI/harri/low/fi_FI-harri-low.onnx.json?download=true.json)] + * medium - [[model](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/fi/fi_FI/harri/medium/fi_FI-harri-medium.onnx?download=true)] [[config](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/fi/fi_FI/harri/medium/fi_FI-harri-medium.onnx.json?download=true.json)] +* French (`fr_FR`, Français) + * gilles + * low - [[model](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/fr/fr_FR/gilles/low/fr_FR-gilles-low.onnx?download=true)] [[config](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/fr/fr_FR/gilles/low/fr_FR-gilles-low.onnx.json?download=true.json)] + * mls + * medium - [[model](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/fr/fr_FR/mls/medium/fr_FR-mls-medium.onnx?download=true)] [[config](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/fr/fr_FR/mls/medium/fr_FR-mls-medium.onnx.json?download=true.json)] + * mls_1840 + * low - [[model](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/fr/fr_FR/mls_1840/low/fr_FR-mls_1840-low.onnx?download=true)] [[config](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/fr/fr_FR/mls_1840/low/fr_FR-mls_1840-low.onnx.json?download=true.json)] + * siwis + * low - [[model](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/fr/fr_FR/siwis/low/fr_FR-siwis-low.onnx?download=true)] [[config](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/fr/fr_FR/siwis/low/fr_FR-siwis-low.onnx.json?download=true.json)] + * medium - [[model](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/fr/fr_FR/siwis/medium/fr_FR-siwis-medium.onnx?download=true)] [[config](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/fr/fr_FR/siwis/medium/fr_FR-siwis-medium.onnx.json?download=true.json)] + * tom + * medium - [[model](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/fr/fr_FR/tom/medium/fr_FR-tom-medium.onnx?download=true)] [[config](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/fr/fr_FR/tom/medium/fr_FR-tom-medium.onnx.json?download=true.json)] + * upmc + * medium - [[model](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/fr/fr_FR/upmc/medium/fr_FR-upmc-medium.onnx?download=true)] [[config](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/fr/fr_FR/upmc/medium/fr_FR-upmc-medium.onnx.json?download=true.json)] +* Hungarian (`hu_HU`, Magyar) + * anna + * medium - [[model](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/hu/hu_HU/anna/medium/hu_HU-anna-medium.onnx?download=true)] [[config](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/hu/hu_HU/anna/medium/hu_HU-anna-medium.onnx.json?download=true.json)] + * berta + * medium - [[model](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/hu/hu_HU/berta/medium/hu_HU-berta-medium.onnx?download=true)] [[config](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/hu/hu_HU/berta/medium/hu_HU-berta-medium.onnx.json?download=true.json)] + * imre + * medium - [[model](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/hu/hu_HU/imre/medium/hu_HU-imre-medium.onnx?download=true)] [[config](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/hu/hu_HU/imre/medium/hu_HU-imre-medium.onnx.json?download=true.json)] +* Icelandic (`is_IS`, íslenska) + * bui + * medium - [[model](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/is/is_IS/bui/medium/is_IS-bui-medium.onnx?download=true)] [[config](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/is/is_IS/bui/medium/is_IS-bui-medium.onnx.json?download=true.json)] + * salka + * medium - [[model](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/is/is_IS/salka/medium/is_IS-salka-medium.onnx?download=true)] [[config](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/is/is_IS/salka/medium/is_IS-salka-medium.onnx.json?download=true.json)] + * steinn + * medium - [[model](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/is/is_IS/steinn/medium/is_IS-steinn-medium.onnx?download=true)] [[config](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/is/is_IS/steinn/medium/is_IS-steinn-medium.onnx.json?download=true.json)] + * ugla + * medium - [[model](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/is/is_IS/ugla/medium/is_IS-ugla-medium.onnx?download=true)] [[config](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/is/is_IS/ugla/medium/is_IS-ugla-medium.onnx.json?download=true.json)] +* Italian (`it_IT`, Italiano) + * paola + * medium - [[model](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/it/it_IT/paola/medium/it_IT-paola-medium.onnx?download=true)] [[config](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/it/it_IT/paola/medium/it_IT-paola-medium.onnx.json?download=true.json)] + * riccardo + * x_low - [[model](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/it/it_IT/riccardo/x_low/it_IT-riccardo-x_low.onnx?download=true)] [[config](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/it/it_IT/riccardo/x_low/it_IT-riccardo-x_low.onnx.json?download=true.json)] +* Georgian (`ka_GE`, ქართული ენა) + * natia + * medium - [[model](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/ka/ka_GE/natia/medium/ka_GE-natia-medium.onnx?download=true)] [[config](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/ka/ka_GE/natia/medium/ka_GE-natia-medium.onnx.json?download=true.json)] +* Kazakh (`kk_KZ`, қазақша) + * iseke + * x_low - [[model](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/kk/kk_KZ/iseke/x_low/kk_KZ-iseke-x_low.onnx?download=true)] [[config](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/kk/kk_KZ/iseke/x_low/kk_KZ-iseke-x_low.onnx.json?download=true.json)] + * issai + * high - [[model](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/kk/kk_KZ/issai/high/kk_KZ-issai-high.onnx?download=true)] [[config](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/kk/kk_KZ/issai/high/kk_KZ-issai-high.onnx.json?download=true.json)] + * raya + * x_low - [[model](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/kk/kk_KZ/raya/x_low/kk_KZ-raya-x_low.onnx?download=true)] [[config](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/kk/kk_KZ/raya/x_low/kk_KZ-raya-x_low.onnx.json?download=true.json)] +* Luxembourgish (`lb_LU`, Lëtzebuergesch) + * marylux + * medium - [[model](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/lb/lb_LU/marylux/medium/lb_LU-marylux-medium.onnx?download=true)] [[config](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/lb/lb_LU/marylux/medium/lb_LU-marylux-medium.onnx.json?download=true.json)] +* Latvian (`lv_LV`, Latviešu) + * aivars + * medium - [[model](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/lv/lv_LV/aivars/medium/lv_LV-aivars-medium.onnx?download=true)] [[config](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/lv/lv_LV/aivars/medium/lv_LV-aivars-medium.onnx.json?download=true.json)] +* Malayalam (`ml_IN`, മലയാളം) + * arjun + * medium - [[model](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/ml/ml_IN/arjun/medium/ml_IN-arjun-medium.onnx?download=true)] [[config](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/ml/ml_IN/arjun/medium/ml_IN-arjun-medium.onnx.json?download=true.json)] + * meera + * medium - [[model](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/ml/ml_IN/meera/medium/ml_IN-meera-medium.onnx?download=true)] [[config](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/ml/ml_IN/meera/medium/ml_IN-meera-medium.onnx.json?download=true.json)] +* Nepali (`ne_NP`, नेपाली) + * google + * x_low - [[model](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/ne/ne_NP/google/x_low/ne_NP-google-x_low.onnx?download=true)] [[config](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/ne/ne_NP/google/x_low/ne_NP-google-x_low.onnx.json?download=true.json)] + * medium - [[model](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/ne/ne_NP/google/medium/ne_NP-google-medium.onnx?download=true)] [[config](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/ne/ne_NP/google/medium/ne_NP-google-medium.onnx.json?download=true.json)] +* Dutch (`nl_BE`, Nederlands) + * nathalie + * x_low - [[model](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/nl/nl_BE/nathalie/x_low/nl_BE-nathalie-x_low.onnx?download=true)] [[config](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/nl/nl_BE/nathalie/x_low/nl_BE-nathalie-x_low.onnx.json?download=true.json)] + * medium - [[model](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/nl/nl_BE/nathalie/medium/nl_BE-nathalie-medium.onnx?download=true)] [[config](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/nl/nl_BE/nathalie/medium/nl_BE-nathalie-medium.onnx.json?download=true.json)] + * rdh + * x_low - [[model](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/nl/nl_BE/rdh/x_low/nl_BE-rdh-x_low.onnx?download=true)] [[config](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/nl/nl_BE/rdh/x_low/nl_BE-rdh-x_low.onnx.json?download=true.json)] + * medium - [[model](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/nl/nl_BE/rdh/medium/nl_BE-rdh-medium.onnx?download=true)] [[config](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/nl/nl_BE/rdh/medium/nl_BE-rdh-medium.onnx.json?download=true.json)] +* Dutch (`nl_NL`, Nederlands) + * mls + * medium - [[model](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/nl/nl_NL/mls/medium/nl_NL-mls-medium.onnx?download=true)] [[config](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/nl/nl_NL/mls/medium/nl_NL-mls-medium.onnx.json?download=true.json)] + * mls_5809 + * low - [[model](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/nl/nl_NL/mls_5809/low/nl_NL-mls_5809-low.onnx?download=true)] [[config](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/nl/nl_NL/mls_5809/low/nl_NL-mls_5809-low.onnx.json?download=true.json)] + * mls_7432 + * low - [[model](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/nl/nl_NL/mls_7432/low/nl_NL-mls_7432-low.onnx?download=true)] [[config](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/nl/nl_NL/mls_7432/low/nl_NL-mls_7432-low.onnx.json?download=true.json)] + * pim + * medium - [[model](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/nl/nl_NL/pim/medium/nl_NL-pim-medium.onnx?download=true)] [[config](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/nl/nl_NL/pim/medium/nl_NL-pim-medium.onnx.json?download=true.json)] + * ronnie + * medium - [[model](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/nl/nl_NL/ronnie/medium/nl_NL-ronnie-medium.onnx?download=true)] [[config](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/nl/nl_NL/ronnie/medium/nl_NL-ronnie-medium.onnx.json?download=true.json)] +* Norwegian (`no_NO`, Norsk) + * talesyntese + * medium - [[model](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/no/no_NO/talesyntese/medium/no_NO-talesyntese-medium.onnx?download=true)] [[config](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/no/no_NO/talesyntese/medium/no_NO-talesyntese-medium.onnx.json?download=true.json)] +* Polish (`pl_PL`, Polski) + * darkman + * medium - [[model](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/pl/pl_PL/darkman/medium/pl_PL-darkman-medium.onnx?download=true)] [[config](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/pl/pl_PL/darkman/medium/pl_PL-darkman-medium.onnx.json?download=true.json)] + * gosia + * medium - [[model](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/pl/pl_PL/gosia/medium/pl_PL-gosia-medium.onnx?download=true)] [[config](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/pl/pl_PL/gosia/medium/pl_PL-gosia-medium.onnx.json?download=true.json)] + * mc_speech + * medium - [[model](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/pl/pl_PL/mc_speech/medium/pl_PL-mc_speech-medium.onnx?download=true)] [[config](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/pl/pl_PL/mc_speech/medium/pl_PL-mc_speech-medium.onnx.json?download=true.json)] + * mls_6892 + * low - [[model](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/pl/pl_PL/mls_6892/low/pl_PL-mls_6892-low.onnx?download=true)] [[config](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/pl/pl_PL/mls_6892/low/pl_PL-mls_6892-low.onnx.json?download=true.json)] +* Portuguese (`pt_BR`, Português) + * cadu + * medium - [[model](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/pt/pt_BR/cadu/medium/pt_BR-cadu-medium.onnx?download=true)] [[config](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/pt/pt_BR/cadu/medium/pt_BR-cadu-medium.onnx.json?download=true.json)] + * edresson + * low - [[model](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/pt/pt_BR/edresson/low/pt_BR-edresson-low.onnx?download=true)] [[config](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/pt/pt_BR/edresson/low/pt_BR-edresson-low.onnx.json?download=true.json)] + * faber + * medium - [[model](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/pt/pt_BR/faber/medium/pt_BR-faber-medium.onnx?download=true)] [[config](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/pt/pt_BR/faber/medium/pt_BR-faber-medium.onnx.json?download=true.json)] + * jeff + * medium - [[model](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/pt/pt_BR/jeff/medium/pt_BR-jeff-medium.onnx?download=true)] [[config](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/pt/pt_BR/jeff/medium/pt_BR-jeff-medium.onnx.json?download=true.json)] +* Portuguese (`pt_PT`, Português) + * tugão + * medium - [[model](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/pt/pt_PT/tugão/medium/pt_PT-tugão-medium.onnx?download=true)] [[config](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/pt/pt_PT/tugão/medium/pt_PT-tugão-medium.onnx.json?download=true.json)] +* Romanian (`ro_RO`, Română) + * mihai + * medium - [[model](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/ro/ro_RO/mihai/medium/ro_RO-mihai-medium.onnx?download=true)] [[config](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/ro/ro_RO/mihai/medium/ro_RO-mihai-medium.onnx.json?download=true.json)] +* Russian (`ru_RU`, Русский) + * denis + * medium - [[model](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/ru/ru_RU/denis/medium/ru_RU-denis-medium.onnx?download=true)] [[config](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/ru/ru_RU/denis/medium/ru_RU-denis-medium.onnx.json?download=true.json)] + * dmitri + * medium - [[model](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/ru/ru_RU/dmitri/medium/ru_RU-dmitri-medium.onnx?download=true)] [[config](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/ru/ru_RU/dmitri/medium/ru_RU-dmitri-medium.onnx.json?download=true.json)] + * irina + * medium - [[model](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/ru/ru_RU/irina/medium/ru_RU-irina-medium.onnx?download=true)] [[config](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/ru/ru_RU/irina/medium/ru_RU-irina-medium.onnx.json?download=true.json)] + * ruslan + * medium - [[model](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/ru/ru_RU/ruslan/medium/ru_RU-ruslan-medium.onnx?download=true)] [[config](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/ru/ru_RU/ruslan/medium/ru_RU-ruslan-medium.onnx.json?download=true.json)] +* Slovak (`sk_SK`, Slovenčina) + * lili + * medium - [[model](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/sk/sk_SK/lili/medium/sk_SK-lili-medium.onnx?download=true)] [[config](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/sk/sk_SK/lili/medium/sk_SK-lili-medium.onnx.json?download=true.json)] +* Slovenian (`sl_SI`, Slovenščina) + * artur + * medium - [[model](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/sl/sl_SI/artur/medium/sl_SI-artur-medium.onnx?download=true)] [[config](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/sl/sl_SI/artur/medium/sl_SI-artur-medium.onnx.json?download=true.json)] +* Serbian (`sr_RS`, srpski) + * serbski_institut + * medium - [[model](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/sr/sr_RS/serbski_institut/medium/sr_RS-serbski_institut-medium.onnx?download=true)] [[config](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/sr/sr_RS/serbski_institut/medium/sr_RS-serbski_institut-medium.onnx.json?download=true.json)] +* Swedish (`sv_SE`, Svenska) + * lisa + * medium - [[model](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/sv/sv_SE/lisa/medium/sv_SE-lisa-medium.onnx?download=true)] [[config](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/sv/sv_SE/lisa/medium/sv_SE-lisa-medium.onnx.json?download=true.json)] + * nst + * medium - [[model](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/sv/sv_SE/nst/medium/sv_SE-nst-medium.onnx?download=true)] [[config](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/sv/sv_SE/nst/medium/sv_SE-nst-medium.onnx.json?download=true.json)] +* Swahili (`sw_CD`, Kiswahili) + * lanfrica + * medium - [[model](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/sw/sw_CD/lanfrica/medium/sw_CD-lanfrica-medium.onnx?download=true)] [[config](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/sw/sw_CD/lanfrica/medium/sw_CD-lanfrica-medium.onnx.json?download=true.json)] +* Turkish (`tr_TR`, Türkçe) + * dfki + * medium - [[model](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/tr/tr_TR/dfki/medium/tr_TR-dfki-medium.onnx?download=true)] [[config](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/tr/tr_TR/dfki/medium/tr_TR-dfki-medium.onnx.json?download=true.json)] + * fahrettin + * medium - [[model](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/tr/tr_TR/fahrettin/medium/tr_TR-fahrettin-medium.onnx?download=true)] [[config](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/tr/tr_TR/fahrettin/medium/tr_TR-fahrettin-medium.onnx.json?download=true.json)] + * fettah + * medium - [[model](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/tr/tr_TR/fettah/medium/tr_TR-fettah-medium.onnx?download=true)] [[config](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/tr/tr_TR/fettah/medium/tr_TR-fettah-medium.onnx.json?download=true.json)] +* Ukrainian (`uk_UA`, украї́нська мо́ва) + * lada + * x_low - [[model](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/uk/uk_UA/lada/x_low/uk_UA-lada-x_low.onnx?download=true)] [[config](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/uk/uk_UA/lada/x_low/uk_UA-lada-x_low.onnx.json?download=true.json)] + * ukrainian_tts + * medium - [[model](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/uk/uk_UA/ukrainian_tts/medium/uk_UA-ukrainian_tts-medium.onnx?download=true)] [[config](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/uk/uk_UA/ukrainian_tts/medium/uk_UA-ukrainian_tts-medium.onnx.json?download=true.json)] +* Vietnamese (`vi_VN`, Tiếng Việt) + * 25hours_single + * low - [[model](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/vi/vi_VN/25hours_single/low/vi_VN-25hours_single-low.onnx?download=true)] [[config](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/vi/vi_VN/25hours_single/low/vi_VN-25hours_single-low.onnx.json?download=true.json)] + * vais1000 + * medium - [[model](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/vi/vi_VN/vais1000/medium/vi_VN-vais1000-medium.onnx?download=true)] [[config](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/vi/vi_VN/vais1000/medium/vi_VN-vais1000-medium.onnx.json?download=true.json)] + * vivos + * x_low - [[model](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/vi/vi_VN/vivos/x_low/vi_VN-vivos-x_low.onnx?download=true)] [[config](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/vi/vi_VN/vivos/x_low/vi_VN-vivos-x_low.onnx.json?download=true.json)] +* Chinese (`zh_CN`, 简体中文) + * huayan + * x_low - [[model](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/zh/zh_CN/huayan/x_low/zh_CN-huayan-x_low.onnx?download=true)] [[config](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/zh/zh_CN/huayan/x_low/zh_CN-huayan-x_low.onnx.json?download=true.json)] + * medium - [[model](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/zh/zh_CN/huayan/medium/zh_CN-huayan-medium.onnx?download=true)] [[config](https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/zh/zh_CN/huayan/medium/zh_CN-huayan-medium.onnx.json?download=true.json)] diff --git a/piper/piper/etc/logo.png b/piper/piper/etc/logo.png new file mode 100644 index 0000000..2b276be Binary files /dev/null and b/piper/piper/etc/logo.png differ diff --git a/piper/piper/etc/logo.svg b/piper/piper/etc/logo.svg new file mode 100644 index 0000000..87a1d6f --- /dev/null +++ b/piper/piper/etc/logo.svg @@ -0,0 +1,141 @@ + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/piper/piper/etc/nabu_casa_sponsored.png b/piper/piper/etc/nabu_casa_sponsored.png new file mode 100644 index 0000000..f5831cf Binary files /dev/null and b/piper/piper/etc/nabu_casa_sponsored.png differ diff --git a/piper/piper/etc/nabu_casa_sponsored.svg b/piper/piper/etc/nabu_casa_sponsored.svg new file mode 100644 index 0000000..151e242 --- /dev/null +++ b/piper/piper/etc/nabu_casa_sponsored.svg @@ -0,0 +1,215 @@ + + + + + + image/svg+xml + + logo-two-column + + + + + + + + + + + + + + logo-two-column + + + + + + + + + + + + + + + + + + + + + + Sponsored by + + diff --git a/piper/piper/etc/test_sentences/ar.txt b/piper/piper/etc/test_sentences/ar.txt new file mode 100644 index 0000000..b6aaf42 --- /dev/null +++ b/piper/piper/etc/test_sentences/ar.txt @@ -0,0 +1,5 @@ +قَوْسُ قُزَحْ، يُسَمَّى كَذَلِكَ: قَوْسُ الْمَطَرِ أَوْ قَوْسُ الْأَلْوَانِ، وَهُوَ ظَاهِرَةٌ طَبِيعِيَّةٌ فِزْيَائِيَّةٌ نَاتِجَةٌ عَنِ انْكِسَارِ وَتَحَلُّلِ ضَوْءِ الشَّمْسِ خِلالَ قَطْرَةِ مَاءِ الْمَطَرِ. + يَظْهَرُ قَوْسُ الْمَطَرِ بَعْدَ سُقُوطِ الْمَطَرِ أَوْ خِلالَ سُقُوطِ الْمَطَرِ وَالشَّمْسُ مُشْرِقَةٌ. + تَكُونُ الْأَلْوَانُ فِي الْقَوْسِ: اللَّوْنَ الْأَحْمَرَ مِنَ الْخَارِجِ وَيَتَدَرَّجُ إِلَى الْبُرْتُقَالِيِّ فَالْأَصْفَرُ فَالْأَخْضَرُ فَالْأَزْرَقُ فَأَزْرَقَ غَامِقٌ (نِيْلِيٌّ) فَبَنَفْسَجِيٌّ مِنَ الدَّاخِلِ. + ضَوْءُ الشَّمْسِ يَحْتَوِي عَلَى الْعَدِيدِ مِنَ الْأَلْوَانِ الطَّيفِيَّةِ وَهِيَ عِبَارَةٌ عَنْ أَشِعَةٍ ذَاتِ أَطْوَالٍ مُوْجِيَةٍ مُخْتَلِفَةٍ، يَظْهَرُ قَوْسُ الْقُزَحِ عَادَةً بِشَكْلٍ نِصْفِ دَائِرِيٍّ وَفِي حَالَاتٍ نَادِرَةٍ يَكُونُ قَمَرِيًّا حَيْثُ يَكُونُ اِنْكِسَارُ ضَوْءِ الْقَمَرِ الْمُسَبِّبِ لَهُ عَبْرَ قَطْرَةِ الْمَاءِ مُلَائِمًا مَعَ مَكَانِ وُجُودِ الْقَمَرِ فِي تِلْكَ اللَّحَظَاتِ. + وَيَظْهَرُ لِلْمُشَاهِدِ نَتِيجَةً لِضَوْئِهِ الْخَافِتْ أَبْيَضَ لِأَنَّ الْعَيْنَ الْبَشَرِيَّةَ لَا تَسْتَطِيعُ أَنْ تَرَى الْأَلْوَانَ فِي اللَّيْلِ. diff --git a/piper/piper/etc/test_sentences/ca.txt b/piper/piper/etc/test_sentences/ca.txt new file mode 100644 index 0000000..693d4ec --- /dev/null +++ b/piper/piper/etc/test_sentences/ca.txt @@ -0,0 +1,6 @@ +L'arc de Sant Martí o arc del cel és un fenomen meteorològic òptic produït per la reflexió, refracció i dispersió de la llum causada per gotes d'aigua en suspensió a la troposfera que resulta en l'aparició al cel de l'espectre de la llum visible, interpretat per l'ull humà com els colors vermell, taronja, groc, verd, blau, indi i violat. +És un arc acolorit que s'observa principalment durant els ruixats en qualsevol època de l'any i a la secció del cel directament oposada al Sol per l'espectador, quan plou i fa sol al mateix temps. +Els colors van des del violeta a l'interior (amb un radi de 40°) al vermell a l'exterior, amb un radi de 42°. +A més a més d'aquest arc, denominat principal, de vegades se'n pot apreciar un segon situat al seu exterior, de coloració menys intensa i amb l'ordre de colors invers: el vermell a l'interior té un radi de 50° i el violeta, a l'exterior, el té de 54°. +Entre els arcs primari i secundari, s'observa una franja de cel menys lluminosa anomenada banda d'Alexander. +Jove xef, porti whisky amb quinze glaçons d’hidrogen, coi! diff --git a/piper/piper/etc/test_sentences/cs.txt b/piper/piper/etc/test_sentences/cs.txt new file mode 100644 index 0000000..98b9be7 --- /dev/null +++ b/piper/piper/etc/test_sentences/cs.txt @@ -0,0 +1,8 @@ +Duha je fotometeor, projevující se jako skupina soustředných barevných oblouků, které vznikají lomem a vnitřním odrazem slunečního nebo měsíčního světla na vodních kapkách v atmosféře. +Podobný úkaz může vzniknout i v drobných ledových krystalech v atmosféře. +Za deště nebo mlhy prochází světlo každou jednotlivou kapkou. +Protože má voda větší index lomu než vzduch, světlo se v ní láme. +Index lomu je různý pro různé vlnové délky světla a povrch kapky má tvar koule. +Světlo se tedy na okrajích dešťových kapek rozkládá na jednotlivé barevné složky, které se odrážejí na vnitřní stěně a opouštějí pod různými úhly kapku. +Kapky, které jsou ve stejné úhlové vzdálenosti od zdroje světla, se pak jeví, jako by měly stejnou barvu. +Proto má duha tvar kruhu, případně jeho části. diff --git a/piper/piper/etc/test_sentences/cy.txt b/piper/piper/etc/test_sentences/cy.txt new file mode 100644 index 0000000..06c0c78 --- /dev/null +++ b/piper/piper/etc/test_sentences/cy.txt @@ -0,0 +1,5 @@ +Rhyfeddod neu ffenomenon optegol a meteorolegol yw enfys, pan fydd sbectrwm o olau yn ymddangos yn yr awyr pan fo'r haul yn disgleirio ar ddiferion o leithder yn atmosffer y ddaear. +Mae'n ymddangos ar ffurf bwa amryliw, gyda choch ar ran allanol y bwa, a dulas ar y rhan fewnol. +Caiff ei greu pan fo golau o fewn diferion o ddŵr yn cael ei adlewyrchu, ei blygu (neu ei wrthdori) a'i wasgaru. +Mae enfys yn ymestyn dros sbectrwm di-dor o liwiau; mae'r bandiau a welir yn ganlyniad i olwg lliw pobol. +Disgrifir y gyfres o liwiau'n gyffredinol fel coch, oren, melyn, gwyrdd, glas, indigo a fioled. diff --git a/piper/piper/etc/test_sentences/da.txt b/piper/piper/etc/test_sentences/da.txt new file mode 100644 index 0000000..8869f5b --- /dev/null +++ b/piper/piper/etc/test_sentences/da.txt @@ -0,0 +1,6 @@ +En regnbue er et optisk fænomen; en "lyseffekt", som skabes på himlen, når lys fra Solen rammer små vanddråber i luften, f.eks. faldende regn. +Sådanne svævende vanddråber har facon omtrent som en kugle – jo mindre de er, desto mere perfekt kugleform har de. Disse kuglerunde dråber bryder, eller "afbøjer" lyset på samme måde som et optisk prisme ved en proces, der kaldes refraktion. +Og derudover opfører indersiden af dråbernes overflader sig til en vis grad som små spejle, (et fænomen der kaldes for intern refleksion), der kaster lyset tilbage i nogenlunde den retning, det kom fra – det er derfor, man altid ser regnbuer i retningen direkte væk fra solen. +Lys kan beskrives som et bølgefænomen, og "hvidt" lys, som det Solen udsender, består af lysbølger med forskellige længder. +Det brydes, eller afbøjes, i forskellige vinkler afhængigt af bølgelængden (se optisk dispersion), så selv om solstrålerne ankommer omtrent parallelle, sender dråberne de forskellige bølgelængder tilbage i forskellige retninger. +Quizdeltagerne spiste jordbær med fløde, mens cirkusklovnen Walther spillede på xylofon. diff --git a/piper/piper/etc/test_sentences/de.txt b/piper/piper/etc/test_sentences/de.txt new file mode 100644 index 0000000..992fc8b --- /dev/null +++ b/piper/piper/etc/test_sentences/de.txt @@ -0,0 +1,10 @@ +Der Regenbogen ist ein atmosphärisch-optisches Phänomen, das als kreisbogenförmiges farbiges Lichtband in einer von der Sonne beschienenen Regenwand oder -wolke wahrgenommen wird. +Sein radialer Farbverlauf ist das mehr oder weniger verweißlichte sichtbare Licht des Sonnenspektrums. +Das Sonnenlicht wird beim Ein- und beim Austritt an jedem annähernd kugelförmigen Regentropfen abgelenkt und in Licht mehrerer Farben zerlegt. +Dazwischen wird es an der Tropfenrückseite reflektiert. +Das jeden Tropfen verlassende Licht ist in farbigen Schichten konzentriert, die aufeinandergesteckte dünne Kegelmäntel bilden. +Der Beobachter hat die Regenwolke vor sich und die Sonne im Rücken. +Ihn erreicht Licht einer bestimmten Farbe aus Regentropfen, die sich auf einem schmalen Kreisbogen am Himmel befinden. +Der Winkel, unter dem der Regenbogen gesehen wird, ist gleich wie der Winkel der Kegelmäntel, in dem diese Farben beim Austritt am Regentropfen konzentriert sind. +Victor jagt zwölf Boxkämpfer quer über den großen Sylter Deich. +Falsches Üben von Xylophonmusik quält jeden größeren Zwerg. diff --git a/piper/piper/etc/test_sentences/el.txt b/piper/piper/etc/test_sentences/el.txt new file mode 100644 index 0000000..99eb78e --- /dev/null +++ b/piper/piper/etc/test_sentences/el.txt @@ -0,0 +1,3 @@ +Οι επιστήμονες μελετούν ακόμη το ουράνιο τόξο. +Μπόγιερ παρατηρεί: «Μέσα σε μια σταγόνα βροχής η αλληλεπίδραση της ενέργειας του φωτός με την ύλη είναι τόσο στενή ώστε οδηγούμαστε κατευθείαν στην κβαντομηχανική και στη θεωρία της σχετικότητας. +Αν και γνωρίζουμε αρκετά πράγματα για το πώς σχηματίζεται το ουράνιο τόξο, λίγα είναι αυτά που έχουμε μάθει για το πώς γίνεται αντιληπτό». diff --git a/piper/piper/etc/test_sentences/en.txt b/piper/piper/etc/test_sentences/en.txt new file mode 100644 index 0000000..3af1c46 --- /dev/null +++ b/piper/piper/etc/test_sentences/en.txt @@ -0,0 +1,7 @@ +A rainbow is a meteorological phenomenon that is caused by reflection, refraction and dispersion of light in water droplets resulting in a spectrum of light appearing in the sky. +It takes the form of a multi-colored circular arc. +Rainbows caused by sunlight always appear in the section of sky directly opposite the Sun. +With tenure, Suzie’d have all the more leisure for yachting, but her publications are no good. +Shaw, those twelve beige hooks are joined if I patch a young, gooey mouth. +Are those shy Eurasian footwear, cowboy chaps, or jolly earthmoving headgear? +The beige hue on the waters of the loch impressed all, including the French queen, before she heard that symphony again, just as young Arthur wanted. diff --git a/piper/piper/etc/test_sentences/es.txt b/piper/piper/etc/test_sentences/es.txt new file mode 100644 index 0000000..880930e --- /dev/null +++ b/piper/piper/etc/test_sentences/es.txt @@ -0,0 +1,6 @@ +Un arcoíris​ o arco iris es un fenómeno óptico y meteorológico que consiste en la aparición en el cielo de un arco de luz multicolor, originado por la descomposición de la luz solar en el espectro visible, la cual se produce por refracción, cuando los rayos del sol atraviesan pequeñas gotas de agua contenidas en la atmósfera terrestre. +Es un arco compuesto de arcos concéntricos de colores, sin solución de continuidad entre ellos, con el rojo hacia la parte exterior y el violeta hacia el interior. +A altitud suficiente, por ejemplo cuando se viaja en avión, el arcoíris se puede observar en forma de círculo completo. +Benjamín pidió una bebida de kiwi y fresa; Noé, sin vergüenza, la más exquisita champaña del menú. +José compró una vieja zampoña en Perú. Excusándose, Sofía tiró su whisky al desagüe de la banqueta. +El veloz murciélago hindú comía feliz cardillo y kiwi. La cigüeña tocaba el saxofón detrás del palenque de paja. diff --git a/piper/piper/etc/test_sentences/eu.txt b/piper/piper/etc/test_sentences/eu.txt new file mode 100644 index 0000000..8f5fc16 --- /dev/null +++ b/piper/piper/etc/test_sentences/eu.txt @@ -0,0 +1,4 @@ +Ostadarra, halaber Erromako zubia edo uztargia, gertaera optiko eta meteorologiko bat da, zeruan, jarraikako argi zerrenda bat eragiten duena, eguzkiaren izpiek Lurreko atmosferan aurkitzen diren hezetasun tanta txikiak zeharkatzen dituztenean. +Forma, arku kolore anitz batena da, gorria kanpoalderantz duena eta morea barnealderantz. +Ez da hain ohikoa ostadar bikoitza, bigarren arku bat duena, ilunagoa, koloreen ordena alderantziz duena, hau da, gorria barnealderantz eta morea kanpoalderantz. +Ostadarrak, jarraikako kolore zerrenda bat erakusten duen arren, ohi, osatzen duten koloreak sei direla onartzen da: gorria, laranja, hori, berdea, urdina eta morea, argiaren maiztasunen deskonposaketen ondorio, eta hiru oinarrizko koloreek, eta hauek, euren arteko nahasketetan emandako beste hirurek emandakoek osatua, tradizionalki, 7 kolore aipatzen diren arren, urdina eta morearen artean anila jarriz. diff --git a/piper/piper/etc/test_sentences/fa.txt b/piper/piper/etc/test_sentences/fa.txt new file mode 100644 index 0000000..0f9bac5 --- /dev/null +++ b/piper/piper/etc/test_sentences/fa.txt @@ -0,0 +1 @@ +رنگین‌کمان پدیده‌ای نوری و کمانی است که زمانی که خورشید به قطرات نم و رطوبت جو زمین می‌تابد باعث ایجاد طیفی از نور در آسمان می‌شود. این پدیده به شکل یک کمان diff --git a/piper/piper/etc/test_sentences/fi.txt b/piper/piper/etc/test_sentences/fi.txt new file mode 100644 index 0000000..d6c9b54 --- /dev/null +++ b/piper/piper/etc/test_sentences/fi.txt @@ -0,0 +1,7 @@ +Sateenkaari on spektrin väreissä esiintyvä ilmakehän optinen ilmiö. +Se syntyy, kun valo taittuu pisaran etupinnasta, heijastuu pisaran takapinnasta ja taittuu jälleen pisaran etupinnasta. +Koska vesipisara on dispersiivinen, valkoinen valo hajoaa väreiksi muodostaen sateenkaaren. +Prisman tuottama spektri on valon eri aallonpituuksien tasainen jatkumo ilman kaistoja. +Ihmissilmä kykenee erottamaan spektristä erikseen joitain satoja eri värejä. +Tämän mukaisesti Munsellin värisysteemi erottaa 100 eri värisävyä. +Päävärien näennäinen erillisyys on ihmisen näköjärjestelmän ominaisuus ja päävärien tarkka lukumäärä on jossain määrin vapaavalintainen. diff --git a/piper/piper/etc/test_sentences/fr.txt b/piper/piper/etc/test_sentences/fr.txt new file mode 100644 index 0000000..29a2acc --- /dev/null +++ b/piper/piper/etc/test_sentences/fr.txt @@ -0,0 +1,7 @@ +Un arc-en-ciel est un photométéore, un phénomène optique se produisant dans le ciel, visible dans la direction opposée au Soleil quand il brille pendant la pluie. +C'est un arc de cercle coloré d'un dégradé de couleurs continu du rouge, à l'extérieur, au jaune au vert et au bleu, jusqu'au violet à l'intérieur. +Un arc-en-ciel se compose de deux arcs principaux : l'arc primaire et l'arc secondaire. +L'arc primaire est dû aux rayons ayant effectué une réflexion interne dans la goutte d'eau. +Les rayons ayant effectué deux réflexions internes dans la goutte d'eau provoquent un arc secondaire moins intense à l'extérieur du premier. +Les deux arcs sont séparés par la bande sombre d'Alexandre. +Buvez de ce whisky que le patron juge fameux. diff --git a/piper/piper/etc/test_sentences/hu.txt b/piper/piper/etc/test_sentences/hu.txt new file mode 100644 index 0000000..d3b06b8 --- /dev/null +++ b/piper/piper/etc/test_sentences/hu.txt @@ -0,0 +1,6 @@ +A szivárvány olyan optikai jelenség, melyet eső- vagy páracseppek okoznak, mikor a fény prizmaszerűen megtörik rajtuk és színeire bomlik, kialakul a színképe, más néven spektruma. +Az ív külső része vörös, míg a belső ibolya. +Előfordul az ún. +dupla szivárvány is, amelynél egy másik, halványabb ív is látható fordított sorrendű színekkel. +Előfordul, hogy a szivárvány ív formája is megváltozik, repülőgépből nézve körnek látszik, vagy irizáló felhőket (úgynevezett „tűzszivárványt”) is létrehozhat, amennyiben a fény jégkristályokon törik meg, megfelelő körülmények között. +Jó foxim és don Quijote húszwattos lámpánál ülve egy pár bűvös cipőt készít. diff --git a/piper/piper/etc/test_sentences/is.txt b/piper/piper/etc/test_sentences/is.txt new file mode 100644 index 0000000..f5b21fc --- /dev/null +++ b/piper/piper/etc/test_sentences/is.txt @@ -0,0 +1,3 @@ +Regnbogi (einnig kallaður friðarbogi) er ljósfræðilegt og veðurfræðilegt fyrirbæri sem orsakast þegar litróf birtist á himninum á meðan sólin skín á vætu í andrúmslofti jarðar. +Hann er marglitur með rauðan að utanverðu og fjólubláan að innanverðu. +Sjaldnar má sjá daufari regnboga með litina í öfugri röð. diff --git a/piper/piper/etc/test_sentences/it.txt b/piper/piper/etc/test_sentences/it.txt new file mode 100644 index 0000000..d00b39f --- /dev/null +++ b/piper/piper/etc/test_sentences/it.txt @@ -0,0 +1,2 @@ +In fisica dell'atmosfera e meteorologia l'arcobaleno è un fenomeno ottico atmosferico che produce uno spettro quasi continuo di luce nel cielo quando la luce del Sole attraversa le gocce d'acqua rimaste in sospensione dopo un temporale, o presso una cascata o una fontana. +Lo spettro elettromagnetico dell'arcobaleno include lunghezze d'onda sia visibili sia non visibili all'occhio umano, queste ultime rilevabili attraverso uno spettrometro. diff --git a/piper/piper/etc/test_sentences/ka.txt b/piper/piper/etc/test_sentences/ka.txt new file mode 100644 index 0000000..3494d6f --- /dev/null +++ b/piper/piper/etc/test_sentences/ka.txt @@ -0,0 +1,7 @@ +ცისარტყელა — ატმოსფერული ოპტიკური და მეტეოროლოგიური მოვლენა, რომელიც ხშირად წვიმის შემდეგ ჩნდება. +ეს თავისებური რკალია ან წრეხაზი, რომელიც ფერების სპექტრისგან შედგება. +ცისარტყელა შედგება შვიდი ფერისგან: წითელი, ნარინჯისფერი, ყვითელი, მწვანე, ცისფერი, ლურჯი, იისფერი. +ცენტრი წრისა, რომელსაც ცისარტყელა შემოწერს, ძევს წრფეზე, რომელიც გადის დამკვირვებელსა და მზეს შორის, ამავდროულად ცისარტყელას დანახვისას მზე ყოველთვის მდებარეობს დამკვირვებლის ზურგს უკან, შესაბამისად, სპეციალური ოპტიკური ხელსაწყოების გარეშე შეუძლებელია ერთდროულად ცისარტყელასა და მზის დანახვა. +ხმელეთზე მდებარე დამკვირვებლისთვის ცისარტყელას, როგორც წესი, აქვს რკალის, წრის ნაწილის, ფორმა. +რაც უფრო მაღალია დაკვირვების წერტილი — მით უფრო სრულია ეს რკალი (მთიდან ან თვითმფრინავიდან შესაძლებელია მთლიანი წრის დანახვაც). +როდესაც მზე აღიმართება ჰორიზონტიდან 42 გრადუსზე უფრო მაღლა, ცისარტყელა დედამიწის ზედაპირიდან უხილავია. diff --git a/piper/piper/etc/test_sentences/kk.txt b/piper/piper/etc/test_sentences/kk.txt new file mode 100644 index 0000000..08e821e --- /dev/null +++ b/piper/piper/etc/test_sentences/kk.txt @@ -0,0 +1,8 @@ +Кемпірқосақ – аспан күмбезінде түрлі түсті доға түрінде көрінетін атмосферадағы оптикалық құбылыс. +Ол аспанның бір жағында торлаған бұлттан жаңбыр жауып, қарсы жағында жарқырап күн шығып тұрған кезде көрінеді. +Кемпірқосақ тікелей түскен күн сәулесінің жаңбыр тамшыларынан өткенде сынып, құрамдас бөліктерге (қызыл, сарғылт, сары, жасыл, көгілдір, көк, күлгін) бөлінуінің және тамшы бетінен шағылған толқын ұзындығы әр түрлі сәулелердің дифракциялануы мен интерференциялануы нәтижесінде пайда болады. +Кемпірқосақтың айқындығы жаңбыр тамшыларының үлкен-кішілігіне байланысты өзгеріп отырады. +Тамшы үлкен болса кемпірқосақ айқын, жарық болып көрінеді. +Кейде алғашқы кемпірқосақпен бірге екінші кемпірқосақ қабаттаса көрінеді, оны қос кемпірқосақ деп атайды. +Қос кемпірқосақ күн сәулесінің су тамшысына белгілі бұрыш жасай, екі рет шағылысуынан түзіледі. +Сонымен бірге ай сәулесінен пайда болатын кемпірқосақты ай кемпірқосағы деп атайды. diff --git a/piper/piper/etc/test_sentences/lb.txt b/piper/piper/etc/test_sentences/lb.txt new file mode 100644 index 0000000..ace2963 --- /dev/null +++ b/piper/piper/etc/test_sentences/lb.txt @@ -0,0 +1,6 @@ +Et freet mech, Iech kennen ze léieren. +Schwätzt wannechgelift méi lues. +Vill Gléck fir däi Gebuertsdag. +Mäi Loftkësseboot ass voller Éilen. +Schwätz du Lëtzebuergesch? +E gudde Rutsch an d'neit Joer. diff --git a/piper/piper/etc/test_sentences/lv.txt b/piper/piper/etc/test_sentences/lv.txt new file mode 100644 index 0000000..cbc1880 --- /dev/null +++ b/piper/piper/etc/test_sentences/lv.txt @@ -0,0 +1,5 @@ +Varavīksne ir optiska parādība atmosfērā, kuru rada Saules staru laušana un atstarošana krītošos lietus pilienos. +Tā parādās iepretim Saulei uz mākoņu fona, kad līst. +Varavīksnes loks pāri debesjumam ir viens no krāšņākajiem dabas skatiem. +Krāšņā loka ārējā mala ir sarkana, leņķis 42°, turpretī iekšējā — violeta. +Pārējās krāsas izvietojušās atbilstoši tā loka gammai. diff --git a/piper/piper/etc/test_sentences/ml.txt b/piper/piper/etc/test_sentences/ml.txt new file mode 100644 index 0000000..ce41b44 --- /dev/null +++ b/piper/piper/etc/test_sentences/ml.txt @@ -0,0 +1,6 @@ +അന്തരീക്ഷത്തിലെ ജലകണികകളിൽ പതിക്കുന്ന പ്രകാശത്തിന്‌ പ്രകീർണ്ണനം സംഭവിക്കുന്നതുമൂലം കാണാൻ കഴിയുന്ന ഒരു പ്രതിഭാസമാണ്‌ മഴവില്ല്. +ചാപമായി‌ പ്രത്യക്ഷപ്പെടുന്ന മഴവില്ലിൽ ദൃശ്യപ്രകാശത്തിലെ ഘടകവർണ്ണങ്ങൾ വേർപിരിഞ്ഞ് ബഹുവർണ്ണങ്ങളായി കാണാൻ കഴിയും. +ചുവപ്പ്, ഓറഞ്ച്, മഞ്ഞ, പച്ച, നീല, ഇൻഡിഗോ, വയലറ്റ് എന്നിവയാണ്‌ ന്യൂട്ടന്റെ സപ്തവർണ്ണങ്ങൾ. +ആധുനിക സപ്തവർണങ്ങൾ വയലെറ്റ് (ഊദ), ബ്ലൂ (നീല), സയൻ, ഗ്രീൻ (പച്ച), യെല്ലോ (മഞ്ഞ), ഓറൻജ്, റെഡ് (ചുവപ്പ്) എന്നിവയാണ് ഇതിൽ ചുവപ്പ് ചാപത്തിന്റെ ബഹിർഭാഗത്തായും, വയലറ്റ്. അന്തർഭാഗത്തായും വരും. +മറ്റുവർണ്ണങ്ങൾ ഇവയ്ക്കിടയിൽ ക്രമമായി വിന്യസിക്കപ്പെട്ടിരിക്കും. +രാവിലെയോ വൈകിട്ടോ സൂര്യന്‌ എതിരായിട്ടായിരിക്കും മഴവില്ല് ഉണ്ടാവുക[2]. സൂര്യന്‌ എതിരായിട്ടായിരിക്കും മഴവില്ല് ഉണ്ടാവുക. diff --git a/piper/piper/etc/test_sentences/ne.txt b/piper/piper/etc/test_sentences/ne.txt new file mode 100644 index 0000000..e8deafe --- /dev/null +++ b/piper/piper/etc/test_sentences/ne.txt @@ -0,0 +1,4 @@ +इन्द्रेणी वा इन्द्रधनुष प्रकाश र रंगबाट उत्पन्न भएको यस्तो घटना हो जसमा रंगीन प्रकाशको एउटा अर्धवृत आकाशमा देखिन्छ। जब सूर्यको प्रकाश पृथ्वीको वायुमण्डलमा भएको पानीको थोपा माथि पर्छ, पानीको थोपाले प्रकाशलाई परावर्तन, आवर्तन र डिस्पर्सन गर्दछ। फलस्वरुप आकाशमा एउटा सप्तरङ्गी अर्धवृताकार प्रकाशीय आकृति उत्पन्न हुन्छ। यो आकृतिलाई नै इन्द्रेणी भनिन्छ। इन्द्रेणी देखिनुको कारण वायुमण्डलमा पानीका कणहरु हुनु नै हो। वर्षा, झरनाबाट उछिट्टिएको पानी, शीत, कुहिरो आदिको इन्द्रेणी देखिने प्रक्रियामा महत्त्वपूर्ण भूमिका हुन्छ। इन्द्रेणीमा सात रंगहरु रातो, सुन्तला, पहेंलो, हरियो, आकाशे निलो, गाढा निलो र बैजनी रंग क्रमैसँग देखिन्छ। यसमा सबैभन्दा माथिल्लो छेउमा रातो रंग र अर्को छेउमा बैजनी रंग देखिन्छ। इन्द्रेणी पूर्ण वृत्ताकार समेत हुन सक्ने भए पनि साधरण अवलोकनकर्ताले जमिन माथि बनेको आधा भाग मात्र देख्न सकिन्छ । +इन्द्रेणी देखिनुको कारण वायुमण्डलमा पानीका कणहरु हुनु नै हो। वर्षा, झरनाबाट उछिट्टिएको पानी, शीत, कुहिरो आदिको इन्द्रेणी देखिने प्रक्रियामा महत्त्वपूर्ण भूमिका हुन्छ। +इन्द्रेणीमा सात रंगहरु रातो, सुन्तला, पहेंलो, हरियो, आकाशे निलो, गाढा निलो र बैजनी रंग क्रमैसँग देखिन्छ। यसमा सबैभन्दा माथिल्लो छेउमा रातो रंग र अर्को छेउमा बैजनी रंग देखिन्छ। +इन्द्रेणी पूर्ण वृत्ताकार समेत हुन सक्ने भए पनि साधरण अवलोकनकर्ताले जमिन माथि बनेको आधा भाग मात्र देख्न सकिन्छ । diff --git a/piper/piper/etc/test_sentences/nl.txt b/piper/piper/etc/test_sentences/nl.txt new file mode 100644 index 0000000..cc3d499 --- /dev/null +++ b/piper/piper/etc/test_sentences/nl.txt @@ -0,0 +1,6 @@ +Een regenboog is een gekleurde cirkelboog die aan de hemel waargenomen kan worden als de, laagstaande, zon tegen een nevel van waterdruppeltjes aan schijnt en de zon zich achter de waarnemer bevindt. +Het is een optisch effect dat wordt veroorzaakt door de breking en weerspiegeling van licht in de waterdruppels. +Het middelpunt van de boog staat gezien vanuit de waarnemer lijnrecht tegenover de zon, en bevindt zich dus altijd onder de horizon. +Waarnemer en boog vormen samen een denkbeeldige kegel met de waarnemer op de punt van de kegel en de regenboog langs de boogrand van het grondvlak van de kegel. +De boog heeft binnen de kegel een halve tophoek van ongeveer 42 graden; de breedte van de kleurenband van rood tot violet is circa 2 graden. +Pa’s wijze lynx bezag vroom het fikse aquaduct. diff --git a/piper/piper/etc/test_sentences/no.txt b/piper/piper/etc/test_sentences/no.txt new file mode 100644 index 0000000..c6b34ee --- /dev/null +++ b/piper/piper/etc/test_sentences/no.txt @@ -0,0 +1,6 @@ +Regnbuen eller regnbogen er et optisk fenomen som oppstår når solen skinner gjennom regndråper i atmosfæren og betrakteren står med solen i ryggen. +Gulhvitt sollys består av alle synlige bølgelengder av lys. +Lysbrytningen er forskjellig avhengig av bølgelengden slik at sollyset spaltes til et spektrum av rødt ytterst og deretter oransje, gult, grønt, blått, indigo (blålilla) og fiolett. +En fullstendig regnbue har en tydelig hovedregnbue (primærbue) innerst og en svakere regnbue (sekundærbue) ytterst der fargene ligger i omvendt rekkefølge. +Vår sære Zulu fra badeøya spilte jo whist og quickstep i min taxi. +Høvdingens kjære squaw får litt pizza i Mexico by. diff --git a/piper/piper/etc/test_sentences/pl.txt b/piper/piper/etc/test_sentences/pl.txt new file mode 100644 index 0000000..17e0fbf --- /dev/null +++ b/piper/piper/etc/test_sentences/pl.txt @@ -0,0 +1,6 @@ +Tęcza, zjawisko optyczne i meteorologiczne, występujące w postaci charakterystycznego wielobarwnego łuku powstającego w wyniku rozszczepienia światła widzialnego, zwykle promieniowania słonecznego, załamującego się i odbijającego wewnątrz licznych kropli wody mających kształt zbliżony do kulistego. +Rozszczepienie światła jest wynikiem zjawiska dyspersji, powodującego różnice w kącie załamania światła o różnej długości fali przy przejściu z powietrza do wody i z wody do powietrza. +Jeżu klątw, spłódź Finom część gry hańb. +Pójdźże, kiń tę chmurność w głąb flaszy. +Mężny bądź, chroń pułk twój i sześć flag. +Filmuj rzeź żądań, pość, gnęb chłystków. diff --git a/piper/piper/etc/test_sentences/pt.txt b/piper/piper/etc/test_sentences/pt.txt new file mode 100644 index 0000000..d9bb377 --- /dev/null +++ b/piper/piper/etc/test_sentences/pt.txt @@ -0,0 +1,8 @@ +Um arco-íris, também popularmente denominado arco-da-velha, é um fenômeno óptico e meteorológico que separa a luz do sol em seu espectro contínuo quando o sol brilha sobre gotículas de água suspensas no ar. +É um arco multicolorido com o vermelho em seu exterior e o violeta em seu interior. +Por ser um espectro de dispersão da luz branca, o arco-íris contém uma quantidade infinita de cores sem qualquer delimitação entre elas. +Devido à necessidade humana de classificação dos fenômenos da natureza, a capacidade finita de distinção de cores pela visão humana e por questões didáticas, o arco-íris é mais conhecido por uma simplificação criada culturalmente que resume o espectro em sete cores na seguinte ordem: vermelho, laranja, amarelo, verde, azul, anil e violeta. +Tal simplificação foi proposta primeiramente por Isaac Newton, que decidiu nomear apenas cinco cores e depois adicionou mais duas apenas para fazer analogia com as sete notas musicais, os sete dias da semana e os sete objetos do sistema solar conhecidos à época. +Para informações sobre o espectro de cores do arco-íris, veja também o artigo sobre cores. +Luís argüia à Júlia que «brações, fé, chá, óxido, pôr, zângão» eram palavras do português. +À noite, vovô Kowalsky vê o ímã cair no pé do pingüim queixoso e vovó põe açúcar no chá de tâmaras do jabuti feliz. diff --git a/piper/piper/etc/test_sentences/ro.txt b/piper/piper/etc/test_sentences/ro.txt new file mode 100644 index 0000000..5044be4 --- /dev/null +++ b/piper/piper/etc/test_sentences/ro.txt @@ -0,0 +1,4 @@ +Curcubeul este un fenomen optic și meteorologic atmosferic care se manifestă prin apariția pe cer a unui spectru de forma unui arc colorat atunci când lumina soarelui se refractă în picăturile de apă din atmosferă. +De cele mai multe ori curcubeul se observă după ploaie, când soarele este apropiat de orizont. +În condiții bune de lumină, în fața peretelui de ploaie, un curcubeu secundar este vizibil deasupra curcubeului principal. +Acesta este mai slab din cauza dublei reflexii a luminii în picăturile de apă și are o secvență de culori opusă. diff --git a/piper/piper/etc/test_sentences/ru.txt b/piper/piper/etc/test_sentences/ru.txt new file mode 100644 index 0000000..8f29717 --- /dev/null +++ b/piper/piper/etc/test_sentences/ru.txt @@ -0,0 +1,6 @@ +Радуга, атмосферное, оптическое и метеорологическое явление, наблюдаемое при освещении ярким источником света множества водяных капель. +Радуга выглядит как разноцветная дуга или окружность, составленная из цветов спектра видимого излучения. +Это те семь цветов, которые принято выделять в радуге в русской культуре, но следует иметь в виду, что на самом деле спектр непрерывен, и его цвета плавно переходят друг в друга через множество промежуточных оттенков. +Широкая электрификация южных губерний даст мощный толчок подъёму сельского хозяйства. +Разъяренный чтец эгоистично бьёт пятью жердями шустрого фехтовальщика. +В чащах юга жил бы цитрус? Да, но фальшивый экземпляр! diff --git a/piper/piper/etc/test_sentences/sk.txt b/piper/piper/etc/test_sentences/sk.txt new file mode 100644 index 0000000..d62a6b8 --- /dev/null +++ b/piper/piper/etc/test_sentences/sk.txt @@ -0,0 +1,7 @@ +Dúha je optický úkaz vznikajúci v atmosfére Zeme. +Vznik dúhy je spôsobený disperziou slnečného svetla prechádzajúceho kvapkou. +Predpokladom pre vznik dúhy je prítomnosť vodných kvapiek v atmosfére a Slnka, ktorého svetlo cez kvapky môže prechádzať. +Pretože voda má väčší index lomu ako vzduch, svetlo sa na ich rozhraní láme. +Uhol lomu je rôzny pre rôzne vlnové dĺžky svetla a teda svetlo sa rozkladá na jednotlivé farebné zložky, ktoré sa odrážajú na vnútornej stene a kvapku opúšťajú pod rôznymi uhlami s najväčšou intenzitou svetla pri uhloch okolo 40° – 42°. +Pri výške slnka nad 42° sa nedá pozorovať. +Modré svetlo kratšia vlnová dĺžka sa láme pod väčším uhlom ako červené svetlo, ale pretože oblasť zadnej strany kvapky má ohnisko vnútri kvapky, spektrum samo prechádza, a preto sa červené svetlo zobrazí vyššie na oblohe a vytvára vonkajšiu farbu dúhy. diff --git a/piper/piper/etc/test_sentences/sl.txt b/piper/piper/etc/test_sentences/sl.txt new file mode 100644 index 0000000..6fecdac --- /dev/null +++ b/piper/piper/etc/test_sentences/sl.txt @@ -0,0 +1,4 @@ +Mavrica je svetlobni pojav v ozračju, ki ga vidimo v obliki loka spektralnih barv. +Nastane zaradi loma, disperzije in odboja sončnih žarkov v vodnih kapljicah v zraku. +Mavrica, ki nastane zaradi sončnih žarkov, se vedno pojavi na nasprotni strani od Sonca, tako da ima opazovalec Sonce vedno za hrbtom. +Mavrico vidimo kot polkrožni lok ali kot poln krog, odvisno od lege Sonca in opazovalca. diff --git a/piper/piper/etc/test_sentences/sr.txt b/piper/piper/etc/test_sentences/sr.txt new file mode 100644 index 0000000..c60df91 --- /dev/null +++ b/piper/piper/etc/test_sentences/sr.txt @@ -0,0 +1,8 @@ +Дуга је оптичка и метеоролошка појава који се појављује на небу, када се сунчеви зраци преламају кроз ситне водене капи, најчешће након кише. +Дуга се обично види на застору кишних капи када посматрач стоји окренут леђима Сунцу и гледа у смеру тога застора. +Зраци светлости се тада разлажу на своје основне компоненте, стварајући оптичку представу у виду траке различитих боја, што у ствари представља спектар светлости. +Унутрашња-примарна дуга настаје када се сунчев зрак једном преломи са полеђине капљице. +Плава светлост се прелама под већим углом него црвена светлост, али због рефлексије са полеђине капи, плава светлост излази под мањим углом од црвене. +Зато је плава боја са унутрашње стране, а црвена са спољашње стране примарне дуге. +Спољашња-секундарна дуга настаје када се сунчев зрак двоструко преломи са полеђине капљице. +Плава светлост се прелама под већим углом па је стога она са спољашње стране, а црвена са унутрашње стране секундарне дуге. diff --git a/piper/piper/etc/test_sentences/sv.txt b/piper/piper/etc/test_sentences/sv.txt new file mode 100644 index 0000000..a533b82 --- /dev/null +++ b/piper/piper/etc/test_sentences/sv.txt @@ -0,0 +1,2 @@ +En regnbåge är ett optiskt, meteorologiskt fenomen som uppträder som ett fullständigt ljusspektrum i form av en båge på himlen då solen lyser på nedfallande regn. +Regnbågen består färgmässigt av en kontinuerlig övergång från rött via gula, gröna och blå nyanser till violett innerst; ofta definieras antalet färger som sju, inklusive orange och indigo. diff --git a/piper/piper/etc/test_sentences/sw.txt b/piper/piper/etc/test_sentences/sw.txt new file mode 100644 index 0000000..4d95227 --- /dev/null +++ b/piper/piper/etc/test_sentences/sw.txt @@ -0,0 +1,6 @@ +Upinde wa mvua ni tao la rangi mbalimbali angani ambalo linaweza kuonekana wakati Jua huangaza kupitia matone ya mvua inayoanguka. +Mfano wa rangi hizo huanza na nyekundu nje na hubadilika kupitia rangi ya chungwa, njano, kijani, bluu, na urujuani ndani. +Rangi hizi na ufuatano ni sehemu ya spektra ya nuru. +Upinde wa mvua huundwa wakati mwanga umepinda ukiingia matone ya maji, umegawanyika kuwa rangi tofauti, na kurudishwa nyuma. +Hapa spektra ya nuru inayoonekana ambayo sisi tunaona kwa macho kama nyeupe tu. +Gari langu linaloangama limejaa na mikunga. diff --git a/piper/piper/etc/test_sentences/test_ar.jsonl b/piper/piper/etc/test_sentences/test_ar.jsonl new file mode 100644 index 0000000..f985622 --- /dev/null +++ b/piper/piper/etc/test_sentences/test_ar.jsonl @@ -0,0 +1,5 @@ +{"phoneme_ids":[1,0,29,0,120,0,14,0,33,0,31,0,121,0,33,0,3,0,29,0,120,0,33,0,38,0,14,0,43,0,8,0,3,0,22,0,120,0,33,0,31,0,14,0,25,0,25,0,121,0,14,0,122,0,3,0,23,0,14,0,41,0,121,0,14,0,24,0,21,0,23,0,121,0,14,0,11,0,3,0,29,0,120,0,14,0,33,0,31,0,121,0,33,0,3,0,14,0,24,0,25,0,120,0,14,0,32,0,142,0,14,0,10,0,30,0,121,0,21,0,3,0,109,0,120,0,14,0,33,0,3,0,29,0,120,0,14,0,33,0,31,0,121,0,33,0,3,0,14,0,24,0,109,0,120,0,14,0,24,0,35,0,14,0,122,0,26,0,121,0,21,0,8,0,3,0,35,0,120,0,14,0,20,0,33,0,122,0,121,0,14,0,3,0,41,0,14,0,10,0,122,0,20,0,120,0,21,0,30,0,14,0,32,0,121,0,33,0,26,0,3,0,32,0,142,0,121,0,14,0,10,0,15,0,21,0,122,0,110,0,120,0,21,0,122,0,14,0,32,0,121,0,33,0,26,0,3,0,19,0,21,0,38,0,22,0,14,0,122,0,109,0,120,0,21,0,122,0,14,0,32,0,121,0,33,0,26,0,3,0,26,0,14,0,122,0,32,0,120,0,21,0,17,0,108,0,14,0,32,0,121,0,33,0,26,0,3,0,110,0,120,0,14,0,26,0,21,0,3,0,14,0,26,0,23,0,120,0,21,0,31,0,14,0,122,0,30,0,121,0,21,0,3,0,35,0,121,0,14,0,32,0,14,0,43,0,120,0,14,0,24,0,24,0,33,0,24,0,121,0,21,0,3,0,17,0,146,0,120,0,14,0,10,0,33,0,10,0,109,0,121,0,21,0,3,0,109,0,14,0,96,0,96,0,120,0,14,0,25,0,31,0,21,0,3,0,127,0,120,0,21,0,24,0,14,0,122,0,24,0,121,0,14,0,3,0,29,0,120,0,14,0,32,0,142,0,30,0,14,0,32,0,121,0,21,0,3,0,25,0,120,0,14,0,122,0,109,0,21,0,3,0,14,0,24,0,25,0,120,0,14,0,32,0,142,0,14,0,10,0,30,0,121,0,21,0,10,0,2],"phonemes":["q","ˈ","a","u","s","ˌ","u"," ","q","ˈ","u","z","a","ħ",","," ","j","ˈ","u","s","a","m","m","ˌ","a","ː"," ","k","a","ð","ˌ","a","l","i","k","ˌ","a",":"," ","q","ˈ","a","u","s","ˌ","u"," ","a","l","m","ˈ","a","t","̪","a",".","r","ˌ","i"," ","ʔ","ˈ","a","u"," ","q","ˈ","a","u","s","ˌ","u"," ","a","l","ʔ","ˈ","a","l","w","a","ː","n","ˌ","i",","," ","w","ˈ","a","h","u","ː","ˌ","a"," ","ð","a",".","ː","h","ˈ","i","r","a","t","ˌ","u","n"," ","t","̪","ˌ","a",".","b","i","ː","ʕ","ˈ","i","ː","a","t","ˌ","u","n"," ","f","i","z","j","a","ː","ʔ","ˈ","i","ː","a","t","ˌ","u","n"," ","n","a","ː","t","ˈ","i","d","ʒ","a","t","ˌ","u","n"," ","ʕ","ˈ","a","n","i"," ","a","n","k","ˈ","i","s","a","ː","r","ˌ","i"," ","w","ˌ","a","t","a","ħ","ˈ","a","l","l","u","l","ˌ","i"," ","d","ˤ","ˈ","a",".","u",".","ʔ","ˌ","i"," ","ʔ","a","ʃ","ʃ","ˈ","a","m","s","i"," ","χ","ˈ","i","l","a","ː","l","ˌ","a"," ","q","ˈ","a","t","̪","r","a","t","ˌ","i"," ","m","ˈ","a","ː","ʔ","i"," ","a","l","m","ˈ","a","t","̪","a",".","r","ˌ","i","."],"processed_text":"قَوْسُ قُزَحْ، يُسَمَّى كَذَلِكَ: قَوْسُ الْمَطَرِ أَوْ قَوْسُ الْأَلْوَانِ، وَهُوَ ظَاهِرَةٌ طَبِيعِيَّةٌ فِزْيَائِيَّةٌ نَاتِجَةٌ عَنِ انْكِسَارِ وَتَحَلُّلِ ضَوْءِ الشَّمْسِ خِلالَ قَطْرَةِ مَاءِ الْمَطَرِ.","text":"قَوْسُ قُزَحْ، يُسَمَّى كَذَلِكَ: قَوْسُ الْمَطَرِ أَوْ قَوْسُ الْأَلْوَانِ، وَهُوَ ظَاهِرَةٌ طَبِيعِيَّةٌ فِزْيَائِيَّةٌ نَاتِجَةٌ عَنِ انْكِسَارِ وَتَحَلُّلِ ضَوْءِ الشَّمْسِ خِلالَ قَطْرَةِ مَاءِ الْمَطَرِ."} +{"phoneme_ids":[1,0,22,0,120,0,14,0,41,0,20,0,14,0,30,0,121,0,33,0,3,0,29,0,120,0,14,0,33,0,31,0,121,0,33,0,3,0,14,0,24,0,25,0,120,0,14,0,32,0,142,0,14,0,10,0,30,0,121,0,21,0,3,0,15,0,14,0,110,0,17,0,121,0,14,0,3,0,31,0,33,0,29,0,121,0,33,0,122,0,32,0,142,0,21,0,10,0,3,0,14,0,24,0,25,0,120,0,14,0,32,0,142,0,14,0,10,0,30,0,121,0,21,0,3,0,109,0,120,0,14,0,33,0,3,0,127,0,120,0,21,0,24,0,14,0,122,0,24,0,121,0,14,0,3,0,31,0,33,0,29,0,121,0,33,0,122,0,32,0,142,0,21,0,10,0,3,0,14,0,24,0,25,0,120,0,14,0,32,0,142,0,14,0,10,0,30,0,121,0,21,0,3,0,35,0,14,0,96,0,96,0,120,0,14,0,25,0,31,0,33,0,3,0,25,0,33,0,96,0,30,0,120,0,21,0,29,0,14,0,32,0,121,0,33,0,26,0,10,0,2],"phonemes":["j","ˈ","a","ð","h","a","r","ˌ","u"," ","q","ˈ","a","u","s","ˌ","u"," ","a","l","m","ˈ","a","t","̪","a",".","r","ˌ","i"," ","b","a","ʕ","d","ˌ","a"," ","s","u","q","ˌ","u","ː","t","̪","i","."," ","a","l","m","ˈ","a","t","̪","a",".","r","ˌ","i"," ","ʔ","ˈ","a","u"," ","χ","ˈ","i","l","a","ː","l","ˌ","a"," ","s","u","q","ˌ","u","ː","t","̪","i","."," ","a","l","m","ˈ","a","t","̪","a",".","r","ˌ","i"," ","w","a","ʃ","ʃ","ˈ","a","m","s","u"," ","m","u","ʃ","r","ˈ","i","q","a","t","ˌ","u","n","."],"processed_text":" يَظْهَرُ قَوْسُ الْمَطَرِ بَعْدَ سُقُوطِ الْمَطَرِ أَوْ خِلالَ سُقُوطِ الْمَطَرِ وَالشَّمْسُ مُشْرِقَةٌ.","text":" يَظْهَرُ قَوْسُ الْمَطَرِ بَعْدَ سُقُوطِ الْمَطَرِ أَوْ خِلالَ سُقُوطِ الْمَطَرِ وَالشَّمْسُ مُشْرِقَةٌ."} +{"phoneme_ids":[1,0,32,0,120,0,14,0,23,0,33,0,122,0,26,0,121,0,33,0,3,0,14,0,24,0,109,0,120,0,14,0,24,0,35,0,14,0,122,0,26,0,121,0,33,0,3,0,19,0,21,0,122,0,3,0,14,0,24,0,29,0,120,0,14,0,33,0,31,0,121,0,21,0,11,0,3,0,109,0,14,0,24,0,24,0,24,0,120,0,14,0,33,0,26,0,121,0,14,0,3,0,14,0,24,0,109,0,120,0,14,0,43,0,25,0,14,0,30,0,121,0,14,0,3,0,25,0,120,0,21,0,26,0,14,0,3,0,14,0,24,0,127,0,120,0,14,0,122,0,30,0,21,0,17,0,108,0,121,0,21,0,3,0,35,0,121,0,14,0,21,0,121,0,14,0,32,0,14,0,17,0,120,0,14,0,30,0,30,0,14,0,17,0,108,0,121,0,33,0,3,0,109,0,120,0,21,0,24,0,14,0,122,0,3,0,14,0,24,0,15,0,121,0,33,0,30,0,32,0,33,0,29,0,120,0,14,0,122,0,24,0,21,0,122,0,121,0,21,0,3,0,19,0,14,0,24,0,109,0,120,0,14,0,31,0,142,0,19,0,14,0,30,0,121,0,33,0,3,0,19,0,14,0,24,0,109,0,120,0,14,0,127,0,17,0,146,0,14,0,10,0,30,0,121,0,33,0,3,0,19,0,14,0,24,0,109,0,120,0,14,0,38,0,30,0,14,0,29,0,121,0,33,0,3,0,19,0,14,0,109,0,121,0,14,0,38,0,30,0,14,0,29,0,121,0,14,0,3,0,68,0,120,0,14,0,122,0,25,0,21,0,29,0,121,0,33,0,26,0,3,0,26,0,120,0,21,0,122,0,24,0,21,0,122,0,121,0,33,0,26,0,3,0,19,0,14,0,15,0,121,0,14,0,26,0,14,0,19,0,31,0,121,0,14,0,17,0,108,0,21,0,122,0,121,0,33,0,26,0,3,0,25,0,120,0,21,0,26,0,14,0,3,0,109,0,14,0,17,0,17,0,122,0,120,0,14,0,122,0,127,0,21,0,24,0,121,0,21,0,10,0,2],"phonemes":["t","ˈ","a","k","u","ː","n","ˌ","u"," ","a","l","ʔ","ˈ","a","l","w","a","ː","n","ˌ","u"," ","f","i","ː"," ","a","l","q","ˈ","a","u","s","ˌ","i",":"," ","ʔ","a","l","l","l","ˈ","a","u","n","ˌ","a"," ","a","l","ʔ","ˈ","a","ħ","m","a","r","ˌ","a"," ","m","ˈ","i","n","a"," ","a","l","χ","ˈ","a","ː","r","i","d","ʒ","ˌ","i"," ","w","ˌ","a","i","ˌ","a","t","a","d","ˈ","a","r","r","a","d","ʒ","ˌ","u"," ","ʔ","ˈ","i","l","a","ː"," ","a","l","b","ˌ","u","r","t","u","q","ˈ","a","ː","l","i","ː","ˌ","i"," ","f","a","l","ʔ","ˈ","a","s","̪","f","a","r","ˌ","u"," ","f","a","l","ʔ","ˈ","a","χ","d","ˤ","a",".","r","ˌ","u"," ","f","a","l","ʔ","ˈ","a","z","r","a","q","ˌ","u"," ","f","a","ʔ","ˌ","a","z","r","a","q","ˌ","a"," ","ɣ","ˈ","a","ː","m","i","q","ˌ","u","n"," ","n","ˈ","i","ː","l","i","ː","ˌ","u","n"," ","f","a","b","ˌ","a","n","a","f","s","ˌ","a","d","ʒ","i","ː","ˌ","u","n"," ","m","ˈ","i","n","a"," ","ʔ","a","d","d","ː","ˈ","a","ː","χ","i","l","ˌ","i","."],"processed_text":" تَكُونُ الْأَلْوَانُ فِي الْقَوْسِ: اللَّوْنَ الْأَحْمَرَ مِنَ الْخَارِجِ وَيَتَدَرَّجُ إِلَى الْبُرْتُقَالِيِّ فَالْأَصْفَرُ فَالْأَخْضَرُ فَالْأَزْرَقُ فَأَزْرَقَ غَامِقٌ (نِيْلِيٌّ) فَبَنَفْسَجِيٌّ مِنَ الدَّاخِلِ.","text":" تَكُونُ الْأَلْوَانُ فِي الْقَوْسِ: اللَّوْنَ الْأَحْمَرَ مِنَ الْخَارِجِ وَيَتَدَرَّجُ إِلَى الْبُرْتُقَالِيِّ فَالْأَصْفَرُ فَالْأَخْضَرُ فَالْأَزْرَقُ فَأَزْرَقَ غَامِقٌ (نِيْلِيٌّ) فَبَنَفْسَجِيٌّ مِنَ الدَّاخِلِ."} +{"phoneme_ids":[1,0,17,0,146,0,120,0,14,0,10,0,33,0,10,0,109,0,121,0,33,0,3,0,109,0,14,0,96,0,96,0,120,0,14,0,25,0,31,0,21,0,3,0,22,0,14,0,43,0,32,0,120,0,14,0,33,0,121,0,21,0,122,0,3,0,110,0,120,0,14,0,24,0,14,0,122,0,3,0,14,0,24,0,110,0,120,0,14,0,17,0,21,0,122,0,17,0,121,0,21,0,3,0,25,0,120,0,21,0,26,0,14,0,3,0,14,0,24,0,109,0,120,0,14,0,24,0,35,0,14,0,122,0,26,0,121,0,21,0,3,0,109,0,14,0,32,0,142,0,122,0,121,0,14,0,10,0,21,0,10,0,19,0,120,0,21,0,122,0,14,0,32,0,121,0,21,0,3,0,35,0,120,0,14,0,20,0,21,0,122,0,121,0,14,0,3,0,110,0,21,0,15,0,120,0,14,0,122,0,30,0,14,0,32,0,121,0,33,0,26,0,3,0,110,0,120,0,14,0,26,0,3,0,109,0,14,0,96,0,120,0,21,0,110,0,14,0,32,0,121,0,21,0,26,0,3,0,41,0,120,0,14,0,122,0,32,0,21,0,3,0,109,0,120,0,14,0,32,0,142,0,35,0,14,0,122,0,24,0,121,0,21,0,26,0,3,0,25,0,33,0,122,0,17,0,108,0,120,0,21,0,122,0,14,0,32,0,121,0,21,0,26,0,3,0,25,0,121,0,33,0,127,0,32,0,14,0,24,0,120,0,21,0,19,0,14,0,32,0,121,0,21,0,26,0,8,0,3,0,22,0,120,0,14,0,41,0,20,0,14,0,30,0,121,0,33,0,3,0,29,0,120,0,14,0,33,0,31,0,121,0,33,0,3,0,14,0,24,0,29,0,120,0,33,0,38,0,14,0,43,0,121,0,21,0,3,0,110,0,120,0,14,0,122,0,17,0,14,0,32,0,121,0,14,0,26,0,3,0,15,0,21,0,96,0,121,0,14,0,23,0,24,0,21,0,26,0,3,0,26,0,120,0,21,0,31,0,142,0,19,0,21,0,3,0,17,0,14,0,122,0,109,0,120,0,21,0,30,0,21,0,122,0,121,0,21,0,26,0,3,0,35,0,120,0,14,0,19,0,21,0,122,0,3,0,43,0,120,0,14,0,122,0,24,0,14,0,122,0,32,0,121,0,21,0,26,0,3,0,26,0,14,0,122,0,17,0,120,0,21,0,30,0,14,0,32,0,121,0,21,0,26,0,3,0,22,0,120,0,14,0,23,0,33,0,122,0,26,0,121,0,33,0,3,0,29,0,14,0,25,0,120,0,14,0,30,0,21,0,122,0,121,0,14,0,26,0,3,0,43,0,120,0,14,0,21,0,126,0,121,0,33,0,3,0,22,0,120,0,14,0,23,0,33,0,122,0,26,0,121,0,33,0,3,0,109,0,21,0,26,0,23,0,120,0,21,0,31,0,14,0,122,0,30,0,121,0,33,0,3,0,17,0,146,0,120,0,14,0,10,0,33,0,10,0,109,0,121,0,21,0,3,0,14,0,24,0,29,0,120,0,14,0,25,0,14,0,30,0,121,0,21,0,3,0,14,0,24,0,25,0,33,0,31,0,120,0,14,0,15,0,122,0,21,0,15,0,121,0,21,0,3,0,24,0,14,0,20,0,121,0,33,0,3,0,110,0,120,0,14,0,15,0,30,0,14,0,3,0,29,0,120,0,14,0,32,0,142,0,30,0,14,0,32,0,121,0,21,0,3,0,14,0,24,0,25,0,120,0,14,0,122,0,109,0,21,0,3,0,25,0,33,0,24,0,120,0,14,0,122,0,109,0,21,0,25,0,121,0,14,0,26,0,3,0,25,0,120,0,14,0,110,0,14,0,3,0,25,0,120,0,14,0,23,0,14,0,122,0,26,0,121,0,21,0,3,0,35,0,120,0,33,0,17,0,108,0,33,0,122,0,17,0,121,0,21,0,3,0,14,0,24,0,29,0,120,0,14,0,25,0,14,0,30,0,121,0,21,0,3,0,19,0,21,0,122,0,3,0,32,0,120,0,21,0,24,0,23,0,14,0,3,0,109,0,14,0,24,0,24,0,24,0,14,0,43,0,120,0,14,0,41,0,14,0,10,0,122,0,32,0,121,0,21,0,10,0,2],"phonemes":["d","ˤ","ˈ","a",".","u",".","ʔ","ˌ","u"," ","ʔ","a","ʃ","ʃ","ˈ","a","m","s","i"," ","j","a","ħ","t","ˈ","a","u","ˌ","i","ː"," ","ʕ","ˈ","a","l","a","ː"," ","a","l","ʕ","ˈ","a","d","i","ː","d","ˌ","i"," ","m","ˈ","i","n","a"," ","a","l","ʔ","ˈ","a","l","w","a","ː","n","ˌ","i"," ","ʔ","a","t","̪","ː","ˌ","a",".","i",".","f","ˈ","i","ː","a","t","ˌ","i"," ","w","ˈ","a","h","i","ː","ˌ","a"," ","ʕ","i","b","ˈ","a","ː","r","a","t","ˌ","u","n"," ","ʕ","ˈ","a","n"," ","ʔ","a","ʃ","ˈ","i","ʕ","a","t","ˌ","i","n"," ","ð","ˈ","a","ː","t","i"," ","ʔ","ˈ","a","t","̪","w","a","ː","l","ˌ","i","n"," ","m","u","ː","d","ʒ","ˈ","i","ː","a","t","ˌ","i","n"," ","m","ˌ","u","χ","t","a","l","ˈ","i","f","a","t","ˌ","i","n",","," ","j","ˈ","a","ð","h","a","r","ˌ","u"," ","q","ˈ","a","u","s","ˌ","u"," ","a","l","q","ˈ","u","z","a","ħ","ˌ","i"," ","ʕ","ˈ","a","ː","d","a","t","ˌ","a","n"," ","b","i","ʃ","ˌ","a","k","l","i","n"," ","n","ˈ","i","s","̪","f","i"," ","d","a","ː","ʔ","ˈ","i","r","i","ː","ˌ","i","n"," ","w","ˈ","a","f","i","ː"," ","ħ","ˈ","a","ː","l","a","ː","t","ˌ","i","n"," ","n","a","ː","d","ˈ","i","r","a","t","ˌ","i","n"," ","j","ˈ","a","k","u","ː","n","ˌ","u"," ","q","a","m","ˈ","a","r","i","ː","ˌ","a","n"," ","ħ","ˈ","a","i","θ","ˌ","u"," ","j","ˈ","a","k","u","ː","n","ˌ","u"," ","ʔ","i","n","k","ˈ","i","s","a","ː","r","ˌ","u"," ","d","ˤ","ˈ","a",".","u",".","ʔ","ˌ","i"," ","a","l","q","ˈ","a","m","a","r","ˌ","i"," ","a","l","m","u","s","ˈ","a","b","ː","i","b","ˌ","i"," ","l","a","h","ˌ","u"," ","ʕ","ˈ","a","b","r","a"," ","q","ˈ","a","t","̪","r","a","t","ˌ","i"," ","a","l","m","ˈ","a","ː","ʔ","i"," ","m","u","l","ˈ","a","ː","ʔ","i","m","ˌ","a","n"," ","m","ˈ","a","ʕ","a"," ","m","ˈ","a","k","a","ː","n","ˌ","i"," ","w","ˈ","u","d","ʒ","u","ː","d","ˌ","i"," ","a","l","q","ˈ","a","m","a","r","ˌ","i"," ","f","i","ː"," ","t","ˈ","i","l","k","a"," ","ʔ","a","l","l","l","a","ħ","ˈ","a","ð","a",".","ː","t","ˌ","i","."],"processed_text":" ضَوْءُ الشَّمْسِ يَحْتَوِي عَلَى الْعَدِيدِ مِنَ الْأَلْوَانِ الطَّيفِيَّةِ وَهِيَ عِبَارَةٌ عَنْ أَشِعَةٍ ذَاتِ أَطْوَالٍ مُوْجِيَةٍ مُخْتَلِفَةٍ، يَظْهَرُ قَوْسُ الْقُزَحِ عَادَةً بِشَكْلٍ نِصْفِ دَائِرِيٍّ وَفِي حَالَاتٍ نَادِرَةٍ يَكُونُ قَمَرِيًّا حَيْثُ يَكُونُ اِنْكِسَارُ ضَوْءِ الْقَمَرِ الْمُسَبِّبِ لَهُ عَبْرَ قَطْرَةِ الْمَاءِ مُلَائِمًا مَعَ مَكَانِ وُجُودِ الْقَمَرِ فِي تِلْكَ اللَّحَظَاتِ.","text":" ضَوْءُ الشَّمْسِ يَحْتَوِي عَلَى الْعَدِيدِ مِنَ الْأَلْوَانِ الطَّيفِيَّةِ وَهِيَ عِبَارَةٌ عَنْ أَشِعَةٍ ذَاتِ أَطْوَالٍ مُوْجِيَةٍ مُخْتَلِفَةٍ، يَظْهَرُ قَوْسُ الْقُزَحِ عَادَةً بِشَكْلٍ نِصْفِ دَائِرِيٍّ وَفِي حَالَاتٍ نَادِرَةٍ يَكُونُ قَمَرِيًّا حَيْثُ يَكُونُ اِنْكِسَارُ ضَوْءِ الْقَمَرِ الْمُسَبِّبِ لَهُ عَبْرَ قَطْرَةِ الْمَاءِ مُلَائِمًا مَعَ مَكَانِ وُجُودِ الْقَمَرِ فِي تِلْكَ اللَّحَظَاتِ."} +{"phoneme_ids":[1,0,35,0,121,0,14,0,21,0,120,0,14,0,41,0,20,0,14,0,30,0,121,0,33,0,3,0,24,0,21,0,24,0,25,0,121,0,33,0,96,0,14,0,122,0,20,0,121,0,21,0,17,0,21,0,3,0,26,0,14,0,32,0,120,0,21,0,122,0,17,0,108,0,14,0,32,0,121,0,14,0,26,0,3,0,24,0,21,0,17,0,146,0,121,0,14,0,10,0,33,0,10,0,109,0,121,0,21,0,20,0,21,0,3,0,14,0,24,0,127,0,120,0,14,0,122,0,19,0,21,0,32,0,3,0,109,0,120,0,14,0,15,0,22,0,14,0,17,0,146,0,121,0,14,0,10,0,3,0,24,0,21,0,109,0,121,0,14,0,26,0,26,0,14,0,3,0,14,0,24,0,110,0,120,0,14,0,21,0,26,0,121,0,14,0,3,0,14,0,24,0,15,0,121,0,14,0,96,0,14,0,30,0,120,0,21,0,122,0,14,0,32,0,121,0,14,0,3,0,24,0,14,0,122,0,3,0,32,0,14,0,31,0,32,0,120,0,14,0,32,0,142,0,21,0,10,0,122,0,110,0,121,0,33,0,3,0,109,0,120,0,14,0,26,0,3,0,32,0,120,0,14,0,30,0,14,0,122,0,3,0,14,0,24,0,109,0,120,0,14,0,24,0,35,0,14,0,122,0,26,0,121,0,14,0,3,0,19,0,21,0,122,0,3,0,109,0,14,0,24,0,24,0,24,0,120,0,14,0,21,0,24,0,121,0,21,0,10,0,2],"phonemes":["w","ˌ","a","i","ˈ","a","ð","h","a","r","ˌ","u"," ","l","i","l","m","ˌ","u","ʃ","a","ː","h","ˌ","i","d","i"," ","n","a","t","ˈ","i","ː","d","ʒ","a","t","ˌ","a","n"," ","l","i","d","ˤ","ˌ","a",".","u",".","ʔ","ˌ","i","h","i"," ","a","l","χ","ˈ","a","ː","f","i","t"," ","ʔ","ˈ","a","b","j","a","d","ˤ","ˌ","a","."," ","l","i","ʔ","ˌ","a","n","n","a"," ","a","l","ʕ","ˈ","a","i","n","ˌ","a"," ","a","l","b","ˌ","a","ʃ","a","r","ˈ","i","ː","a","t","ˌ","a"," ","l","a","ː"," ","t","a","s","t","ˈ","a","t","̪","i",".","ː","ʕ","ˌ","u"," ","ʔ","ˈ","a","n"," ","t","ˈ","a","r","a","ː"," ","a","l","ʔ","ˈ","a","l","w","a","ː","n","ˌ","a"," ","f","i","ː"," ","ʔ","a","l","l","l","ˈ","a","i","l","ˌ","i","."],"processed_text":" وَيَظْهَرُ لِلْمُشَاهِدِ نَتِيجَةً لِضَوْئِهِ الْخَافِتْ أَبْيَضَ لِأَنَّ الْعَيْنَ الْبَشَرِيَّةَ لَا تَسْتَطِيعُ أَنْ تَرَى الْأَلْوَانَ فِي اللَّيْلِ.","text":" وَيَظْهَرُ لِلْمُشَاهِدِ نَتِيجَةً لِضَوْئِهِ الْخَافِتْ أَبْيَضَ لِأَنَّ الْعَيْنَ الْبَشَرِيَّةَ لَا تَسْتَطِيعُ أَنْ تَرَى الْأَلْوَانَ فِي اللَّيْلِ."} diff --git a/piper/piper/etc/test_sentences/test_ca.jsonl b/piper/piper/etc/test_sentences/test_ca.jsonl new file mode 100644 index 0000000..d15a843 --- /dev/null +++ b/piper/piper/etc/test_sentences/test_ca.jsonl @@ -0,0 +1,6 @@ +{"phoneme_ids":[1,0,24,0,120,0,14,0,30,0,23,0,3,0,41,0,59,0,3,0,31,0,120,0,14,0,26,0,3,0,25,0,50,0,92,0,32,0,120,0,21,0,3,0,100,0,3,0,120,0,14,0,30,0,23,0,3,0,41,0,59,0,24,0,3,0,31,0,120,0,61,0,24,0,3,0,18,0,31,0,3,0,100,0,26,0,3,0,19,0,59,0,26,0,120,0,27,0,25,0,59,0,26,0,3,0,25,0,59,0,32,0,61,0,121,0,27,0,92,0,100,0,24,0,120,0,54,0,68,0,21,0,23,0,3,0,120,0,54,0,28,0,122,0,32,0,21,0,23,0,3,0,28,0,92,0,100,0,41,0,35,0,120,0,21,0,32,0,3,0,28,0,59,0,3,0,24,0,50,0,3,0,92,0,30,0,59,0,19,0,24,0,59,0,23,0,31,0,22,0,120,0,27,0,8,0,92,0,30,0,59,0,19,0,92,0,50,0,23,0,31,0,22,0,120,0,27,0,3,0,21,0,3,0,41,0,21,0,31,0,28,0,59,0,30,0,31,0,22,0,120,0,27,0,3,0,41,0,59,0,3,0,24,0,50,0,3,0,104,0,120,0,33,0,25,0,3,0,23,0,50,0,35,0,38,0,120,0,14,0,41,0,50,0,3,0,28,0,59,0,3,0,68,0,120,0,27,0,32,0,59,0,31,0,3,0,41,0,120,0,14,0,22,0,68,0,35,0,50,0,3,0,59,0,26,0,3,0,31,0,100,0,31,0,28,0,59,0,26,0,31,0,22,0,120,0,27,0,3,0,50,0,3,0,24,0,50,0,3,0,32,0,92,0,100,0,28,0,100,0,31,0,19,0,120,0,61,0,92,0,50,0,3,0,23,0,120,0,61,0,3,0,92,0,30,0,59,0,38,0,120,0,33,0,24,0,32,0,50,0,3,0,59,0,26,0,3,0,24,0,50,0,28,0,50,0,92,0,21,0,31,0,22,0,120,0,27,0,3,0,50,0,24,0,3,0,31,0,120,0,61,0,24,0,3,0,41,0,59,0,3,0,24,0,59,0,31,0,28,0,120,0,61,0,23,0,32,0,92,0,59,0,3,0,41,0,59,0,3,0,24,0,50,0,3,0,104,0,120,0,33,0,25,0,3,0,101,0,21,0,38,0,120,0,21,0,125,0,24,0,59,0,8,0,21,0,26,0,32,0,59,0,30,0,28,0,92,0,59,0,32,0,120,0,14,0,32,0,3,0,28,0,59,0,3,0,24,0,120,0,33,0,104,0,3,0,100,0,25,0,120,0,14,0,3,0,23,0,120,0,27,0,25,0,3,0,59,0,24,0,31,0,3,0,23,0,100,0,24,0,120,0,27,0,92,0,31,0,3,0,101,0,59,0,30,0,25,0,120,0,61,0,104,0,8,0,32,0,50,0,92,0,120,0,27,0,26,0,107,0,50,0,8,0,66,0,92,0,120,0,27,0,23,0,8,0,101,0,120,0,61,0,30,0,32,0,8,0,15,0,24,0,120,0,14,0,35,0,8,0,120,0,21,0,26,0,17,0,21,0,3,0,21,0,3,0,101,0,22,0,100,0,24,0,120,0,14,0,32,0,10,0,2],"phonemes":["l","ˈ","a","r","k"," ","ð","ə"," ","s","ˈ","a","n"," ","m","ɐ","ɾ","t","ˈ","i"," ","ʊ"," ","ˈ","a","r","k"," ","ð","ə","l"," ","s","ˈ","ɛ","l"," ","e","s"," ","ʊ","n"," ","f","ə","n","ˈ","o","m","ə","n"," ","m","ə","t","ɛ","ˌ","o","ɾ","ʊ","l","ˈ","ɔ","ɣ","i","k"," ","ˈ","ɔ","p","ː","t","i","k"," ","p","ɾ","ʊ","ð","w","ˈ","i","t"," ","p","ə"," ","l","ɐ"," ","ɾ","r","ə","f","l","ə","k","s","j","ˈ","o",",","ɾ","r","ə","f","ɾ","ɐ","k","s","j","ˈ","o"," ","i"," ","ð","i","s","p","ə","r","s","j","ˈ","o"," ","ð","ə"," ","l","ɐ"," ","ʎ","ˈ","u","m"," ","k","ɐ","w","z","ˈ","a","ð","ɐ"," ","p","ə"," ","ɣ","ˈ","o","t","ə","s"," ","ð","ˈ","a","j","ɣ","w","ɐ"," ","ə","n"," ","s","ʊ","s","p","ə","n","s","j","ˈ","o"," ","ɐ"," ","l","ɐ"," ","t","ɾ","ʊ","p","ʊ","s","f","ˈ","ɛ","ɾ","ɐ"," ","k","ˈ","ɛ"," ","ɾ","r","ə","z","ˈ","u","l","t","ɐ"," ","ə","n"," ","l","ɐ","p","ɐ","ɾ","i","s","j","ˈ","o"," ","ɐ","l"," ","s","ˈ","ɛ","l"," ","ð","ə"," ","l","ə","s","p","ˈ","ɛ","k","t","ɾ","ə"," ","ð","ə"," ","l","ɐ"," ","ʎ","ˈ","u","m"," ","ʋ","i","z","ˈ","i","β","l","ə",",","i","n","t","ə","r","p","ɾ","ə","t","ˈ","a","t"," ","p","ə"," ","l","ˈ","u","ʎ"," ","ʊ","m","ˈ","a"," ","k","ˈ","o","m"," ","ə","l","s"," ","k","ʊ","l","ˈ","o","ɾ","s"," ","ʋ","ə","r","m","ˈ","ɛ","ʎ",",","t","ɐ","ɾ","ˈ","o","n","ʑ","ɐ",",","ɡ","ɾ","ˈ","o","k",",","ʋ","ˈ","ɛ","r","t",",","b","l","ˈ","a","w",",","ˈ","i","n","d","i"," ","i"," ","ʋ","j","ʊ","l","ˈ","a","t","."],"processed_text":"L'arc de Sant Martí o arc del cel és un fenomen meteorològic òptic produït per la reflexió, refracció i dispersió de la llum causada per gotes d'aigua en suspensió a la troposfera que resulta en l'aparició al cel de l'espectre de la llum visible, interpretat per l'ull humà com els colors vermell, taronja, groc, verd, blau, indi i violat.","text":"L'arc de Sant Martí o arc del cel és un fenomen meteorològic òptic produït per la reflexió, refracció i dispersió de la llum causada per gotes d'aigua en suspensió a la troposfera que resulta en l'aparició al cel de l'espectre de la llum visible, interpretat per l'ull humà com els colors vermell, taronja, groc, verd, blau, indi i violat."} +{"phoneme_ids":[1,0,18,0,31,0,3,0,100,0,26,0,3,0,120,0,14,0,30,0,23,0,3,0,50,0,23,0,100,0,24,0,100,0,92,0,120,0,21,0,32,0,3,0,23,0,120,0,61,0,3,0,31,0,100,0,15,0,31,0,120,0,61,0,30,0,125,0,50,0,3,0,28,0,92,0,21,0,26,0,31,0,21,0,28,0,50,0,24,0,25,0,120,0,18,0,26,0,3,0,17,0,100,0,92,0,120,0,14,0,26,0,3,0,59,0,24,0,31,0,3,0,92,0,30,0,100,0,22,0,55,0,120,0,14,0,32,0,31,0,3,0,59,0,26,0,3,0,23,0,35,0,50,0,24,0,31,0,59,0,125,0,120,0,27,0,24,0,3,0,120,0,61,0,28,0,100,0,23,0,50,0,3,0,41,0,59,0,3,0,24,0,120,0,14,0,82,0,3,0,21,0,3,0,50,0,3,0,24,0,50,0,3,0,31,0,59,0,23,0,31,0,22,0,120,0,27,0,3,0,41,0,59,0,24,0,3,0,31,0,120,0,61,0,24,0,3,0,41,0,21,0,92,0,59,0,23,0,32,0,50,0,25,0,120,0,18,0,26,0,3,0,100,0,28,0,100,0,38,0,120,0,14,0,41,0,50,0,3,0,50,0,24,0,3,0,31,0,120,0,27,0,24,0,3,0,28,0,59,0,3,0,24,0,59,0,31,0,28,0,59,0,23,0,32,0,50,0,41,0,120,0,27,0,92,0,8,0,23,0,35,0,120,0,14,0,26,0,3,0,28,0,24,0,120,0,54,0,35,0,3,0,21,0,3,0,19,0,120,0,14,0,3,0,31,0,120,0,27,0,24,0,3,0,50,0,24,0,3,0,25,0,50,0,32,0,120,0,61,0,22,0,55,0,3,0,32,0,120,0,61,0,25,0,31,0,10,0,2],"phonemes":["e","s"," ","ʊ","n"," ","ˈ","a","r","k"," ","ɐ","k","ʊ","l","ʊ","ɾ","ˈ","i","t"," ","k","ˈ","ɛ"," ","s","ʊ","b","s","ˈ","ɛ","r","β","ɐ"," ","p","ɾ","i","n","s","i","p","ɐ","l","m","ˈ","e","n"," ","d","ʊ","ɾ","ˈ","a","n"," ","ə","l","s"," ","ɾ","r","ʊ","j","ɕ","ˈ","a","t","s"," ","ə","n"," ","k","w","ɐ","l","s","ə","β","ˈ","o","l"," ","ˈ","ɛ","p","ʊ","k","ɐ"," ","ð","ə"," ","l","ˈ","a","ɲ"," ","i"," ","ɐ"," ","l","ɐ"," ","s","ə","k","s","j","ˈ","o"," ","ð","ə","l"," ","s","ˈ","ɛ","l"," ","ð","i","ɾ","ə","k","t","ɐ","m","ˈ","e","n"," ","ʊ","p","ʊ","z","ˈ","a","ð","ɐ"," ","ɐ","l"," ","s","ˈ","o","l"," ","p","ə"," ","l","ə","s","p","ə","k","t","ɐ","ð","ˈ","o","ɾ",",","k","w","ˈ","a","n"," ","p","l","ˈ","ɔ","w"," ","i"," ","f","ˈ","a"," ","s","ˈ","o","l"," ","ɐ","l"," ","m","ɐ","t","ˈ","ɛ","j","ɕ"," ","t","ˈ","ɛ","m","s","."],"processed_text":"És un arc acolorit que s'observa principalment durant els ruixats en qualsevol època de l'any i a la secció del cel directament oposada al Sol per l'espectador, quan plou i fa sol al mateix temps.","text":"És un arc acolorit que s'observa principalment durant els ruixats en qualsevol època de l'any i a la secció del cel directament oposada al Sol per l'espectador, quan plou i fa sol al mateix temps."} +{"phoneme_ids":[1,0,59,0,24,0,31,0,3,0,23,0,100,0,24,0,120,0,27,0,92,0,31,0,3,0,101,0,120,0,14,0,26,0,3,0,17,0,59,0,31,0,3,0,41,0,59,0,24,0,3,0,101,0,22,0,100,0,24,0,120,0,61,0,32,0,50,0,3,0,50,0,3,0,24,0,21,0,26,0,32,0,59,0,92,0,22,0,120,0,27,0,92,0,3,0,120,0,14,0,25,0,3,0,100,0,26,0,3,0,92,0,30,0,120,0,14,0,41,0,21,0,3,0,41,0,59,0,3,0,23,0,35,0,50,0,92,0,120,0,14,0,26,0,32,0,50,0,3,0,50,0,24,0,3,0,101,0,59,0,30,0,25,0,120,0,61,0,104,0,3,0,50,0,3,0,24,0,59,0,23,0,31,0,32,0,59,0,92,0,22,0,120,0,27,0,92,0,8,0,120,0,14,0,25,0,3,0,100,0,26,0,3,0,92,0,30,0,120,0,14,0,41,0,21,0,3,0,41,0,59,0,3,0,23,0,35,0,50,0,92,0,121,0,14,0,26,0,32,0,50,0,41,0,120,0,54,0,31,0,10,0,2],"phonemes":["ə","l","s"," ","k","ʊ","l","ˈ","o","ɾ","s"," ","ʋ","ˈ","a","n"," ","d","ə","s"," ","ð","ə","l"," ","ʋ","j","ʊ","l","ˈ","ɛ","t","ɐ"," ","ɐ"," ","l","i","n","t","ə","ɾ","j","ˈ","o","ɾ"," ","ˈ","a","m"," ","ʊ","n"," ","ɾ","r","ˈ","a","ð","i"," ","ð","ə"," ","k","w","ɐ","ɾ","ˈ","a","n","t","ɐ"," ","ɐ","l"," ","ʋ","ə","r","m","ˈ","ɛ","ʎ"," ","ɐ"," ","l","ə","k","s","t","ə","ɾ","j","ˈ","o","ɾ",",","ˈ","a","m"," ","ʊ","n"," ","ɾ","r","ˈ","a","ð","i"," ","ð","ə"," ","k","w","ɐ","ɾ","ˌ","a","n","t","ɐ","ð","ˈ","ɔ","s","."],"processed_text":"Els colors van des del violeta a l'interior (amb un radi de 40°) al vermell a l'exterior, amb un radi de 42°.","text":"Els colors van des del violeta a l'interior (amb un radi de 40°) al vermell a l'exterior, amb un radi de 42°."} +{"phoneme_ids":[1,0,50,0,3,0,25,0,120,0,18,0,31,0,3,0,50,0,3,0,25,0,120,0,18,0,31,0,3,0,41,0,50,0,23,0,120,0,61,0,31,0,32,0,3,0,120,0,14,0,30,0,23,0,8,0,17,0,59,0,26,0,100,0,25,0,21,0,26,0,120,0,14,0,32,0,3,0,28,0,92,0,21,0,26,0,31,0,21,0,28,0,120,0,14,0,24,0,8,0,17,0,59,0,3,0,101,0,59,0,68,0,120,0,14,0,41,0,59,0,31,0,3,0,31,0,120,0,61,0,26,0,3,0,28,0,120,0,27,0,32,0,3,0,50,0,28,0,92,0,59,0,31,0,22,0,120,0,14,0,3,0,100,0,26,0,3,0,31,0,59,0,68,0,120,0,27,0,26,0,3,0,31,0,21,0,32,0,35,0,120,0,14,0,32,0,3,0,50,0,24,0,3,0,31,0,120,0,61,0,35,0,3,0,59,0,23,0,31,0,32,0,59,0,92,0,22,0,120,0,27,0,92,0,8,0,17,0,59,0,3,0,23,0,100,0,24,0,100,0,92,0,50,0,31,0,22,0,120,0,27,0,3,0,25,0,120,0,61,0,82,0,31,0,3,0,21,0,26,0,32,0,120,0,61,0,26,0,31,0,50,0,3,0,21,0,3,0,120,0,14,0,25,0,28,0,3,0,24,0,120,0,27,0,30,0,41,0,92,0,59,0,3,0,41,0,59,0,3,0,23,0,100,0,24,0,120,0,27,0,92,0,31,0,3,0,21,0,25,0,125,0,120,0,61,0,31,0,11,0,59,0,24,0,3,0,101,0,59,0,30,0,25,0,120,0,61,0,104,0,3,0,50,0,3,0,24,0,21,0,26,0,32,0,59,0,92,0,22,0,120,0,27,0,92,0,3,0,32,0,120,0,18,0,3,0,100,0,26,0,3,0,92,0,30,0,120,0,14,0,41,0,21,0,3,0,41,0,59,0,3,0,31,0,21,0,26,0,23,0,35,0,120,0,14,0,26,0,32,0,50,0,3,0,21,0,3,0,59,0,24,0,3,0,101,0,22,0,100,0,24,0,120,0,61,0,32,0,50,0,8,0,50,0,3,0,24,0,59,0,23,0,31,0,32,0,59,0,92,0,22,0,120,0,27,0,92,0,8,0,59,0,24,0,3,0,32,0,120,0,18,0,3,0,41,0,59,0,3,0,31,0,21,0,26,0,23,0,35,0,121,0,14,0,26,0,32,0,50,0,23,0,35,0,120,0,14,0,32,0,92,0,59,0,10,0,2],"phonemes":["ɐ"," ","m","ˈ","e","s"," ","ɐ"," ","m","ˈ","e","s"," ","ð","ɐ","k","ˈ","ɛ","s","t"," ","ˈ","a","r","k",",","d","ə","n","ʊ","m","i","n","ˈ","a","t"," ","p","ɾ","i","n","s","i","p","ˈ","a","l",",","d","ə"," ","ʋ","ə","ɣ","ˈ","a","ð","ə","s"," ","s","ˈ","ɛ","n"," ","p","ˈ","o","t"," ","ɐ","p","ɾ","ə","s","j","ˈ","a"," ","ʊ","n"," ","s","ə","ɣ","ˈ","o","n"," ","s","i","t","w","ˈ","a","t"," ","ɐ","l"," ","s","ˈ","ɛ","w"," ","ə","k","s","t","ə","ɾ","j","ˈ","o","ɾ",",","d","ə"," ","k","ʊ","l","ʊ","ɾ","ɐ","s","j","ˈ","o"," ","m","ˈ","ɛ","ɲ","s"," ","i","n","t","ˈ","ɛ","n","s","ɐ"," ","i"," ","ˈ","a","m","p"," ","l","ˈ","o","r","ð","ɾ","ə"," ","ð","ə"," ","k","ʊ","l","ˈ","o","ɾ","s"," ","i","m","β","ˈ","ɛ","s",":","ə","l"," ","ʋ","ə","r","m","ˈ","ɛ","ʎ"," ","ɐ"," ","l","i","n","t","ə","ɾ","j","ˈ","o","ɾ"," ","t","ˈ","e"," ","ʊ","n"," ","ɾ","r","ˈ","a","ð","i"," ","ð","ə"," ","s","i","n","k","w","ˈ","a","n","t","ɐ"," ","i"," ","ə","l"," ","ʋ","j","ʊ","l","ˈ","ɛ","t","ɐ",",","ɐ"," ","l","ə","k","s","t","ə","ɾ","j","ˈ","o","ɾ",",","ə","l"," ","t","ˈ","e"," ","ð","ə"," ","s","i","n","k","w","ˌ","a","n","t","ɐ","k","w","ˈ","a","t","ɾ","ə","."],"processed_text":"A més a més d'aquest arc, denominat principal, de vegades se'n pot apreciar un segon situat al seu exterior, de coloració menys intensa i amb l'ordre de colors invers: el vermell a l'interior té un radi de 50° i el violeta, a l'exterior, el té de 54°.","text":"A més a més d'aquest arc, denominat principal, de vegades se'n pot apreciar un segon situat al seu exterior, de coloració menys intensa i amb l'ordre de colors invers: el vermell a l'interior té un radi de 50° i el violeta, a l'exterior, el té de 54°."} +{"phoneme_ids":[1,0,120,0,61,0,26,0,92,0,59,0,3,0,59,0,24,0,31,0,3,0,120,0,14,0,30,0,23,0,31,0,3,0,28,0,92,0,21,0,25,0,120,0,14,0,92,0,21,0,3,0,21,0,3,0,31,0,59,0,23,0,100,0,26,0,17,0,120,0,14,0,92,0,21,0,8,0,31,0,100,0,15,0,31,0,120,0,61,0,30,0,125,0,50,0,3,0,121,0,33,0,26,0,50,0,3,0,19,0,92,0,120,0,14,0,26,0,107,0,50,0,3,0,41,0,59,0,3,0,31,0,120,0,61,0,24,0,3,0,25,0,120,0,61,0,82,0,31,0,3,0,104,0,100,0,25,0,21,0,26,0,120,0,27,0,38,0,50,0,3,0,50,0,26,0,100,0,25,0,59,0,26,0,120,0,14,0,41,0,50,0,3,0,125,0,120,0,14,0,26,0,17,0,50,0,3,0,41,0,50,0,24,0,59,0,23,0,31,0,50,0,26,0,17,0,120,0,61,0,10,0,2],"phonemes":["ˈ","ɛ","n","ɾ","ə"," ","ə","l","s"," ","ˈ","a","r","k","s"," ","p","ɾ","i","m","ˈ","a","ɾ","i"," ","i"," ","s","ə","k","ʊ","n","d","ˈ","a","ɾ","i",",","s","ʊ","b","s","ˈ","ɛ","r","β","ɐ"," ","ˌ","u","n","ɐ"," ","f","ɾ","ˈ","a","n","ʑ","ɐ"," ","ð","ə"," ","s","ˈ","ɛ","l"," ","m","ˈ","ɛ","ɲ","s"," ","ʎ","ʊ","m","i","n","ˈ","o","z","ɐ"," ","ɐ","n","ʊ","m","ə","n","ˈ","a","ð","ɐ"," ","β","ˈ","a","n","d","ɐ"," ","ð","ɐ","l","ə","k","s","ɐ","n","d","ˈ","ɛ","."],"processed_text":"Entre els arcs primari i secundari, s'observa una franja de cel menys lluminosa anomenada banda d'Alexander.","text":"Entre els arcs primari i secundari, s'observa una franja de cel menys lluminosa anomenada banda d'Alexander."} +{"phoneme_ids":[1,0,107,0,120,0,27,0,125,0,59,0,3,0,55,0,120,0,61,0,19,0,8,0,28,0,120,0,27,0,92,0,32,0,21,0,3,0,35,0,120,0,21,0,31,0,23,0,21,0,3,0,120,0,14,0,25,0,28,0,3,0,23,0,35,0,120,0,21,0,26,0,38,0,59,0,3,0,68,0,24,0,50,0,31,0,120,0,27,0,26,0,31,0,3,0,41,0,21,0,41,0,92,0,120,0,27,0,68,0,59,0,26,0,8,0,23,0,120,0,27,0,22,0,4,0,2],"phonemes":["ʑ","ˈ","o","β","ə"," ","ɕ","ˈ","ɛ","f",",","p","ˈ","o","ɾ","t","i"," ","w","ˈ","i","s","k","i"," ","ˈ","a","m","p"," ","k","w","ˈ","i","n","z","ə"," ","ɣ","l","ɐ","s","ˈ","o","n","s"," ","ð","i","ð","ɾ","ˈ","o","ɣ","ə","n",",","k","ˈ","o","j","!"],"processed_text":"Jove xef, porti whisky amb quinze glaçons d’hidrogen, coi!","text":"Jove xef, porti whisky amb quinze glaçons d’hidrogen, coi!"} diff --git a/piper/piper/etc/test_sentences/test_cs.jsonl b/piper/piper/etc/test_sentences/test_cs.jsonl new file mode 100644 index 0000000..5b69c6d --- /dev/null +++ b/piper/piper/etc/test_sentences/test_cs.jsonl @@ -0,0 +1,8 @@ +{"phoneme_ids":[1,0,17,0,120,0,33,0,20,0,14,0,3,0,22,0,18,0,3,0,19,0,120,0,27,0,32,0,27,0,25,0,121,0,18,0,32,0,18,0,27,0,30,0,8,0,3,0,28,0,30,0,120,0,27,0,22,0,18,0,34,0,121,0,33,0,22,0,21,0,122,0,32,0,31,0,21,0,122,0,3,0,31,0,18,0,3,0,22,0,120,0,14,0,23,0,27,0,3,0,31,0,23,0,120,0,33,0,28,0,21,0,26,0,14,0,3,0,31,0,120,0,27,0,100,0,31,0,32,0,30,0,157,0,158,0,18,0,17,0,26,0,21,0,122,0,68,0,3,0,15,0,120,0,14,0,30,0,18,0,34,0,26,0,21,0,122,0,36,0,3,0,120,0,27,0,15,0,24,0,27,0,100,0,23,0,33,0,122,0,8,0,3,0,23,0,32,0,120,0,18,0,30,0,18,0,122,0,3,0,34,0,38,0,82,0,120,0,21,0,23,0,14,0,22,0,21,0,122,0,3,0,24,0,120,0,27,0,25,0,18,0,25,0,3,0,14,0,3,0,34,0,82,0,120,0,21,0,32,0,30,0,157,0,158,0,82,0,21,0,122,0,25,0,3,0,120,0,27,0,17,0,30,0,14,0,38,0,18,0,25,0,3,0,31,0,24,0,120,0,33,0,26,0,18,0,32,0,96,0,82,0,121,0,21,0,122,0,20,0,27,0,3,0,26,0,121,0,18,0,15,0,27,0,3,0,25,0,82,0,120,0,18,0,31,0,21,0,122,0,32,0,96,0,82,0,121,0,21,0,122,0,20,0,27,0,3,0,31,0,34,0,22,0,120,0,18,0,32,0,24,0,14,0,3,0,26,0,120,0,14,0,34,0,27,0,17,0,82,0,21,0,122,0,36,0,3,0,23,0,120,0,14,0,28,0,23,0,14,0,122,0,36,0,3,0,34,0,3,0,120,0,14,0,32,0,25,0,27,0,31,0,19,0,121,0,18,0,122,0,30,0,157,0,18,0,10,0,2],"phonemes":["d","ˈ","u","h","a"," ","j","e"," ","f","ˈ","o","t","o","m","ˌ","e","t","e","o","r",","," ","p","r","ˈ","o","j","e","v","ˌ","u","j","i","ː","t","s","i","ː"," ","s","e"," ","j","ˈ","a","k","o"," ","s","k","ˈ","u","p","i","n","a"," ","s","ˈ","o","ʊ","s","t","r","̝","̊","e","d","n","i","ː","ɣ"," ","b","ˈ","a","r","e","v","n","i","ː","x"," ","ˈ","o","b","l","o","ʊ","k","u","ː",","," ","k","t","ˈ","e","r","e","ː"," ","v","z","ɲ","ˈ","i","k","a","j","i","ː"," ","l","ˈ","o","m","e","m"," ","a"," ","v","ɲ","ˈ","i","t","r","̝","̊","ɲ","i","ː","m"," ","ˈ","o","d","r","a","z","e","m"," ","s","l","ˈ","u","n","e","t","ʃ","ɲ","ˌ","i","ː","h","o"," ","n","ˌ","e","b","o"," ","m","ɲ","ˈ","e","s","i","ː","t","ʃ","ɲ","ˌ","i","ː","h","o"," ","s","v","j","ˈ","e","t","l","a"," ","n","ˈ","a","v","o","d","ɲ","i","ː","x"," ","k","ˈ","a","p","k","a","ː","x"," ","v"," ","ˈ","a","t","m","o","s","f","ˌ","e","ː","r","̝","e","."],"processed_text":"Duha je fotometeor, projevující se jako skupina soustředných barevných oblouků, které vznikají lomem a vnitřním odrazem slunečního nebo měsíčního světla na vodních kapkách v atmosféře.","text":"Duha je fotometeor, projevující se jako skupina soustředných barevných oblouků, které vznikají lomem a vnitřním odrazem slunečního nebo měsíčního světla na vodních kapkách v atmosféře."} +{"phoneme_ids":[1,0,28,0,120,0,27,0,17,0,27,0,15,0,26,0,21,0,122,0,3,0,120,0,33,0,122,0,23,0,14,0,38,0,3,0,25,0,120,0,33,0,122,0,108,0,18,0,3,0,34,0,38,0,82,0,120,0,21,0,23,0,26,0,27,0,100,0,32,0,3,0,21,0,3,0,34,0,3,0,17,0,30,0,120,0,27,0,15,0,26,0,21,0,122,0,36,0,3,0,24,0,120,0,18,0,17,0,27,0,34,0,21,0,122,0,36,0,3,0,23,0,30,0,120,0,21,0,31,0,32,0,14,0,24,0,18,0,36,0,3,0,34,0,3,0,120,0,14,0,32,0,25,0,27,0,31,0,19,0,121,0,18,0,122,0,30,0,157,0,18,0,10,0,2],"phonemes":["p","ˈ","o","d","o","b","n","i","ː"," ","ˈ","u","ː","k","a","z"," ","m","ˈ","u","ː","ʒ","e"," ","v","z","ɲ","ˈ","i","k","n","o","ʊ","t"," ","i"," ","v"," ","d","r","ˈ","o","b","n","i","ː","x"," ","l","ˈ","e","d","o","v","i","ː","x"," ","k","r","ˈ","i","s","t","a","l","e","x"," ","v"," ","ˈ","a","t","m","o","s","f","ˌ","e","ː","r","̝","e","."],"processed_text":"Podobný úkaz může vzniknout i v drobných ledových krystalech v atmosféře.","text":"Podobný úkaz může vzniknout i v drobných ledových krystalech v atmosféře."} +{"phoneme_ids":[1,0,38,0,120,0,14,0,17,0,18,0,96,0,16,0,18,0,3,0,26,0,121,0,18,0,15,0,27,0,3,0,25,0,120,0,24,0,144,0,20,0,21,0,3,0,28,0,30,0,120,0,27,0,36,0,14,0,122,0,38,0,21,0,122,0,3,0,31,0,34,0,22,0,120,0,18,0,32,0,24,0,27,0,3,0,23,0,120,0,14,0,108,0,17,0,27,0,100,0,3,0,22,0,120,0,18,0,17,0,26,0,27,0,32,0,24,0,121,0,21,0,34,0,27,0,100,0,3,0,23,0,120,0,14,0,28,0,23,0,27,0,100,0,10,0,2],"phonemes":["z","ˈ","a","d","e","ʃ","c","e"," ","n","ˌ","e","b","o"," ","m","ˈ","l","̩","h","i"," ","p","r","ˈ","o","x","a","ː","z","i","ː"," ","s","v","j","ˈ","e","t","l","o"," ","k","ˈ","a","ʒ","d","o","ʊ"," ","j","ˈ","e","d","n","o","t","l","ˌ","i","v","o","ʊ"," ","k","ˈ","a","p","k","o","ʊ","."],"processed_text":"Za deště nebo mlhy prochází světlo každou jednotlivou kapkou.","text":"Za deště nebo mlhy prochází světlo každou jednotlivou kapkou."} +{"phoneme_ids":[1,0,28,0,30,0,120,0,27,0,32,0,27,0,108,0,18,0,3,0,25,0,14,0,122,0,3,0,34,0,120,0,27,0,17,0,14,0,3,0,34,0,22,0,120,0,18,0,32,0,96,0,21,0,122,0,3,0,120,0,21,0,26,0,17,0,18,0,23,0,31,0,3,0,24,0,120,0,27,0,25,0,33,0,3,0,26,0,120,0,18,0,108,0,3,0,34,0,38,0,17,0,120,0,33,0,36,0,8,0,3,0,31,0,34,0,22,0,120,0,18,0,32,0,24,0,27,0,3,0,31,0,18,0,3,0,34,0,3,0,82,0,120,0,21,0,122,0,3,0,24,0,120,0,14,0,122,0,25,0,18,0,10,0,2],"phonemes":["p","r","ˈ","o","t","o","ʒ","e"," ","m","a","ː"," ","v","ˈ","o","d","a"," ","v","j","ˈ","e","t","ʃ","i","ː"," ","ˈ","i","n","d","e","k","s"," ","l","ˈ","o","m","u"," ","n","ˈ","e","ʒ"," ","v","z","d","ˈ","u","x",","," ","s","v","j","ˈ","e","t","l","o"," ","s","e"," ","v"," ","ɲ","ˈ","i","ː"," ","l","ˈ","a","ː","m","e","."],"processed_text":"Protože má voda větší index lomu než vzduch, světlo se v ní láme.","text":"Protože má voda větší index lomu než vzduch, světlo se v ní láme."} +{"phoneme_ids":[1,0,120,0,21,0,26,0,17,0,18,0,23,0,31,0,3,0,24,0,120,0,27,0,25,0,33,0,3,0,22,0,18,0,3,0,30,0,120,0,33,0,122,0,38,0,26,0,21,0,122,0,3,0,28,0,30,0,120,0,27,0,30,0,33,0,122,0,38,0,26,0,18,0,122,0,3,0,34,0,120,0,24,0,144,0,26,0,27,0,34,0,18,0,122,0,3,0,17,0,120,0,18,0,122,0,24,0,23,0,21,0,3,0,31,0,34,0,22,0,120,0,18,0,32,0,24,0,14,0,3,0,14,0,3,0,28,0,120,0,27,0,34,0,30,0,144,0,36,0,3,0,23,0,120,0,14,0,28,0,23,0,21,0,3,0,25,0,14,0,122,0,3,0,32,0,34,0,120,0,14,0,30,0,3,0,23,0,120,0,27,0,100,0,24,0,18,0,10,0,2],"phonemes":["ˈ","i","n","d","e","k","s"," ","l","ˈ","o","m","u"," ","j","e"," ","r","ˈ","u","ː","z","n","i","ː"," ","p","r","ˈ","o","r","u","ː","z","n","e","ː"," ","v","ˈ","l","̩","n","o","v","e","ː"," ","d","ˈ","e","ː","l","k","i"," ","s","v","j","ˈ","e","t","l","a"," ","a"," ","p","ˈ","o","v","r","̩","x"," ","k","ˈ","a","p","k","i"," ","m","a","ː"," ","t","v","ˈ","a","r"," ","k","ˈ","o","ʊ","l","e","."],"processed_text":"Index lomu je různý pro různé vlnové délky světla a povrch kapky má tvar koule.","text":"Index lomu je různý pro různé vlnové délky světla a povrch kapky má tvar koule."} +{"phoneme_ids":[1,0,31,0,34,0,22,0,120,0,18,0,32,0,24,0,27,0,3,0,31,0,18,0,3,0,32,0,120,0,18,0,17,0,21,0,3,0,26,0,120,0,14,0,27,0,23,0,30,0,121,0,14,0,22,0,21,0,122,0,68,0,3,0,17,0,120,0,18,0,96,0,16,0,27,0,34,0,21,0,122,0,36,0,3,0,23,0,120,0,14,0,28,0,18,0,23,0,3,0,30,0,120,0,27,0,31,0,23,0,24,0,14,0,122,0,17,0,14,0,122,0,3,0,26,0,14,0,3,0,22,0,120,0,18,0,17,0,26,0,27,0,32,0,24,0,121,0,21,0,34,0,18,0,122,0,3,0,15,0,120,0,14,0,30,0,18,0,34,0,26,0,18,0,122,0,3,0,31,0,24,0,120,0,27,0,96,0,23,0,21,0,8,0,3,0,23,0,32,0,120,0,18,0,30,0,18,0,122,0,3,0,31,0,18,0,3,0,120,0,27,0,17,0,30,0,14,0,122,0,108,0,121,0,18,0,22,0,21,0,122,0,3,0,26,0,120,0,14,0,34,0,82,0,21,0,32,0,30,0,157,0,158,0,82,0,21,0,122,0,3,0,31,0,16,0,120,0,18,0,82,0,18,0,3,0,14,0,3,0,120,0,27,0,28,0,27,0,100,0,96,0,16,0,121,0,18,0,22,0,21,0,122,0,3,0,28,0,120,0,27,0,17,0,30,0,33,0,122,0,38,0,26,0,121,0,21,0,122,0,25,0,21,0,3,0,120,0,33,0,122,0,20,0,24,0,21,0,3,0,23,0,120,0,14,0,28,0,23,0,33,0,10,0,2],"phonemes":["s","v","j","ˈ","e","t","l","o"," ","s","e"," ","t","ˈ","e","d","i"," ","n","ˈ","a","o","k","r","ˌ","a","j","i","ː","ɣ"," ","d","ˈ","e","ʃ","c","o","v","i","ː","x"," ","k","ˈ","a","p","e","k"," ","r","ˈ","o","s","k","l","a","ː","d","a","ː"," ","n","a"," ","j","ˈ","e","d","n","o","t","l","ˌ","i","v","e","ː"," ","b","ˈ","a","r","e","v","n","e","ː"," ","s","l","ˈ","o","ʃ","k","i",","," ","k","t","ˈ","e","r","e","ː"," ","s","e"," ","ˈ","o","d","r","a","ː","ʒ","ˌ","e","j","i","ː"," ","n","ˈ","a","v","ɲ","i","t","r","̝","̊","ɲ","i","ː"," ","s","c","ˈ","e","ɲ","e"," ","a"," ","ˈ","o","p","o","ʊ","ʃ","c","ˌ","e","j","i","ː"," ","p","ˈ","o","d","r","u","ː","z","n","ˌ","i","ː","m","i"," ","ˈ","u","ː","h","l","i"," ","k","ˈ","a","p","k","u","."],"processed_text":"Světlo se tedy na okrajích dešťových kapek rozkládá na jednotlivé barevné složky, které se odrážejí na vnitřní stěně a opouštějí pod různými úhly kapku.","text":"Světlo se tedy na okrajích dešťových kapek rozkládá na jednotlivé barevné složky, které se odrážejí na vnitřní stěně a opouštějí pod různými úhly kapku."} +{"phoneme_ids":[1,0,23,0,120,0,14,0,28,0,23,0,21,0,8,0,3,0,23,0,32,0,120,0,18,0,30,0,18,0,122,0,3,0,22,0,31,0,27,0,100,0,3,0,34,0,120,0,18,0,3,0,31,0,32,0,120,0,18,0,74,0,26,0,18,0,122,0,3,0,120,0,33,0,122,0,20,0,24,0,27,0,34,0,18,0,122,0,3,0,34,0,38,0,17,0,120,0,14,0,122,0,24,0,18,0,26,0,121,0,27,0,31,0,16,0,21,0,3,0,120,0,27,0,17,0,38,0,17,0,30,0,27,0,22,0,18,0,3,0,31,0,34,0,22,0,120,0,18,0,32,0,24,0,14,0,8,0,3,0,31,0,18,0,3,0,28,0,120,0,14,0,23,0,3,0,22,0,120,0,18,0,34,0,21,0,122,0,8,0,3,0,22,0,120,0,14,0,23,0,27,0,3,0,15,0,21,0,3,0,25,0,82,0,120,0,18,0,24,0,21,0,3,0,31,0,32,0,120,0,18,0,74,0,26,0,27,0,100,0,3,0,15,0,120,0,14,0,30,0,34,0,33,0,10,0,2],"phonemes":["k","ˈ","a","p","k","i",","," ","k","t","ˈ","e","r","e","ː"," ","j","s","o","ʊ"," ","v","ˈ","e"," ","s","t","ˈ","e","ɪ","n","e","ː"," ","ˈ","u","ː","h","l","o","v","e","ː"," ","v","z","d","ˈ","a","ː","l","e","n","ˌ","o","s","c","i"," ","ˈ","o","d","z","d","r","o","j","e"," ","s","v","j","ˈ","e","t","l","a",","," ","s","e"," ","p","ˈ","a","k"," ","j","ˈ","e","v","i","ː",","," ","j","ˈ","a","k","o"," ","b","i"," ","m","ɲ","ˈ","e","l","i"," ","s","t","ˈ","e","ɪ","n","o","ʊ"," ","b","ˈ","a","r","v","u","."],"processed_text":"Kapky, které jsou ve stejné úhlové vzdálenosti od zdroje světla, se pak jeví, jako by měly stejnou barvu.","text":"Kapky, které jsou ve stejné úhlové vzdálenosti od zdroje světla, se pak jeví, jako by měly stejnou barvu."} +{"phoneme_ids":[1,0,28,0,30,0,120,0,27,0,32,0,27,0,3,0,25,0,14,0,122,0,3,0,17,0,120,0,33,0,20,0,14,0,3,0,32,0,34,0,120,0,14,0,30,0,3,0,23,0,30,0,120,0,33,0,20,0,33,0,8,0,3,0,28,0,30,0,157,0,158,0,120,0,21,0,122,0,28,0,14,0,17,0,82,0,18,0,3,0,22,0,120,0,18,0,20,0,27,0,3,0,32,0,96,0,120,0,14,0,122,0,31,0,16,0,21,0,10,0,2],"phonemes":["p","r","ˈ","o","t","o"," ","m","a","ː"," ","d","ˈ","u","h","a"," ","t","v","ˈ","a","r"," ","k","r","ˈ","u","h","u",","," ","p","r","̝","̊","ˈ","i","ː","p","a","d","ɲ","e"," ","j","ˈ","e","h","o"," ","t","ʃ","ˈ","a","ː","s","c","i","."],"processed_text":"Proto má duha tvar kruhu, případně jeho části.","text":"Proto má duha tvar kruhu, případně jeho části."} diff --git a/piper/piper/etc/test_sentences/test_da.jsonl b/piper/piper/etc/test_sentences/test_da.jsonl new file mode 100644 index 0000000..2a49a27 --- /dev/null +++ b/piper/piper/etc/test_sentences/test_da.jsonl @@ -0,0 +1,6 @@ +{"phoneme_ids":[1,0,109,0,18,0,26,0,3,0,94,0,120,0,13,0,51,0,22,0,26,0,15,0,33,0,122,0,3,0,61,0,50,0,143,0,3,0,18,0,32,0,3,0,120,0,109,0,102,0,28,0,32,0,109,0,21,0,31,0,23,0,3,0,19,0,121,0,147,0,26,0,27,0,25,0,120,0,109,0,18,0,26,0,12,0,109,0,18,0,26,0,3,0,24,0,109,0,37,0,31,0,59,0,19,0,120,0,147,0,66,0,32,0,8,0,31,0,109,0,102,0,25,0,3,0,31,0,23,0,120,0,14,0,15,0,59,0,31,0,3,0,28,0,52,0,3,0,20,0,120,0,109,0,18,0,25,0,24,0,59,0,26,0,8,0,26,0,120,0,102,0,3,0,24,0,120,0,109,0,37,0,31,0,3,0,19,0,94,0,51,0,3,0,31,0,120,0,109,0,27,0,24,0,59,0,26,0,3,0,94,0,120,0,13,0,51,0,25,0,109,0,102,0,3,0,31,0,25,0,120,0,52,0,3,0,101,0,120,0,14,0,26,0,17,0,94,0,52,0,15,0,121,0,109,0,102,0,3,0,21,0,3,0,24,0,120,0,52,0,19,0,17,0,59,0,26,0,8,0,19,0,120,0,102,0,18,0,66,0,31,0,121,0,18,0,25,0,28,0,59,0,24,0,3,0,19,0,120,0,14,0,24,0,59,0,26,0,59,0,3,0,94,0,120,0,13,0,51,0,22,0,26,0,10,0,2],"phonemes":["ʔ","e","n"," ","ʁ","ˈ","?","ɑ","j","n","b","u","ː"," ","ɛ","ɐ","̯"," ","e","t"," ","ˈ","ʔ","ʌ","p","t","ʔ","i","s","k"," ","f","ˌ","ε","n","o","m","ˈ","ʔ","e","n",";","ʔ","e","n"," ","l","ʔ","y","s","ə","f","ˈ","ε","ɡ","t",",","s","ʔ","ʌ","m"," ","s","k","ˈ","a","b","ə","s"," ","p","ɒ"," ","h","ˈ","ʔ","e","m","l","ə","n",",","n","ˈ","ʌ"," ","l","ˈ","ʔ","y","s"," ","f","ʁ","ɑ"," ","s","ˈ","ʔ","o","l","ə","n"," ","ʁ","ˈ","?","ɑ","m","ʔ","ʌ"," ","s","m","ˈ","ɒ"," ","ʋ","ˈ","a","n","d","ʁ","ɒ","b","ˌ","ʔ","ʌ"," ","i"," ","l","ˈ","ɒ","f","d","ə","n",",","f","ˈ","ʌ","e","ɡ","s","ˌ","e","m","p","ə","l"," ","f","ˈ","a","l","ə","n","ə"," ","ʁ","ˈ","?","ɑ","j","n","."],"processed_text":"En regnbue er et optisk fænomen; en \"lyseffekt\", som skabes på himlen, når lys fra Solen rammer små vanddråber i luften, f.eks. faldende regn.","text":"En regnbue er et optisk fænomen; en \"lyseffekt\", som skabes på himlen, når lys fra Solen rammer små vanddråber i luften, f.eks. faldende regn."} +{"phoneme_ids":[1,0,31,0,120,0,109,0,102,0,17,0,14,0,26,0,59,0,3,0,31,0,101,0,120,0,61,0,101,0,59,0,26,0,59,0,3,0,101,0,120,0,14,0,26,0,17,0,94,0,52,0,15,0,121,0,109,0,102,0,3,0,20,0,51,0,3,0,19,0,14,0,31,0,120,0,109,0,102,0,44,0,3,0,120,0,109,0,102,0,25,0,32,0,94,0,120,0,13,0,14,0,26,0,32,0,3,0,31,0,109,0,102,0,25,0,3,0,109,0,18,0,26,0,3,0,23,0,120,0,33,0,24,0,59,0,12,0,22,0,120,0,109,0,27,0,3,0,25,0,120,0,109,0,18,0,26,0,17,0,94,0,109,0,102,0,3,0,17,0,109,0,21,0,3,0,61,0,50,0,143,0,8,0,17,0,120,0,147,0,31,0,32,0,109,0,27,0,3,0,25,0,120,0,18,0,50,0,143,0,3,0,28,0,147,0,50,0,143,0,19,0,120,0,147,0,66,0,32,0,3,0,23,0,120,0,33,0,24,0,59,0,19,0,52,0,52,0,25,0,3,0,20,0,51,0,3,0,17,0,109,0,21,0,10,0,2,1,0,17,0,109,0,21,0,31,0,59,0,3,0,23,0,120,0,33,0,24,0,59,0,94,0,52,0,26,0,59,0,3,0,17,0,94,0,120,0,52,0,15,0,109,0,102,0,3,0,15,0,50,0,143,0,120,0,37,0,41,0,109,0,102,0,8,0,120,0,147,0,24,0,109,0,102,0,3,0,120,0,13,0,51,0,35,0,15,0,102,0,22,0,121,0,109,0,102,0,3,0,24,0,120,0,109,0,37,0,31,0,59,0,41,0,3,0,28,0,52,0,3,0,31,0,120,0,13,0,51,0,25,0,59,0,3,0,25,0,120,0,52,0,41,0,59,0,3,0,31,0,109,0,102,0,25,0,3,0,18,0,32,0,3,0,120,0,109,0,102,0,28,0,32,0,109,0,21,0,31,0,23,0,3,0,28,0,94,0,120,0,109,0,21,0,31,0,25,0,59,0,3,0,101,0,109,0,18,0,41,0,3,0,109,0,18,0,26,0,3,0,28,0,94,0,120,0,27,0,31,0,59,0,31,0,8,0,17,0,147,0,50,0,143,0,3,0,23,0,120,0,14,0,24,0,59,0,31,0,3,0,94,0,121,0,147,0,19,0,94,0,13,0,51,0,23,0,96,0,120,0,109,0,27,0,26,0,10,0,2],"phonemes":["s","ˈ","ʔ","ʌ","d","a","n","ə"," ","s","ʋ","ˈ","ɛ","ʋ","ə","n","ə"," ","ʋ","ˈ","a","n","d","ʁ","ɒ","b","ˌ","ʔ","ʌ"," ","h","ɑ"," ","f","a","s","ˈ","ʔ","ʌ","ŋ"," ","ˈ","ʔ","ʌ","m","t","ʁ","ˈ","?","a","n","t"," ","s","ʔ","ʌ","m"," ","ʔ","e","n"," ","k","ˈ","u","l","ə",";","j","ˈ","ʔ","o"," ","m","ˈ","ʔ","e","n","d","ʁ","ʔ","ʌ"," ","d","ʔ","i"," ","ɛ","ɐ","̯",",","d","ˈ","ε","s","t","ʔ","o"," ","m","ˈ","e","ɐ","̯"," ","p","ε","ɐ","̯","f","ˈ","ε","ɡ","t"," ","k","ˈ","u","l","ə","f","ɒ","ɒ","m"," ","h","ɑ"," ","d","ʔ","i",".","d","ʔ","i","s","ə"," ","k","ˈ","u","l","ə","ʁ","ɒ","n","ə"," ","d","ʁ","ˈ","ɒ","b","ʔ","ʌ"," ","b","ɐ","̯","ˈ","y","ð","ʔ","ʌ",",","ˈ","ε","l","ʔ","ʌ"," ","ˈ","?","ɑ","w","b","ʌ","j","ˌ","ʔ","ʌ"," ","l","ˈ","ʔ","y","s","ə","ð"," ","p","ɒ"," ","s","ˈ","?","ɑ","m","ə"," ","m","ˈ","ɒ","ð","ə"," ","s","ʔ","ʌ","m"," ","e","t"," ","ˈ","ʔ","ʌ","p","t","ʔ","i","s","k"," ","p","ʁ","ˈ","ʔ","i","s","m","ə"," ","ʋ","ʔ","e","ð"," ","ʔ","e","n"," ","p","ʁ","ˈ","o","s","ə","s",",","d","ε","ɐ","̯"," ","k","ˈ","a","l","ə","s"," ","ʁ","ˌ","ε","f","ʁ","?","ɑ","k","ʃ","ˈ","ʔ","o","n","."],"processed_text":"Sådanne svævende vanddråber har facon omtrent som en kugle – jo mindre de er, desto mere perfekt kugleform har de. Disse kuglerunde dråber bryder, eller \"afbøjer\" lyset på samme måde som et optisk prisme ved en proces, der kaldes refraktion.","text":"Sådanne svævende vanddråber har facon omtrent som en kugle – jo mindre de er, desto mere perfekt kugleform har de. Disse kuglerunde dråber bryder, eller \"afbøjer\" lyset på samme måde som et optisk prisme ved en proces, der kaldes refraktion."} +{"phoneme_ids":[1,0,102,0,3,0,17,0,61,0,50,0,143,0,120,0,109,0,33,0,41,0,52,0,35,0,121,0,109,0,102,0,3,0,120,0,109,0,102,0,28,0,19,0,45,0,121,0,109,0,102,0,3,0,120,0,109,0,18,0,26,0,109,0,102,0,31,0,121,0,109,0,21,0,41,0,59,0,26,0,3,0,120,0,14,0,3,0,17,0,94,0,120,0,52,0,15,0,109,0,102,0,26,0,59,0,31,0,3,0,120,0,52,0,35,0,109,0,102,0,19,0,24,0,121,0,14,0,41,0,109,0,102,0,3,0,31,0,51,0,22,0,3,0,32,0,109,0,18,0,24,0,3,0,109,0,18,0,26,0,3,0,101,0,21,0,31,0,3,0,66,0,94,0,120,0,13,0,51,0,41,0,3,0,31,0,109,0,102,0,25,0,3,0,31,0,25,0,120,0,52,0,3,0,31,0,28,0,120,0,13,0,51,0,22,0,24,0,59,0,8,0,18,0,32,0,3,0,19,0,121,0,147,0,26,0,27,0,25,0,120,0,109,0,18,0,26,0,3,0,17,0,147,0,50,0,143,0,3,0,23,0,120,0,14,0,24,0,59,0,31,0,3,0,19,0,120,0,102,0,3,0,109,0,18,0,26,0,32,0,120,0,147,0,50,0,143,0,26,0,3,0,94,0,147,0,19,0,24,0,120,0,147,0,23,0,96,0,120,0,109,0,27,0,26,0,8,0,17,0,147,0,50,0,143,0,3,0,23,0,120,0,14,0,31,0,32,0,109,0,102,0,3,0,24,0,120,0,109,0,37,0,31,0,59,0,41,0,3,0,32,0,18,0,24,0,15,0,120,0,14,0,22,0,59,0,3,0,21,0,3,0,26,0,120,0,27,0,59,0,26,0,24,0,52,0,26,0,59,0,3,0,17,0,61,0,26,0,3,0,94,0,120,0,13,0,14,0,32,0,26,0,109,0,18,0,44,0,8,0,17,0,18,0,3,0,23,0,120,0,109,0,102,0,25,0,3,0,19,0,94,0,120,0,51,0,12,0,17,0,18,0,3,0,61,0,50,0,143,0,3,0,17,0,120,0,61,0,50,0,143,0,19,0,102,0,8,0,25,0,120,0,14,0,26,0,3,0,120,0,14,0,24,0,32,0,109,0,21,0,41,0,3,0,31,0,120,0,109,0,18,0,50,0,143,0,3,0,94,0,120,0,13,0,51,0,22,0,26,0,15,0,33,0,121,0,109,0,102,0,3,0,21,0,3,0,94,0,120,0,13,0,14,0,32,0,26,0,109,0,18,0,44,0,59,0,26,0,3,0,17,0,120,0,21,0,94,0,13,0,14,0,23,0,17,0,59,0,3,0,101,0,120,0,147,0,23,0,3,0,19,0,94,0,51,0,3,0,31,0,120,0,109,0,27,0,24,0,59,0,26,0,10,0,2],"phonemes":["ʌ"," ","d","ɛ","ɐ","̯","ˈ","ʔ","u","ð","ɒ","w","ˌ","ʔ","ʌ"," ","ˈ","ʔ","ʌ","p","f","œ","ˌ","ʔ","ʌ"," ","ˈ","ʔ","e","n","ʔ","ʌ","s","ˌ","ʔ","i","ð","ə","n"," ","ˈ","a"," ","d","ʁ","ˈ","ɒ","b","ʔ","ʌ","n","ə","s"," ","ˈ","ɒ","w","ʔ","ʌ","f","l","ˌ","a","ð","ʔ","ʌ"," ","s","ɑ","j"," ","t","ʔ","e","l"," ","ʔ","e","n"," ","ʋ","i","s"," ","ɡ","ʁ","ˈ","?","ɑ","ð"," ","s","ʔ","ʌ","m"," ","s","m","ˈ","ɒ"," ","s","p","ˈ","?","ɑ","j","l","ə",",","e","t"," ","f","ˌ","ε","n","o","m","ˈ","ʔ","e","n"," ","d","ε","ɐ","̯"," ","k","ˈ","a","l","ə","s"," ","f","ˈ","ʌ"," ","ʔ","e","n","t","ˈ","ε","ɐ","̯","n"," ","ʁ","ε","f","l","ˈ","ε","k","ʃ","ˈ","ʔ","o","n",",","d","ε","ɐ","̯"," ","k","ˈ","a","s","t","ʔ","ʌ"," ","l","ˈ","ʔ","y","s","ə","ð"," ","t","e","l","b","ˈ","a","j","ə"," ","i"," ","n","ˈ","o","ə","n","l","ɒ","n","ə"," ","d","ɛ","n"," ","ʁ","ˈ","?","a","t","n","ʔ","e","ŋ",",","d","e"," ","k","ˈ","ʔ","ʌ","m"," ","f","ʁ","ˈ","ɑ",";","d","e"," ","ɛ","ɐ","̯"," ","d","ˈ","ɛ","ɐ","̯","f","ʌ",",","m","ˈ","a","n"," ","ˈ","a","l","t","ʔ","i","ð"," ","s","ˈ","ʔ","e","ɐ","̯"," ","ʁ","ˈ","?","ɑ","j","n","b","u","ˌ","ʔ","ʌ"," ","i"," ","ʁ","ˈ","?","a","t","n","ʔ","e","ŋ","ə","n"," ","d","ˈ","i","ʁ","?","a","k","d","ə"," ","ʋ","ˈ","ε","k"," ","f","ʁ","ɑ"," ","s","ˈ","ʔ","o","l","ə","n","."],"processed_text":"Og derudover opfører indersiden af dråbernes overflader sig til en vis grad som små spejle, (et fænomen der kaldes for intern refleksion), der kaster lyset tilbage i nogenlunde den retning, det kom fra – det er derfor, man altid ser regnbuer i retningen direkte væk fra solen.","text":"Og derudover opfører indersiden af dråbernes overflader sig til en vis grad som små spejle, (et fænomen der kaldes for intern refleksion), der kaster lyset tilbage i nogenlunde den retning, det kom fra – det er derfor, man altid ser regnbuer i retningen direkte væk fra solen."} +{"phoneme_ids":[1,0,24,0,120,0,109,0,37,0,31,0,3,0,23,0,14,0,26,0,3,0,15,0,109,0,18,0,31,0,66,0,94,0,120,0,21,0,101,0,59,0,31,0,3,0,31,0,109,0,102,0,25,0,3,0,18,0,32,0,3,0,15,0,121,0,109,0,45,0,24,0,22,0,59,0,19,0,147,0,26,0,27,0,25,0,120,0,109,0,18,0,26,0,8,0,102,0,3,0,101,0,120,0,109,0,21,0,32,0,3,0,24,0,120,0,109,0,37,0,31,0,8,0,31,0,109,0,102,0,25,0,3,0,17,0,18,0,3,0,31,0,120,0,109,0,27,0,24,0,59,0,26,0,3,0,120,0,109,0,33,0,41,0,31,0,121,0,147,0,26,0,109,0,102,0,8,0,15,0,109,0,18,0,31,0,32,0,120,0,52,0,3,0,120,0,14,0,3,0,24,0,120,0,109,0,37,0,31,0,15,0,109,0,45,0,24,0,22,0,121,0,109,0,102,0,3,0,25,0,147,0,41,0,3,0,19,0,52,0,52,0,31,0,23,0,120,0,147,0,24,0,24,0,109,0,21,0,59,0,3,0,24,0,120,0,147,0,44,0,17,0,109,0,102,0,10,0,2],"phonemes":["l","ˈ","ʔ","y","s"," ","k","a","n"," ","b","ʔ","e","s","ɡ","ʁ","ˈ","i","ʋ","ə","s"," ","s","ʔ","ʌ","m"," ","e","t"," ","b","ˌ","ʔ","œ","l","j","ə","f","ε","n","o","m","ˈ","ʔ","e","n",",","ʌ"," ","ʋ","ˈ","ʔ","i","t"," ","l","ˈ","ʔ","y","s",",","s","ʔ","ʌ","m"," ","d","e"," ","s","ˈ","ʔ","o","l","ə","n"," ","ˈ","ʔ","u","ð","s","ˌ","ε","n","ʔ","ʌ",",","b","ʔ","e","s","t","ˈ","ɒ"," ","ˈ","a"," ","l","ˈ","ʔ","y","s","b","ʔ","œ","l","j","ˌ","ʔ","ʌ"," ","m","ε","ð"," ","f","ɒ","ɒ","s","k","ˈ","ε","l","l","ʔ","i","ə"," ","l","ˈ","ε","ŋ","d","ʔ","ʌ","."],"processed_text":"Lys kan beskrives som et bølgefænomen, og \"hvidt\" lys, som det Solen udsender, består af lysbølger med forskellige længder.","text":"Lys kan beskrives som et bølgefænomen, og \"hvidt\" lys, som det Solen udsender, består af lysbølger med forskellige længder."} +{"phoneme_ids":[1,0,17,0,18,0,3,0,15,0,50,0,143,0,120,0,37,0,41,0,59,0,31,0,8,0,120,0,147,0,24,0,109,0,102,0,3,0,120,0,13,0,51,0,35,0,15,0,102,0,22,0,59,0,31,0,8,0,21,0,3,0,19,0,52,0,52,0,31,0,23,0,120,0,147,0,24,0,24,0,109,0,21,0,59,0,3,0,101,0,120,0,109,0,18,0,26,0,23,0,24,0,109,0,102,0,3,0,13,0,51,0,35,0,20,0,120,0,147,0,44,0,21,0,32,0,3,0,120,0,14,0,3,0,15,0,120,0,109,0,45,0,24,0,22,0,59,0,24,0,147,0,44,0,17,0,59,0,26,0,3,0,31,0,120,0,109,0,18,0,3,0,120,0,109,0,102,0,28,0,32,0,109,0,21,0,31,0,23,0,3,0,17,0,121,0,109,0,21,0,31,0,28,0,109,0,102,0,96,0,120,0,109,0,27,0,26,0,8,0,31,0,120,0,52,0,3,0,31,0,120,0,147,0,24,0,3,0,109,0,102,0,25,0,3,0,31,0,120,0,109,0,27,0,24,0,31,0,32,0,94,0,52,0,52,0,24,0,121,0,109,0,102,0,26,0,59,0,3,0,120,0,14,0,26,0,23,0,109,0,102,0,25,0,121,0,109,0,102,0,3,0,120,0,109,0,102,0,25,0,32,0,94,0,120,0,13,0,14,0,26,0,32,0,3,0,28,0,121,0,51,0,94,0,13,0,51,0,24,0,120,0,147,0,24,0,24,0,59,0,8,0,31,0,120,0,147,0,26,0,109,0,102,0,3,0,17,0,94,0,120,0,52,0,15,0,109,0,102,0,26,0,59,0,3,0,17,0,109,0,21,0,3,0,19,0,52,0,52,0,31,0,23,0,120,0,147,0,24,0,24,0,109,0,21,0,59,0,3,0,15,0,120,0,109,0,45,0,24,0,22,0,59,0,24,0,147,0,44,0,17,0,121,0,109,0,102,0,3,0,32,0,18,0,24,0,15,0,120,0,14,0,22,0,59,0,3,0,21,0,3,0,19,0,52,0,52,0,31,0,23,0,120,0,147,0,24,0,24,0,109,0,21,0,59,0,3,0,94,0,120,0,13,0,14,0,32,0,26,0,109,0,18,0,44,0,121,0,109,0,102,0,10,0,2],"phonemes":["d","e"," ","b","ɐ","̯","ˈ","y","ð","ə","s",",","ˈ","ε","l","ʔ","ʌ"," ","ˈ","?","ɑ","w","b","ʌ","j","ə","s",",","i"," ","f","ɒ","ɒ","s","k","ˈ","ε","l","l","ʔ","i","ə"," ","ʋ","ˈ","ʔ","e","n","k","l","ʔ","ʌ"," ","?","ɑ","w","h","ˈ","ε","ŋ","i","t"," ","ˈ","a"," ","b","ˈ","ʔ","œ","l","j","ə","l","ε","ŋ","d","ə","n"," ","s","ˈ","ʔ","e"," ","ˈ","ʔ","ʌ","p","t","ʔ","i","s","k"," ","d","ˌ","ʔ","i","s","p","ʔ","ʌ","ʃ","ˈ","ʔ","o","n",",","s","ˈ","ɒ"," ","s","ˈ","ε","l"," ","ʔ","ʌ","m"," ","s","ˈ","ʔ","o","l","s","t","ʁ","ɒ","ɒ","l","ˌ","ʔ","ʌ","n","ə"," ","ˈ","a","n","k","ʔ","ʌ","m","ˌ","ʔ","ʌ"," ","ˈ","ʔ","ʌ","m","t","ʁ","ˈ","?","a","n","t"," ","p","ˌ","ɑ","ʁ","?","ɑ","l","ˈ","ε","l","l","ə",",","s","ˈ","ε","n","ʔ","ʌ"," ","d","ʁ","ˈ","ɒ","b","ʔ","ʌ","n","ə"," ","d","ʔ","i"," ","f","ɒ","ɒ","s","k","ˈ","ε","l","l","ʔ","i","ə"," ","b","ˈ","ʔ","œ","l","j","ə","l","ε","ŋ","d","ˌ","ʔ","ʌ"," ","t","e","l","b","ˈ","a","j","ə"," ","i"," ","f","ɒ","ɒ","s","k","ˈ","ε","l","l","ʔ","i","ə"," ","ʁ","ˈ","?","a","t","n","ʔ","e","ŋ","ˌ","ʔ","ʌ","."],"processed_text":"Det brydes, eller afbøjes, i forskellige vinkler afhængigt af bølgelængden (se optisk dispersion), så selv om solstrålerne ankommer omtrent parallelle, sender dråberne de forskellige bølgelængder tilbage i forskellige retninger.","text":"Det brydes, eller afbøjes, i forskellige vinkler afhængigt af bølgelængden (se optisk dispersion), så selv om solstrålerne ankommer omtrent parallelle, sender dråberne de forskellige bølgelængder tilbage i forskellige retninger."} +{"phoneme_ids":[1,0,23,0,101,0,120,0,21,0,31,0,17,0,109,0,18,0,24,0,32,0,121,0,14,0,22,0,102,0,26,0,59,0,3,0,31,0,28,0,120,0,109,0,21,0,31,0,17,0,59,0,3,0,22,0,120,0,109,0,27,0,50,0,143,0,15,0,147,0,50,0,143,0,3,0,25,0,147,0,41,0,3,0,19,0,24,0,120,0,45,0,41,0,59,0,8,0,25,0,120,0,147,0,26,0,31,0,3,0,31,0,120,0,109,0,21,0,50,0,143,0,23,0,109,0,33,0,31,0,23,0,24,0,121,0,54,0,35,0,26,0,59,0,26,0,3,0,35,0,120,0,52,0,24,0,32,0,20,0,109,0,102,0,3,0,31,0,28,0,120,0,109,0,18,0,24,0,59,0,41,0,59,0,3,0,28,0,52,0,3,0,31,0,121,0,109,0,37,0,24,0,109,0,27,0,19,0,120,0,109,0,27,0,26,0,10,0,2],"phonemes":["k","ʋ","ˈ","i","s","d","ʔ","e","l","t","ˌ","a","j","ʌ","n","ə"," ","s","p","ˈ","ʔ","i","s","d","ə"," ","j","ˈ","ʔ","o","ɐ","̯","b","ε","ɐ","̯"," ","m","ε","ð"," ","f","l","ˈ","œ","ð","ə",",","m","ˈ","ε","n","s"," ","s","ˈ","ʔ","i","ɐ","̯","k","ʔ","u","s","k","l","ˌ","ɔ","w","n","ə","n"," ","w","ˈ","ɒ","l","t","h","ʔ","ʌ"," ","s","p","ˈ","ʔ","e","l","ə","ð","ə"," ","p","ɒ"," ","s","ˌ","ʔ","y","l","ʔ","o","f","ˈ","ʔ","o","n","."],"processed_text":"Quizdeltagerne spiste jordbær med fløde, mens cirkusklovnen Walther spillede på xylofon.","text":"Quizdeltagerne spiste jordbær med fløde, mens cirkusklovnen Walther spillede på xylofon."} diff --git a/piper/piper/etc/test_sentences/test_de.jsonl b/piper/piper/etc/test_sentences/test_de.jsonl new file mode 100644 index 0000000..956e159 --- /dev/null +++ b/piper/piper/etc/test_sentences/test_de.jsonl @@ -0,0 +1,10 @@ +{"text": "Der Regenbogen ist ein atmosphärisch-optisches Phänomen, das als kreisbogenförmiges farbiges Lichtband in einer von der Sonne beschienenen Regenwand oder -wolke wahrgenommen wird.", "phonemes": ["d", "ɛ", "ɾ", " ", "r", "ˌ", "e", "ː", "ɡ", "ə", "n", "b", "ˈ", "o", "ː", "ɡ", "ə", "n", " ", "ɪ", "s", "t", " ", "a", "ɪ", "n", " ", "ˌ", "a", "t", "m", "ɔ", "s", "f", "ˈ", "ɛ", "ː", "r", "ɪ", "ʃ", "ˈ", "ɔ", "p", "t", "ɪ", "ʃ", "ə", "s", " ", "f", "ɛ", "ː", "n", "ˈ", "o", "ː", "m", "ə", "n", ",", " ", "d", "a", "s", " ", "a", "l", "s", " ", "k", "ɾ", "ˈ", "a", "ɪ", "s", "b", "o", "ː", "ɡ", "ˌ", "ɛ", "n", "f", "œ", "ɾ", "m", "ˌ", "ɪ", "ɡ", "ə", "s", " ", "f", "ˈ", "a", "ɾ", "b", "ɪ", "ɡ", "ə", "s", " ", "l", "ˈ", "ɪ", "c", "̧", "t", "b", "a", "n", "t", " ", "ɪ", "n", " ", "ˌ", "a", "ɪ", "n", "ɜ", " ", "f", "ɔ", "n", " ", "d", "ɛ", "ɾ", " ", "z", "ˈ", "ɔ", "n", "ə", " ", "b", "ə", "ʃ", "ˈ", "i", "ː", "n", "ə", "n", "ə", "n", " ", "r", "ˈ", "e", "ː", "ɡ", "ə", "n", "v", "ˌ", "a", "n", "t", " ", "ˌ", "o", "ː", "d", "ɜ", " ", "v", "ˈ", "ɔ", "l", "k", "ə", " ", "v", "ˈ", "ɑ", "ː", "ɾ", "ɡ", "ə", "n", "ˌ", "ɔ", "m", "ə", "n", " ", "v", "ˌ", "ɪ", "ɾ", "t", "."], "phoneme_ids": [1, 0, 17, 0, 61, 0, 92, 0, 3, 0, 30, 0, 121, 0, 18, 0, 122, 0, 66, 0, 59, 0, 26, 0, 15, 0, 120, 0, 27, 0, 122, 0, 66, 0, 59, 0, 26, 0, 3, 0, 74, 0, 31, 0, 32, 0, 3, 0, 14, 0, 74, 0, 26, 0, 3, 0, 121, 0, 14, 0, 32, 0, 25, 0, 54, 0, 31, 0, 19, 0, 120, 0, 61, 0, 122, 0, 30, 0, 74, 0, 96, 0, 120, 0, 54, 0, 28, 0, 32, 0, 74, 0, 96, 0, 59, 0, 31, 0, 3, 0, 19, 0, 61, 0, 122, 0, 26, 0, 120, 0, 27, 0, 122, 0, 25, 0, 59, 0, 26, 0, 8, 0, 3, 0, 17, 0, 14, 0, 31, 0, 3, 0, 14, 0, 24, 0, 31, 0, 3, 0, 23, 0, 92, 0, 120, 0, 14, 0, 74, 0, 31, 0, 15, 0, 27, 0, 122, 0, 66, 0, 121, 0, 61, 0, 26, 0, 19, 0, 45, 0, 92, 0, 25, 0, 121, 0, 74, 0, 66, 0, 59, 0, 31, 0, 3, 0, 19, 0, 120, 0, 14, 0, 92, 0, 15, 0, 74, 0, 66, 0, 59, 0, 31, 0, 3, 0, 24, 0, 120, 0, 74, 0, 16, 0, 140, 0, 32, 0, 15, 0, 14, 0, 26, 0, 32, 0, 3, 0, 74, 0, 26, 0, 3, 0, 121, 0, 14, 0, 74, 0, 26, 0, 62, 0, 3, 0, 19, 0, 54, 0, 26, 0, 3, 0, 17, 0, 61, 0, 92, 0, 3, 0, 38, 0, 120, 0, 54, 0, 26, 0, 59, 0, 3, 0, 15, 0, 59, 0, 96, 0, 120, 0, 21, 0, 122, 0, 26, 0, 59, 0, 26, 0, 59, 0, 26, 0, 3, 0, 30, 0, 120, 0, 18, 0, 122, 0, 66, 0, 59, 0, 26, 0, 34, 0, 121, 0, 14, 0, 26, 0, 32, 0, 3, 0, 121, 0, 27, 0, 122, 0, 17, 0, 62, 0, 3, 0, 34, 0, 120, 0, 54, 0, 24, 0, 23, 0, 59, 0, 3, 0, 34, 0, 120, 0, 51, 0, 122, 0, 92, 0, 66, 0, 59, 0, 26, 0, 121, 0, 54, 0, 25, 0, 59, 0, 26, 0, 3, 0, 34, 0, 121, 0, 74, 0, 92, 0, 32, 0, 10, 0, 2]} +{"text": "Sein radialer Farbverlauf ist das mehr oder weniger verweißlichte sichtbare Licht des Sonnenspektrums.", "phonemes": ["z", "a", "ɪ", "n", " ", "r", "ˌ", "ɑ", "d", "i", "ː", "ˈ", "ɑ", "ː", "l", "ɜ", " ", "f", "ˈ", "a", "ɾ", "p", "f", "ɛ", "ɾ", "l", "ˌ", "a", "ʊ", "f", " ", "ɪ", "s", "t", " ", "d", "a", "s", " ", "m", "ˈ", "e", "ː", "ɾ", " ", "ˌ", "o", "ː", "d", "ɜ", " ", "v", "ˈ", "e", "ː", "n", "ɪ", "ɡ", "ɜ", " ", "f", "ɛ", "ɾ", "v", "ˈ", "a", "ɪ", "s", "l", "ɪ", "c", "̧", "t", "ə", " ", "z", "ˈ", "ɪ", "c", "̧", "t", "b", "ɑ", "ː", "r", "ə", " ", "l", "ˈ", "ɪ", "c", "̧", "t", " ", "d", "ɛ", "s", " ", "z", "ˈ", "ɔ", "n", "ə", "n", "s", "p", "ˌ", "ɛ", "k", "t", "ɾ", "ʊ", "m", "s", "."], "phoneme_ids": [1, 0, 38, 0, 14, 0, 74, 0, 26, 0, 3, 0, 30, 0, 121, 0, 51, 0, 17, 0, 21, 0, 122, 0, 120, 0, 51, 0, 122, 0, 24, 0, 62, 0, 3, 0, 19, 0, 120, 0, 14, 0, 92, 0, 28, 0, 19, 0, 61, 0, 92, 0, 24, 0, 121, 0, 14, 0, 100, 0, 19, 0, 3, 0, 74, 0, 31, 0, 32, 0, 3, 0, 17, 0, 14, 0, 31, 0, 3, 0, 25, 0, 120, 0, 18, 0, 122, 0, 92, 0, 3, 0, 121, 0, 27, 0, 122, 0, 17, 0, 62, 0, 3, 0, 34, 0, 120, 0, 18, 0, 122, 0, 26, 0, 74, 0, 66, 0, 62, 0, 3, 0, 19, 0, 61, 0, 92, 0, 34, 0, 120, 0, 14, 0, 74, 0, 31, 0, 24, 0, 74, 0, 16, 0, 140, 0, 32, 0, 59, 0, 3, 0, 38, 0, 120, 0, 74, 0, 16, 0, 140, 0, 32, 0, 15, 0, 51, 0, 122, 0, 30, 0, 59, 0, 3, 0, 24, 0, 120, 0, 74, 0, 16, 0, 140, 0, 32, 0, 3, 0, 17, 0, 61, 0, 31, 0, 3, 0, 38, 0, 120, 0, 54, 0, 26, 0, 59, 0, 26, 0, 31, 0, 28, 0, 121, 0, 61, 0, 23, 0, 32, 0, 92, 0, 100, 0, 25, 0, 31, 0, 10, 0, 2]} +{"text": "Das Sonnenlicht wird beim Ein- und beim Austritt an jedem annähernd kugelförmigen Regentropfen abgelenkt und in Licht mehrerer Farben zerlegt.", "phonemes": ["d", "a", "s", " ", "z", "ˈ", "ɔ", "n", "ə", "n", "l", "ˌ", "ɪ", "c", "̧", "t", " ", "v", "ˌ", "ɪ", "ɾ", "t", " ", "b", "a", "ɪ", "m", " ", "a", "ɪ", "n", " ", "ʊ", "n", "t", " ", "b", "a", "ɪ", "m", " ", "ˈ", "a", "ʊ", "s", "t", "ɾ", "ˌ", "ɪ", "t", " ", "a", "n", " ", "j", "ˈ", "e", "ː", "d", "ə", "m", " ", "ˈ", "a", "n", "n", "ˌ", "ɛ", "ː", "ɛ", "ɾ", "n", "t", " ", "k", "ˈ", "u", "ː", "ɡ", "ə", "l", "f", "ˌ", "œ", "ɾ", "m", "ɪ", "ɡ", "ə", "n", " ", "r", "ˈ", "e", "ː", "ɡ", "ə", "n", "t", "ɾ", "ˌ", "ɔ", "p", "f", "ə", "n", " ", "ˈ", "a", "p", "ɡ", "ə", "l", "ˌ", "ɛ", "ŋ", "k", "t", " ", "ʊ", "n", "t", " ", "ɪ", "n", " ", "l", "ˈ", "ɪ", "c", "̧", "t", " ", "m", "ˈ", "e", "ː", "r", "ə", "r", "ɜ", " ", "f", "ˈ", "a", "ɾ", "b", "ə", "n", " ", "t", "s", "ɛ", "ɾ", "l", "ˈ", "e", "ː", "k", "t", "."], "phoneme_ids": [1, 0, 17, 0, 14, 0, 31, 0, 3, 0, 38, 0, 120, 0, 54, 0, 26, 0, 59, 0, 26, 0, 24, 0, 121, 0, 74, 0, 16, 0, 140, 0, 32, 0, 3, 0, 34, 0, 121, 0, 74, 0, 92, 0, 32, 0, 3, 0, 15, 0, 14, 0, 74, 0, 25, 0, 3, 0, 14, 0, 74, 0, 26, 0, 3, 0, 100, 0, 26, 0, 32, 0, 3, 0, 15, 0, 14, 0, 74, 0, 25, 0, 3, 0, 120, 0, 14, 0, 100, 0, 31, 0, 32, 0, 92, 0, 121, 0, 74, 0, 32, 0, 3, 0, 14, 0, 26, 0, 3, 0, 22, 0, 120, 0, 18, 0, 122, 0, 17, 0, 59, 0, 25, 0, 3, 0, 120, 0, 14, 0, 26, 0, 26, 0, 121, 0, 61, 0, 122, 0, 61, 0, 92, 0, 26, 0, 32, 0, 3, 0, 23, 0, 120, 0, 33, 0, 122, 0, 66, 0, 59, 0, 24, 0, 19, 0, 121, 0, 45, 0, 92, 0, 25, 0, 74, 0, 66, 0, 59, 0, 26, 0, 3, 0, 30, 0, 120, 0, 18, 0, 122, 0, 66, 0, 59, 0, 26, 0, 32, 0, 92, 0, 121, 0, 54, 0, 28, 0, 19, 0, 59, 0, 26, 0, 3, 0, 120, 0, 14, 0, 28, 0, 66, 0, 59, 0, 24, 0, 121, 0, 61, 0, 44, 0, 23, 0, 32, 0, 3, 0, 100, 0, 26, 0, 32, 0, 3, 0, 74, 0, 26, 0, 3, 0, 24, 0, 120, 0, 74, 0, 16, 0, 140, 0, 32, 0, 3, 0, 25, 0, 120, 0, 18, 0, 122, 0, 30, 0, 59, 0, 30, 0, 62, 0, 3, 0, 19, 0, 120, 0, 14, 0, 92, 0, 15, 0, 59, 0, 26, 0, 3, 0, 32, 0, 31, 0, 61, 0, 92, 0, 24, 0, 120, 0, 18, 0, 122, 0, 23, 0, 32, 0, 10, 0, 2]} +{"text": "Dazwischen wird es an der Tropfenrückseite reflektiert.", "phonemes": ["d", "ˈ", "a", "t", "s", "v", "ɪ", "ʃ", "ə", "n", " ", "v", "ˌ", "ɪ", "ɾ", "t", " ", "ɛ", "s", " ", "a", "n", " ", "d", "ɛ", "ɾ", " ", "t", "ɾ", "ˈ", "ɔ", "p", "f", "ə", "n", "r", "ˌ", "y", "k", "z", "a", "ɪ", "t", "ə", " ", "r", "ˌ", "ɛ", "f", "l", "ɛ", "k", "t", "ˈ", "i", "ː", "ɾ", "t", "."], "phoneme_ids": [1, 0, 17, 0, 120, 0, 14, 0, 32, 0, 31, 0, 34, 0, 74, 0, 96, 0, 59, 0, 26, 0, 3, 0, 34, 0, 121, 0, 74, 0, 92, 0, 32, 0, 3, 0, 61, 0, 31, 0, 3, 0, 14, 0, 26, 0, 3, 0, 17, 0, 61, 0, 92, 0, 3, 0, 32, 0, 92, 0, 120, 0, 54, 0, 28, 0, 19, 0, 59, 0, 26, 0, 30, 0, 121, 0, 37, 0, 23, 0, 38, 0, 14, 0, 74, 0, 32, 0, 59, 0, 3, 0, 30, 0, 121, 0, 61, 0, 19, 0, 24, 0, 61, 0, 23, 0, 32, 0, 120, 0, 21, 0, 122, 0, 92, 0, 32, 0, 10, 0, 2]} +{"text": "Das jeden Tropfen verlassende Licht ist in farbigen Schichten konzentriert, die aufeinandergesteckte dünne Kegelmäntel bilden.", "phonemes": ["d", "a", "s", " ", "j", "ˈ", "e", "ː", "d", "ə", "n", " ", "t", "ɾ", "ˈ", "ɔ", "p", "f", "ə", "n", " ", "f", "ɛ", "ɾ", "l", "ˈ", "a", "s", "ə", "n", "d", "ə", " ", "l", "ˈ", "ɪ", "c", "̧", "t", " ", "ɪ", "s", "t", " ", "ɪ", "n", " ", "f", "ˈ", "a", "ɾ", "b", "ɪ", "ɡ", "ə", "n", " ", "ʃ", "ˈ", "ɪ", "c", "̧", "t", "ə", "n", " ", "k", "ɔ", "n", "t", "s", "ɛ", "n", "t", "ɾ", "ˈ", "i", "ː", "ɾ", "t", ",", " ", "d", "i", "ː", " ", "ˌ", "a", "ʊ", "f", "a", "ɪ", "n", "ˈ", "a", "n", "d", "ɜ", "ɡ", "ˌ", "ɛ", "s", "t", "ɛ", "k", "t", "ə", " ", "d", "ˈ", "y", "n", "ə", " ", "k", "ˈ", "e", "ː", "ɡ", "ə", "l", "m", "ˌ", "ɛ", "n", "t", "ə", "l", " ", "b", "ˈ", "ɪ", "l", "d", "ə", "n", "."], "phoneme_ids": [1, 0, 17, 0, 14, 0, 31, 0, 3, 0, 22, 0, 120, 0, 18, 0, 122, 0, 17, 0, 59, 0, 26, 0, 3, 0, 32, 0, 92, 0, 120, 0, 54, 0, 28, 0, 19, 0, 59, 0, 26, 0, 3, 0, 19, 0, 61, 0, 92, 0, 24, 0, 120, 0, 14, 0, 31, 0, 59, 0, 26, 0, 17, 0, 59, 0, 3, 0, 24, 0, 120, 0, 74, 0, 16, 0, 140, 0, 32, 0, 3, 0, 74, 0, 31, 0, 32, 0, 3, 0, 74, 0, 26, 0, 3, 0, 19, 0, 120, 0, 14, 0, 92, 0, 15, 0, 74, 0, 66, 0, 59, 0, 26, 0, 3, 0, 96, 0, 120, 0, 74, 0, 16, 0, 140, 0, 32, 0, 59, 0, 26, 0, 3, 0, 23, 0, 54, 0, 26, 0, 32, 0, 31, 0, 61, 0, 26, 0, 32, 0, 92, 0, 120, 0, 21, 0, 122, 0, 92, 0, 32, 0, 8, 0, 3, 0, 17, 0, 21, 0, 122, 0, 3, 0, 121, 0, 14, 0, 100, 0, 19, 0, 14, 0, 74, 0, 26, 0, 120, 0, 14, 0, 26, 0, 17, 0, 62, 0, 66, 0, 121, 0, 61, 0, 31, 0, 32, 0, 61, 0, 23, 0, 32, 0, 59, 0, 3, 0, 17, 0, 120, 0, 37, 0, 26, 0, 59, 0, 3, 0, 23, 0, 120, 0, 18, 0, 122, 0, 66, 0, 59, 0, 24, 0, 25, 0, 121, 0, 61, 0, 26, 0, 32, 0, 59, 0, 24, 0, 3, 0, 15, 0, 120, 0, 74, 0, 24, 0, 17, 0, 59, 0, 26, 0, 10, 0, 2]} +{"text": "Der Beobachter hat die Regenwolke vor sich und die Sonne im Rücken.", "phonemes": ["d", "ɛ", "ɾ", " ", "b", "ə", "ˈ", "o", "ː", "b", "a", "x", "t", "ɜ", " ", "h", "a", "t", " ", "d", "i", "ː", " ", "r", "ˈ", "e", "ː", "ɡ", "ə", "n", "v", "ˌ", "ɔ", "l", "k", "ə", " ", "f", "ˌ", "ɔ", "ɾ", " ", "z", "ɪ", "c", "̧", " ", "ʊ", "n", "t", " ", "d", "i", "ː", " ", "z", "ˈ", "ɔ", "n", "ə", " ", "ɪ", "m", " ", "r", "ˈ", "y", "k", "ə", "n", "."], "phoneme_ids": [1, 0, 17, 0, 61, 0, 92, 0, 3, 0, 15, 0, 59, 0, 120, 0, 27, 0, 122, 0, 15, 0, 14, 0, 36, 0, 32, 0, 62, 0, 3, 0, 20, 0, 14, 0, 32, 0, 3, 0, 17, 0, 21, 0, 122, 0, 3, 0, 30, 0, 120, 0, 18, 0, 122, 0, 66, 0, 59, 0, 26, 0, 34, 0, 121, 0, 54, 0, 24, 0, 23, 0, 59, 0, 3, 0, 19, 0, 121, 0, 54, 0, 92, 0, 3, 0, 38, 0, 74, 0, 16, 0, 140, 0, 3, 0, 100, 0, 26, 0, 32, 0, 3, 0, 17, 0, 21, 0, 122, 0, 3, 0, 38, 0, 120, 0, 54, 0, 26, 0, 59, 0, 3, 0, 74, 0, 25, 0, 3, 0, 30, 0, 120, 0, 37, 0, 23, 0, 59, 0, 26, 0, 10, 0, 2]} +{"text": "Ihn erreicht Licht einer bestimmten Farbe aus Regentropfen, die sich auf einem schmalen Kreisbogen am Himmel befinden.", "phonemes": ["i", "ː", "n", " ", "ɛ", "ɾ", "r", "ˈ", "a", "ɪ", "c", "̧", "t", " ", "l", "ˈ", "ɪ", "c", "̧", "t", " ", "ˌ", "a", "ɪ", "n", "ɜ", " ", "b", "ə", "ʃ", "t", "ˈ", "ɪ", "m", "t", "ə", "n", " ", "f", "ˈ", "a", "ɾ", "b", "ə", " ", "ˌ", "a", "ʊ", "s", " ", "r", "ˈ", "e", "ː", "ɡ", "ə", "n", "t", "ɾ", "ˌ", "ɔ", "p", "f", "ə", "n", ",", " ", "d", "i", "ː", " ", "z", "ɪ", "c", "̧", " ", "a", "ʊ", "f", " ", "ˌ", "a", "ɪ", "n", "ə", "m", " ", "ʃ", "m", "ˈ", "ɑ", "ː", "l", "ə", "n", " ", "k", "ɾ", "a", "ɪ", "s", "b", "ˈ", "o", "ː", "ɡ", "ə", "n", " ", "a", "m", " ", "h", "ˈ", "ɪ", "m", "ə", "l", " ", "b", "ə", "f", "ˈ", "ɪ", "n", "d", "ə", "n", "."], "phoneme_ids": [1, 0, 21, 0, 122, 0, 26, 0, 3, 0, 61, 0, 92, 0, 30, 0, 120, 0, 14, 0, 74, 0, 16, 0, 140, 0, 32, 0, 3, 0, 24, 0, 120, 0, 74, 0, 16, 0, 140, 0, 32, 0, 3, 0, 121, 0, 14, 0, 74, 0, 26, 0, 62, 0, 3, 0, 15, 0, 59, 0, 96, 0, 32, 0, 120, 0, 74, 0, 25, 0, 32, 0, 59, 0, 26, 0, 3, 0, 19, 0, 120, 0, 14, 0, 92, 0, 15, 0, 59, 0, 3, 0, 121, 0, 14, 0, 100, 0, 31, 0, 3, 0, 30, 0, 120, 0, 18, 0, 122, 0, 66, 0, 59, 0, 26, 0, 32, 0, 92, 0, 121, 0, 54, 0, 28, 0, 19, 0, 59, 0, 26, 0, 8, 0, 3, 0, 17, 0, 21, 0, 122, 0, 3, 0, 38, 0, 74, 0, 16, 0, 140, 0, 3, 0, 14, 0, 100, 0, 19, 0, 3, 0, 121, 0, 14, 0, 74, 0, 26, 0, 59, 0, 25, 0, 3, 0, 96, 0, 25, 0, 120, 0, 51, 0, 122, 0, 24, 0, 59, 0, 26, 0, 3, 0, 23, 0, 92, 0, 14, 0, 74, 0, 31, 0, 15, 0, 120, 0, 27, 0, 122, 0, 66, 0, 59, 0, 26, 0, 3, 0, 14, 0, 25, 0, 3, 0, 20, 0, 120, 0, 74, 0, 25, 0, 59, 0, 24, 0, 3, 0, 15, 0, 59, 0, 19, 0, 120, 0, 74, 0, 26, 0, 17, 0, 59, 0, 26, 0, 10, 0, 2]} +{"text": "Der Winkel, unter dem der Regenbogen gesehen wird, ist gleich wie der Winkel der Kegelmäntel, in dem diese Farben beim Austritt am Regentropfen konzentriert sind.", "phonemes": ["d", "ɛ", "ɾ", " ", "v", "ˈ", "ɪ", "n", "k", "ə", "l", ",", " ", "ˌ", "ʊ", "n", "t", "ɜ", " ", "d", "e", "ː", "m", " ", "d", "ɛ", "ɾ", " ", "r", "ˌ", "e", "ː", "ɡ", "ə", "n", "b", "ˈ", "o", "ː", "ɡ", "ə", "n", " ", "ɡ", "ə", "z", "ˈ", "e", "ː", "ə", "n", " ", "v", "ˌ", "ɪ", "ɾ", "t", ",", " ", "ɪ", "s", "t", " ", "ɡ", "l", "ˈ", "a", "ɪ", "c", "̧", " ", "v", "i", "ː", " ", "d", "ɛ", "ɾ", " ", "v", "ˈ", "ɪ", "n", "k", "ə", "l", " ", "d", "ɛ", "ɾ", " ", "k", "ˈ", "e", "ː", "ɡ", "ə", "l", "m", "ˌ", "ɛ", "n", "t", "ə", "l", ",", " ", "ɪ", "n", " ", "d", "e", "ː", "m", " ", "d", "ˌ", "i", "ː", "z", "ə", " ", "f", "ˈ", "a", "ɾ", "b", "ə", "n", " ", "b", "a", "ɪ", "m", " ", "ˈ", "a", "ʊ", "s", "t", "ɾ", "ˌ", "ɪ", "t", " ", "a", "m", " ", "r", "ˈ", "e", "ː", "ɡ", "ə", "n", "t", "ɾ", "ˌ", "ɔ", "p", "f", "ə", "n", " ", "k", "ɔ", "n", "t", "s", "ɛ", "n", "t", "ɾ", "ˈ", "i", "ː", "ɾ", "t", " ", "z", "ɪ", "n", "t", "."], "phoneme_ids": [1, 0, 17, 0, 61, 0, 92, 0, 3, 0, 34, 0, 120, 0, 74, 0, 26, 0, 23, 0, 59, 0, 24, 0, 8, 0, 3, 0, 121, 0, 100, 0, 26, 0, 32, 0, 62, 0, 3, 0, 17, 0, 18, 0, 122, 0, 25, 0, 3, 0, 17, 0, 61, 0, 92, 0, 3, 0, 30, 0, 121, 0, 18, 0, 122, 0, 66, 0, 59, 0, 26, 0, 15, 0, 120, 0, 27, 0, 122, 0, 66, 0, 59, 0, 26, 0, 3, 0, 66, 0, 59, 0, 38, 0, 120, 0, 18, 0, 122, 0, 59, 0, 26, 0, 3, 0, 34, 0, 121, 0, 74, 0, 92, 0, 32, 0, 8, 0, 3, 0, 74, 0, 31, 0, 32, 0, 3, 0, 66, 0, 24, 0, 120, 0, 14, 0, 74, 0, 16, 0, 140, 0, 3, 0, 34, 0, 21, 0, 122, 0, 3, 0, 17, 0, 61, 0, 92, 0, 3, 0, 34, 0, 120, 0, 74, 0, 26, 0, 23, 0, 59, 0, 24, 0, 3, 0, 17, 0, 61, 0, 92, 0, 3, 0, 23, 0, 120, 0, 18, 0, 122, 0, 66, 0, 59, 0, 24, 0, 25, 0, 121, 0, 61, 0, 26, 0, 32, 0, 59, 0, 24, 0, 8, 0, 3, 0, 74, 0, 26, 0, 3, 0, 17, 0, 18, 0, 122, 0, 25, 0, 3, 0, 17, 0, 121, 0, 21, 0, 122, 0, 38, 0, 59, 0, 3, 0, 19, 0, 120, 0, 14, 0, 92, 0, 15, 0, 59, 0, 26, 0, 3, 0, 15, 0, 14, 0, 74, 0, 25, 0, 3, 0, 120, 0, 14, 0, 100, 0, 31, 0, 32, 0, 92, 0, 121, 0, 74, 0, 32, 0, 3, 0, 14, 0, 25, 0, 3, 0, 30, 0, 120, 0, 18, 0, 122, 0, 66, 0, 59, 0, 26, 0, 32, 0, 92, 0, 121, 0, 54, 0, 28, 0, 19, 0, 59, 0, 26, 0, 3, 0, 23, 0, 54, 0, 26, 0, 32, 0, 31, 0, 61, 0, 26, 0, 32, 0, 92, 0, 120, 0, 21, 0, 122, 0, 92, 0, 32, 0, 3, 0, 38, 0, 74, 0, 26, 0, 32, 0, 10, 0, 2]} +{"text": "Victor jagt zwölf Boxkämpfer quer über den großen Sylter Deich.", "phonemes": ["v", "ˈ", "ɪ", "k", "t", "o", "ː", "ɾ", " ", "j", "ˈ", "ɑ", "ː", "k", "t", " ", "t", "s", "v", "ˈ", "œ", "l", "f", " ", "b", "ˈ", "ɔ", "k", "s", "k", "ɛ", "m", "p", "f", "ɜ", " ", "k", "v", "ˈ", "e", "ː", "ɾ", " ", "ˌ", "y", "ː", "b", "ɜ", " ", "d", "e", "ː", "n", " ", "ɡ", "ɾ", "ˈ", "o", "ː", "s", "ə", "n", " ", "z", "ˈ", "y", "l", "t", "ɜ", " ", "d", "ˈ", "a", "ɪ", "c", "̧", "."], "phoneme_ids": [1, 0, 34, 0, 120, 0, 74, 0, 23, 0, 32, 0, 27, 0, 122, 0, 92, 0, 3, 0, 22, 0, 120, 0, 51, 0, 122, 0, 23, 0, 32, 0, 3, 0, 32, 0, 31, 0, 34, 0, 120, 0, 45, 0, 24, 0, 19, 0, 3, 0, 15, 0, 120, 0, 54, 0, 23, 0, 31, 0, 23, 0, 61, 0, 25, 0, 28, 0, 19, 0, 62, 0, 3, 0, 23, 0, 34, 0, 120, 0, 18, 0, 122, 0, 92, 0, 3, 0, 121, 0, 37, 0, 122, 0, 15, 0, 62, 0, 3, 0, 17, 0, 18, 0, 122, 0, 26, 0, 3, 0, 66, 0, 92, 0, 120, 0, 27, 0, 122, 0, 31, 0, 59, 0, 26, 0, 3, 0, 38, 0, 120, 0, 37, 0, 24, 0, 32, 0, 62, 0, 3, 0, 17, 0, 120, 0, 14, 0, 74, 0, 16, 0, 140, 0, 10, 0, 2]} +{"text": "Falsches Üben von Xylophonmusik quält jeden größeren Zwerg.", "phonemes": ["f", "ˈ", "a", "l", "ʃ", "ə", "s", " ", "ˈ", "y", "ː", "b", "ə", "n", " ", "f", "ɔ", "n", " ", "k", "s", "ˈ", "y", "ː", "l", "o", "ː", "f", "ˌ", "ɔ", "n", "m", "u", "ː", "z", "ˌ", "i", "ː", "k", " ", "k", "v", "ˈ", "ɛ", "l", "t", " ", "j", "ˈ", "e", "ː", "d", "ə", "n", " ", "ɡ", "ɾ", "ˈ", "ø", "ː", "s", "ə", "r", "ə", "n", " ", "t", "s", "v", "ˈ", "ɛ", "ɾ", "k", "."], "phoneme_ids": [1, 0, 19, 0, 120, 0, 14, 0, 24, 0, 96, 0, 59, 0, 31, 0, 3, 0, 120, 0, 37, 0, 122, 0, 15, 0, 59, 0, 26, 0, 3, 0, 19, 0, 54, 0, 26, 0, 3, 0, 23, 0, 31, 0, 120, 0, 37, 0, 122, 0, 24, 0, 27, 0, 122, 0, 19, 0, 121, 0, 54, 0, 26, 0, 25, 0, 33, 0, 122, 0, 38, 0, 121, 0, 21, 0, 122, 0, 23, 0, 3, 0, 23, 0, 34, 0, 120, 0, 61, 0, 24, 0, 32, 0, 3, 0, 22, 0, 120, 0, 18, 0, 122, 0, 17, 0, 59, 0, 26, 0, 3, 0, 66, 0, 92, 0, 120, 0, 42, 0, 122, 0, 31, 0, 59, 0, 30, 0, 59, 0, 26, 0, 3, 0, 32, 0, 31, 0, 34, 0, 120, 0, 61, 0, 92, 0, 23, 0, 10, 0, 2]} diff --git a/piper/piper/etc/test_sentences/test_en-gb-x-rp.jsonl b/piper/piper/etc/test_sentences/test_en-gb-x-rp.jsonl new file mode 100644 index 0000000..1935e9c --- /dev/null +++ b/piper/piper/etc/test_sentences/test_en-gb-x-rp.jsonl @@ -0,0 +1,7 @@ +{"text": "A rainbow is a meteorological phenomenon that is caused by reflection, refraction and dispersion of light in water droplets resulting in a spectrum of light appearing in the sky.", "phonemes": ["ɐ", " ", "ɹ", "ˈ", "e", "ɪ", "n", "b", "ə", "ʊ", " ", "ɪ", "z", " ", "ɐ", " ", "m", "ˌ", "i", "ː", "t", "ɪ", "ˌ", "ɔ", "ː", "ɹ", "ə", "l", "ˈ", "ɒ", "d", "ʒ", "ɪ", "k", "ə", "l", " ", "f", "ɪ", "n", "ˈ", "ɒ", "m", "ɪ", "n", "ə", "n", " ", "ð", "æ", "t", " ", "ɪ", "z", " ", "k", "ˈ", "ɔ", "ː", "z", "d", " ", "b", "a", "ɪ", " ", "ɹ", "ɪ", "f", "l", "ˈ", "ɛ", "k", "ʃ", "ə", "n", ",", " ", "ɹ", "ɪ", "f", "ɹ", "ˈ", "æ", "k", "ʃ", "ə", "n", " ", "æ", "n", "d", " ", "d", "ɪ", "s", "p", "ˈ", "ɜ", "ː", "ʃ", "ə", "n", " ", "ɒ", "v", " ", "l", "ˈ", "a", "ɪ", "t", " ", "ɪ", "n", " ", "w", "ˈ", "ɔ", "ː", "t", "ɐ", " ", "d", "ɹ", "ˈ", "ɒ", "p", "l", "ɪ", "t", "s", " ", "ɹ", "ɪ", "z", "ˈ", "ʌ", "l", "t", "ɪ", "ŋ", " ", "ɪ", "n", " ", "ɐ", " ", "s", "p", "ˈ", "ɛ", "k", "t", "ɹ", "ə", "m", " ", "ɒ", "v", " ", "l", "ˈ", "a", "ɪ", "t", " ", "ɐ", "p", "ˈ", "i", "ə", "ɹ", "ɪ", "ŋ", " ", "ɪ", "n", "ð", "ə", " ", "s", "k", "ˈ", "a", "ɪ", "."], "phoneme_ids": [1, 0, 50, 0, 3, 0, 88, 0, 120, 0, 18, 0, 74, 0, 26, 0, 15, 0, 59, 0, 100, 0, 3, 0, 74, 0, 38, 0, 3, 0, 50, 0, 3, 0, 25, 0, 121, 0, 21, 0, 122, 0, 32, 0, 74, 0, 121, 0, 54, 0, 122, 0, 88, 0, 59, 0, 24, 0, 120, 0, 52, 0, 17, 0, 108, 0, 74, 0, 23, 0, 59, 0, 24, 0, 3, 0, 19, 0, 74, 0, 26, 0, 120, 0, 52, 0, 25, 0, 74, 0, 26, 0, 59, 0, 26, 0, 3, 0, 41, 0, 39, 0, 32, 0, 3, 0, 74, 0, 38, 0, 3, 0, 23, 0, 120, 0, 54, 0, 122, 0, 38, 0, 17, 0, 3, 0, 15, 0, 14, 0, 74, 0, 3, 0, 88, 0, 74, 0, 19, 0, 24, 0, 120, 0, 61, 0, 23, 0, 96, 0, 59, 0, 26, 0, 8, 0, 3, 0, 88, 0, 74, 0, 19, 0, 88, 0, 120, 0, 39, 0, 23, 0, 96, 0, 59, 0, 26, 0, 3, 0, 39, 0, 26, 0, 17, 0, 3, 0, 17, 0, 74, 0, 31, 0, 28, 0, 120, 0, 62, 0, 122, 0, 96, 0, 59, 0, 26, 0, 3, 0, 52, 0, 34, 0, 3, 0, 24, 0, 120, 0, 14, 0, 74, 0, 32, 0, 3, 0, 74, 0, 26, 0, 3, 0, 35, 0, 120, 0, 54, 0, 122, 0, 32, 0, 50, 0, 3, 0, 17, 0, 88, 0, 120, 0, 52, 0, 28, 0, 24, 0, 74, 0, 32, 0, 31, 0, 3, 0, 88, 0, 74, 0, 38, 0, 120, 0, 102, 0, 24, 0, 32, 0, 74, 0, 44, 0, 3, 0, 74, 0, 26, 0, 3, 0, 50, 0, 3, 0, 31, 0, 28, 0, 120, 0, 61, 0, 23, 0, 32, 0, 88, 0, 59, 0, 25, 0, 3, 0, 52, 0, 34, 0, 3, 0, 24, 0, 120, 0, 14, 0, 74, 0, 32, 0, 3, 0, 50, 0, 28, 0, 120, 0, 21, 0, 59, 0, 88, 0, 74, 0, 44, 0, 3, 0, 74, 0, 26, 0, 41, 0, 59, 0, 3, 0, 31, 0, 23, 0, 120, 0, 14, 0, 74, 0, 10, 0, 2]} +{"text": "It takes the form of a multi-colored circular arc.", "phonemes": ["ɪ", "t", " ", "t", "ˈ", "e", "ɪ", "k", "s", " ", "ð", "ə", " ", "f", "ˈ", "ɔ", "ː", "m", " ", "ə", "v", "ɐ", " ", "m", "ˈ", "ʌ", "l", "t", "ɪ", "k", "ˈ", "ʌ", "l", "ə", "d", " ", "s", "ˈ", "ɜ", "ː", "k", "j", "ʊ", "l", "ɐ", "ɹ", " ", "ˈ", "ɑ", "ː", "k", "."], "phoneme_ids": [1, 0, 74, 0, 32, 0, 3, 0, 32, 0, 120, 0, 18, 0, 74, 0, 23, 0, 31, 0, 3, 0, 41, 0, 59, 0, 3, 0, 19, 0, 120, 0, 54, 0, 122, 0, 25, 0, 3, 0, 59, 0, 34, 0, 50, 0, 3, 0, 25, 0, 120, 0, 102, 0, 24, 0, 32, 0, 74, 0, 23, 0, 120, 0, 102, 0, 24, 0, 59, 0, 17, 0, 3, 0, 31, 0, 120, 0, 62, 0, 122, 0, 23, 0, 22, 0, 100, 0, 24, 0, 50, 0, 88, 0, 3, 0, 120, 0, 51, 0, 122, 0, 23, 0, 10, 0, 2]} +{"text": "Rainbows caused by sunlight always appear in the section of sky directly opposite the Sun.", "phonemes": ["ɹ", "ˈ", "e", "ɪ", "n", "b", "ə", "ʊ", "z", " ", "k", "ˈ", "ɔ", "ː", "z", "d", " ", "b", "a", "ɪ", " ", "s", "ˈ", "ʌ", "n", "l", "a", "ɪ", "t", " ", "ˈ", "ɔ", "ː", "l", "w", "e", "ɪ", "z", " ", "ɐ", "p", "ˈ", "i", "ə", "ɹ", " ", "ɪ", "n", "ð", "ə", " ", "s", "ˈ", "ɛ", "k", "ʃ", "ə", "n", " ", "ɒ", "v", " ", "s", "k", "ˈ", "a", "ɪ", " ", "d", "a", "ɪ", "ɹ", "ˈ", "ɛ", "k", "t", "l", "ɪ", " ", "ˈ", "ɒ", "p", "ə", "z", "ˌ", "ɪ", "t", " ", "ð", "ə", " ", "s", "ˈ", "ʌ", "n", "."], "phoneme_ids": [1, 0, 88, 0, 120, 0, 18, 0, 74, 0, 26, 0, 15, 0, 59, 0, 100, 0, 38, 0, 3, 0, 23, 0, 120, 0, 54, 0, 122, 0, 38, 0, 17, 0, 3, 0, 15, 0, 14, 0, 74, 0, 3, 0, 31, 0, 120, 0, 102, 0, 26, 0, 24, 0, 14, 0, 74, 0, 32, 0, 3, 0, 120, 0, 54, 0, 122, 0, 24, 0, 35, 0, 18, 0, 74, 0, 38, 0, 3, 0, 50, 0, 28, 0, 120, 0, 21, 0, 59, 0, 88, 0, 3, 0, 74, 0, 26, 0, 41, 0, 59, 0, 3, 0, 31, 0, 120, 0, 61, 0, 23, 0, 96, 0, 59, 0, 26, 0, 3, 0, 52, 0, 34, 0, 3, 0, 31, 0, 23, 0, 120, 0, 14, 0, 74, 0, 3, 0, 17, 0, 14, 0, 74, 0, 88, 0, 120, 0, 61, 0, 23, 0, 32, 0, 24, 0, 74, 0, 3, 0, 120, 0, 52, 0, 28, 0, 59, 0, 38, 0, 121, 0, 74, 0, 32, 0, 3, 0, 41, 0, 59, 0, 3, 0, 31, 0, 120, 0, 102, 0, 26, 0, 10, 0, 2]} +{"text": "With tenure, Suzie’d have all the more leisure for yachting, but her publications are no good.", "phonemes": ["w", "ɪ", "ð", " ", "t", "ˈ", "ɛ", "n", "j", "ɐ", ",", " ", "s", "ˈ", "u", "ː", "z", "ɪ", "d", " ", "h", "æ", "v", " ", "ˈ", "ɔ", "ː", "l", " ", "ð", "ə", " ", "m", "ˈ", "ɔ", "ː", " ", "l", "ˈ", "ɛ", "ʒ", "ɐ", " ", "f", "ɔ", "ː", " ", "j", "ˈ", "ɒ", "t", "ɪ", "ŋ", ",", " ", "b", "ˌ", "ʌ", "t", " ", "h", "ɜ", "ː", " ", "p", "ˌ", "ʌ", "b", "l", "ɪ", "k", "ˈ", "e", "ɪ", "ʃ", "ə", "n", "z", " ", "ɑ", "ː", " ", "n", "ˈ", "ə", "ʊ", " ", "ɡ", "ˈ", "ʊ", "d", "."], "phoneme_ids": [1, 0, 35, 0, 74, 0, 41, 0, 3, 0, 32, 0, 120, 0, 61, 0, 26, 0, 22, 0, 50, 0, 8, 0, 3, 0, 31, 0, 120, 0, 33, 0, 122, 0, 38, 0, 74, 0, 17, 0, 3, 0, 20, 0, 39, 0, 34, 0, 3, 0, 120, 0, 54, 0, 122, 0, 24, 0, 3, 0, 41, 0, 59, 0, 3, 0, 25, 0, 120, 0, 54, 0, 122, 0, 3, 0, 24, 0, 120, 0, 61, 0, 108, 0, 50, 0, 3, 0, 19, 0, 54, 0, 122, 0, 3, 0, 22, 0, 120, 0, 52, 0, 32, 0, 74, 0, 44, 0, 8, 0, 3, 0, 15, 0, 121, 0, 102, 0, 32, 0, 3, 0, 20, 0, 62, 0, 122, 0, 3, 0, 28, 0, 121, 0, 102, 0, 15, 0, 24, 0, 74, 0, 23, 0, 120, 0, 18, 0, 74, 0, 96, 0, 59, 0, 26, 0, 38, 0, 3, 0, 51, 0, 122, 0, 3, 0, 26, 0, 120, 0, 59, 0, 100, 0, 3, 0, 66, 0, 120, 0, 100, 0, 17, 0, 10, 0, 2]} +{"text": "Shaw, those twelve beige hooks are joined if I patch a young, gooey mouth.", "phonemes": ["ʃ", "ˈ", "ɔ", "ː", ",", " ", "ð", "ə", "ʊ", "z", " ", "t", "w", "ˈ", "ɛ", "l", "v", " ", "b", "ˈ", "e", "ɪ", "ʒ", " ", "h", "ˈ", "ʊ", "k", "s", " ", "ɑ", "ː", " ", "d", "ʒ", "ˈ", "ɔ", "ɪ", "n", "d", " ", "ɪ", "f", " ", "a", "ɪ", " ", "p", "ˈ", "æ", "t", "ʃ", " ", "ɐ", " ", "j", "ˈ", "ʌ", "ŋ", ",", " ", "ɡ", "ˈ", "u", "ː", "ɪ", " ", "m", "ˈ", "a", "ʊ", "θ", "."], "phoneme_ids": [1, 0, 96, 0, 120, 0, 54, 0, 122, 0, 8, 0, 3, 0, 41, 0, 59, 0, 100, 0, 38, 0, 3, 0, 32, 0, 35, 0, 120, 0, 61, 0, 24, 0, 34, 0, 3, 0, 15, 0, 120, 0, 18, 0, 74, 0, 108, 0, 3, 0, 20, 0, 120, 0, 100, 0, 23, 0, 31, 0, 3, 0, 51, 0, 122, 0, 3, 0, 17, 0, 108, 0, 120, 0, 54, 0, 74, 0, 26, 0, 17, 0, 3, 0, 74, 0, 19, 0, 3, 0, 14, 0, 74, 0, 3, 0, 28, 0, 120, 0, 39, 0, 32, 0, 96, 0, 3, 0, 50, 0, 3, 0, 22, 0, 120, 0, 102, 0, 44, 0, 8, 0, 3, 0, 66, 0, 120, 0, 33, 0, 122, 0, 74, 0, 3, 0, 25, 0, 120, 0, 14, 0, 100, 0, 126, 0, 10, 0, 2]} +{"text": "Are those shy Eurasian footwear, cowboy chaps, or jolly earthmoving headgear?", "phonemes": ["ɑ", "ː", " ", "ð", "ə", "ʊ", "z", " ", "ʃ", "ˈ", "a", "ɪ", " ", "j", "u", "ː", "ɹ", "ˈ", "e", "ɪ", "z", "i", "ə", "n", " ", "f", "ˈ", "ʊ", "t", "w", "e", "ə", ",", " ", "k", "ˈ", "a", "ʊ", "b", "ɔ", "ɪ", " ", "t", "ʃ", "ˈ", "æ", "p", "s", ",", " ", "ɔ", "ː", " ", "d", "ʒ", "ˈ", "ɒ", "l", "ɪ", " ", "ˈ", "ɜ", "ː", "θ", "m", "u", "ː", "v", "ɪ", "ŋ", " ", "h", "ˈ", "ɛ", "d", "ɡ", "i", "ə", "?"], "phoneme_ids": [1, 0, 51, 0, 122, 0, 3, 0, 41, 0, 59, 0, 100, 0, 38, 0, 3, 0, 96, 0, 120, 0, 14, 0, 74, 0, 3, 0, 22, 0, 33, 0, 122, 0, 88, 0, 120, 0, 18, 0, 74, 0, 38, 0, 21, 0, 59, 0, 26, 0, 3, 0, 19, 0, 120, 0, 100, 0, 32, 0, 35, 0, 18, 0, 59, 0, 8, 0, 3, 0, 23, 0, 120, 0, 14, 0, 100, 0, 15, 0, 54, 0, 74, 0, 3, 0, 32, 0, 96, 0, 120, 0, 39, 0, 28, 0, 31, 0, 8, 0, 3, 0, 54, 0, 122, 0, 3, 0, 17, 0, 108, 0, 120, 0, 52, 0, 24, 0, 74, 0, 3, 0, 120, 0, 62, 0, 122, 0, 126, 0, 25, 0, 33, 0, 122, 0, 34, 0, 74, 0, 44, 0, 3, 0, 20, 0, 120, 0, 61, 0, 17, 0, 66, 0, 21, 0, 59, 0, 13, 0, 2]} +{"text": "The beige hue on the waters of the loch impressed all, including the French queen, before she heard that symphony again, just as young Arthur wanted.", "phonemes": ["ð", "ə", " ", "b", "ˈ", "e", "ɪ", "ʒ", " ", "h", "j", "ˈ", "u", "ː", " ", "ɒ", "n", "ð", "ə", " ", "w", "ˈ", "ɔ", "ː", "t", "ə", "z", " ", "ɒ", "v", "ð", "ə", " ", "l", "ˈ", "ɒ", "x", " ", "ɪ", "m", "p", "ɹ", "ˈ", "ɛ", "s", "t", " ", "ˈ", "ɔ", "ː", "l", ",", " ", "ɪ", "ŋ", "k", "l", "ˈ", "u", "ː", "d", "ɪ", "ŋ", " ", "ð", "ə", " ", "f", "ɹ", "ˈ", "ɛ", "n", "t", "ʃ", " ", "k", "w", "ˈ", "i", "ː", "n", ",", " ", "b", "ɪ", "f", "ˌ", "ɔ", "ː", " ", "ʃ", "i", "ː", " ", "h", "ˈ", "ɜ", "ː", "d", " ", "ð", "æ", "t", " ", "s", "ˈ", "ɪ", "m", "f", "ə", "n", "ɪ", " ", "ɐ", "ɡ", "ˈ", "ɛ", "n", ",", " ", "d", "ʒ", "ˈ", "ʌ", "s", "t", " ", "æ", "z", " ", "j", "ˈ", "ʌ", "ŋ", " ", "ˈ", "ɑ", "ː", "θ", "ɐ", " ", "w", "ˈ", "ɒ", "n", "t", "ɪ", "d", "."], "phoneme_ids": [1, 0, 41, 0, 59, 0, 3, 0, 15, 0, 120, 0, 18, 0, 74, 0, 108, 0, 3, 0, 20, 0, 22, 0, 120, 0, 33, 0, 122, 0, 3, 0, 52, 0, 26, 0, 41, 0, 59, 0, 3, 0, 35, 0, 120, 0, 54, 0, 122, 0, 32, 0, 59, 0, 38, 0, 3, 0, 52, 0, 34, 0, 41, 0, 59, 0, 3, 0, 24, 0, 120, 0, 52, 0, 36, 0, 3, 0, 74, 0, 25, 0, 28, 0, 88, 0, 120, 0, 61, 0, 31, 0, 32, 0, 3, 0, 120, 0, 54, 0, 122, 0, 24, 0, 8, 0, 3, 0, 74, 0, 44, 0, 23, 0, 24, 0, 120, 0, 33, 0, 122, 0, 17, 0, 74, 0, 44, 0, 3, 0, 41, 0, 59, 0, 3, 0, 19, 0, 88, 0, 120, 0, 61, 0, 26, 0, 32, 0, 96, 0, 3, 0, 23, 0, 35, 0, 120, 0, 21, 0, 122, 0, 26, 0, 8, 0, 3, 0, 15, 0, 74, 0, 19, 0, 121, 0, 54, 0, 122, 0, 3, 0, 96, 0, 21, 0, 122, 0, 3, 0, 20, 0, 120, 0, 62, 0, 122, 0, 17, 0, 3, 0, 41, 0, 39, 0, 32, 0, 3, 0, 31, 0, 120, 0, 74, 0, 25, 0, 19, 0, 59, 0, 26, 0, 74, 0, 3, 0, 50, 0, 66, 0, 120, 0, 61, 0, 26, 0, 8, 0, 3, 0, 17, 0, 108, 0, 120, 0, 102, 0, 31, 0, 32, 0, 3, 0, 39, 0, 38, 0, 3, 0, 22, 0, 120, 0, 102, 0, 44, 0, 3, 0, 120, 0, 51, 0, 122, 0, 126, 0, 50, 0, 3, 0, 35, 0, 120, 0, 52, 0, 26, 0, 32, 0, 74, 0, 17, 0, 10, 0, 2]} diff --git a/piper/piper/etc/test_sentences/test_en-us.jsonl b/piper/piper/etc/test_sentences/test_en-us.jsonl new file mode 100644 index 0000000..2b6aba1 --- /dev/null +++ b/piper/piper/etc/test_sentences/test_en-us.jsonl @@ -0,0 +1,7 @@ +{"text": "A rainbow is a meteorological phenomenon that is caused by reflection, refraction and dispersion of light in water droplets resulting in a spectrum of light appearing in the sky.", "phonemes": ["ɐ", " ", "ɹ", "ˈ", "e", "ɪ", "n", "b", "o", "ʊ", " ", "ɪ", "z", " ", "ɐ", " ", "m", "ˌ", "i", "ː", "ɾ", "ɪ", "ˌ", "o", "ː", "ɹ", "ə", "l", "ˈ", "ɑ", "ː", "d", "ʒ", "ɪ", "k", "ə", "l", " ", "f", "ɪ", "n", "ˈ", "ɑ", "ː", "m", "ɪ", "n", "ə", "n", " ", "ð", "æ", "t", " ", "ɪ", "z", " ", "k", "ˈ", "ɔ", "ː", "z", "d", " ", "b", "a", "ɪ", " ", "ɹ", "ᵻ", "f", "l", "ˈ", "ɛ", "k", "ʃ", "ə", "n", ",", " ", "ɹ", "ᵻ", "f", "ɹ", "ˈ", "æ", "k", "ʃ", "ə", "n", " ", "æ", "n", "d", " ", "d", "ɪ", "s", "p", "ˈ", "ɜ", "ː", "ʒ", "ə", "n", " ", "ʌ", "v", " ", "l", "ˈ", "a", "ɪ", "t", " ", "ɪ", "n", " ", "w", "ˈ", "ɔ", "ː", "ɾ", "ɚ", " ", "d", "ɹ", "ˈ", "ɑ", "ː", "p", "l", "ɪ", "t", "s", " ", "ɹ", "ɪ", "z", "ˈ", "ʌ", "l", "t", "ɪ", "ŋ", " ", "ɪ", "n", " ", "ɐ", " ", "s", "p", "ˈ", "ɛ", "k", "t", "ɹ", "ə", "m", " ", "ʌ", "v", " ", "l", "ˈ", "a", "ɪ", "t", " ", "ɐ", "p", "ˈ", "ɪ", "ɹ", "ɪ", "ŋ", " ", "ɪ", "n", "ð", "ə", " ", "s", "k", "ˈ", "a", "ɪ", "."], "phoneme_ids": [1, 0, 50, 0, 3, 0, 88, 0, 120, 0, 18, 0, 74, 0, 26, 0, 15, 0, 27, 0, 100, 0, 3, 0, 74, 0, 38, 0, 3, 0, 50, 0, 3, 0, 25, 0, 121, 0, 21, 0, 122, 0, 92, 0, 74, 0, 121, 0, 27, 0, 122, 0, 88, 0, 59, 0, 24, 0, 120, 0, 51, 0, 122, 0, 17, 0, 108, 0, 74, 0, 23, 0, 59, 0, 24, 0, 3, 0, 19, 0, 74, 0, 26, 0, 120, 0, 51, 0, 122, 0, 25, 0, 74, 0, 26, 0, 59, 0, 26, 0, 3, 0, 41, 0, 39, 0, 32, 0, 3, 0, 74, 0, 38, 0, 3, 0, 23, 0, 120, 0, 54, 0, 122, 0, 38, 0, 17, 0, 3, 0, 15, 0, 14, 0, 74, 0, 3, 0, 88, 0, 128, 0, 19, 0, 24, 0, 120, 0, 61, 0, 23, 0, 96, 0, 59, 0, 26, 0, 8, 0, 3, 0, 88, 0, 128, 0, 19, 0, 88, 0, 120, 0, 39, 0, 23, 0, 96, 0, 59, 0, 26, 0, 3, 0, 39, 0, 26, 0, 17, 0, 3, 0, 17, 0, 74, 0, 31, 0, 28, 0, 120, 0, 62, 0, 122, 0, 108, 0, 59, 0, 26, 0, 3, 0, 102, 0, 34, 0, 3, 0, 24, 0, 120, 0, 14, 0, 74, 0, 32, 0, 3, 0, 74, 0, 26, 0, 3, 0, 35, 0, 120, 0, 54, 0, 122, 0, 92, 0, 60, 0, 3, 0, 17, 0, 88, 0, 120, 0, 51, 0, 122, 0, 28, 0, 24, 0, 74, 0, 32, 0, 31, 0, 3, 0, 88, 0, 74, 0, 38, 0, 120, 0, 102, 0, 24, 0, 32, 0, 74, 0, 44, 0, 3, 0, 74, 0, 26, 0, 3, 0, 50, 0, 3, 0, 31, 0, 28, 0, 120, 0, 61, 0, 23, 0, 32, 0, 88, 0, 59, 0, 25, 0, 3, 0, 102, 0, 34, 0, 3, 0, 24, 0, 120, 0, 14, 0, 74, 0, 32, 0, 3, 0, 50, 0, 28, 0, 120, 0, 74, 0, 88, 0, 74, 0, 44, 0, 3, 0, 74, 0, 26, 0, 41, 0, 59, 0, 3, 0, 31, 0, 23, 0, 120, 0, 14, 0, 74, 0, 10, 0, 2]} +{"text": "It takes the form of a multi-colored circular arc.", "phonemes": ["ɪ", "t", " ", "t", "ˈ", "e", "ɪ", "k", "s", " ", "ð", "ə", " ", "f", "ˈ", "ɔ", "ː", "ɹ", "m", " ", "ə", "v", "ə", " ", "m", "ˈ", "ʌ", "l", "t", "a", "ɪ", "k", "ˈ", "ʌ", "l", "ɚ", "d", " ", "s", "ˈ", "ɜ", "ː", "k", "j", "ʊ", "l", "ɚ", "ɹ", " ", "ˈ", "ɑ", "ː", "ɹ", "k", "."], "phoneme_ids": [1, 0, 74, 0, 32, 0, 3, 0, 32, 0, 120, 0, 18, 0, 74, 0, 23, 0, 31, 0, 3, 0, 41, 0, 59, 0, 3, 0, 19, 0, 120, 0, 54, 0, 122, 0, 88, 0, 25, 0, 3, 0, 59, 0, 34, 0, 59, 0, 3, 0, 25, 0, 120, 0, 102, 0, 24, 0, 32, 0, 14, 0, 74, 0, 23, 0, 120, 0, 102, 0, 24, 0, 60, 0, 17, 0, 3, 0, 31, 0, 120, 0, 62, 0, 122, 0, 23, 0, 22, 0, 100, 0, 24, 0, 60, 0, 88, 0, 3, 0, 120, 0, 51, 0, 122, 0, 88, 0, 23, 0, 10, 0, 2]} +{"text": "Rainbows caused by sunlight always appear in the section of sky directly opposite the Sun.", "phonemes": ["ɹ", "ˈ", "e", "ɪ", "n", "b", "o", "ʊ", "z", " ", "k", "ˈ", "ɔ", "ː", "z", "d", " ", "b", "a", "ɪ", " ", "s", "ˈ", "ʌ", "n", "l", "a", "ɪ", "t", " ", "ˈ", "ɔ", "ː", "l", "w", "e", "ɪ", "z", " ", "ɐ", "p", "ˈ", "ɪ", "ɹ", " ", "ɪ", "n", "ð", "ə", " ", "s", "ˈ", "ɛ", "k", "ʃ", "ə", "n", " ", "ʌ", "v", " ", "s", "k", "ˈ", "a", "ɪ", " ", "d", "ᵻ", "ɹ", "ˈ", "ɛ", "k", "t", "l", "i", " ", "ˈ", "ɑ", "ː", "p", "ə", "z", "ˌ", "ɪ", "t", " ", "ð", "ə", " ", "s", "ˈ", "ʌ", "n", "."], "phoneme_ids": [1, 0, 88, 0, 120, 0, 18, 0, 74, 0, 26, 0, 15, 0, 27, 0, 100, 0, 38, 0, 3, 0, 23, 0, 120, 0, 54, 0, 122, 0, 38, 0, 17, 0, 3, 0, 15, 0, 14, 0, 74, 0, 3, 0, 31, 0, 120, 0, 102, 0, 26, 0, 24, 0, 14, 0, 74, 0, 32, 0, 3, 0, 120, 0, 54, 0, 122, 0, 24, 0, 35, 0, 18, 0, 74, 0, 38, 0, 3, 0, 50, 0, 28, 0, 120, 0, 74, 0, 88, 0, 3, 0, 74, 0, 26, 0, 41, 0, 59, 0, 3, 0, 31, 0, 120, 0, 61, 0, 23, 0, 96, 0, 59, 0, 26, 0, 3, 0, 102, 0, 34, 0, 3, 0, 31, 0, 23, 0, 120, 0, 14, 0, 74, 0, 3, 0, 17, 0, 128, 0, 88, 0, 120, 0, 61, 0, 23, 0, 32, 0, 24, 0, 21, 0, 3, 0, 120, 0, 51, 0, 122, 0, 28, 0, 59, 0, 38, 0, 121, 0, 74, 0, 32, 0, 3, 0, 41, 0, 59, 0, 3, 0, 31, 0, 120, 0, 102, 0, 26, 0, 10, 0, 2]} +{"text": "With tenure, Suzie’d have all the more leisure for yachting, but her publications are no good.", "phonemes": ["w", "ɪ", "ð", " ", "t", "ˈ", "ɛ", "n", "j", "ɚ", ",", " ", "s", "ˈ", "u", "ː", "z", "i", "d", " ", "h", "æ", "v", " ", "ˈ", "ɔ", "ː", "l", " ", "ð", "ə", " ", "m", "ˈ", "o", "ː", "ɹ", " ", "l", "ˈ", "i", "ː", "ʒ", "ɚ", " ", "f", "ɔ", "ː", "ɹ", " ", "j", "ˈ", "ɑ", "ː", "ɾ", "ɪ", "ŋ", ",", " ", "b", "ˌ", "ʌ", "t", " ", "h", "ɜ", "ː", " ", "p", "ˌ", "ʌ", "b", "l", "ɪ", "k", "ˈ", "e", "ɪ", "ʃ", "ə", "n", "z", " ", "ɑ", "ː", "ɹ", " ", "n", "ˈ", "o", "ʊ", " ", "ɡ", "ˈ", "ʊ", "d", "."], "phoneme_ids": [1, 0, 35, 0, 74, 0, 41, 0, 3, 0, 32, 0, 120, 0, 61, 0, 26, 0, 22, 0, 60, 0, 8, 0, 3, 0, 31, 0, 120, 0, 33, 0, 122, 0, 38, 0, 21, 0, 17, 0, 3, 0, 20, 0, 39, 0, 34, 0, 3, 0, 120, 0, 54, 0, 122, 0, 24, 0, 3, 0, 41, 0, 59, 0, 3, 0, 25, 0, 120, 0, 27, 0, 122, 0, 88, 0, 3, 0, 24, 0, 120, 0, 21, 0, 122, 0, 108, 0, 60, 0, 3, 0, 19, 0, 54, 0, 122, 0, 88, 0, 3, 0, 22, 0, 120, 0, 51, 0, 122, 0, 92, 0, 74, 0, 44, 0, 8, 0, 3, 0, 15, 0, 121, 0, 102, 0, 32, 0, 3, 0, 20, 0, 62, 0, 122, 0, 3, 0, 28, 0, 121, 0, 102, 0, 15, 0, 24, 0, 74, 0, 23, 0, 120, 0, 18, 0, 74, 0, 96, 0, 59, 0, 26, 0, 38, 0, 3, 0, 51, 0, 122, 0, 88, 0, 3, 0, 26, 0, 120, 0, 27, 0, 100, 0, 3, 0, 66, 0, 120, 0, 100, 0, 17, 0, 10, 0, 2]} +{"text": "Shaw, those twelve beige hooks are joined if I patch a young, gooey mouth.", "phonemes": ["ʃ", "ˈ", "ɔ", "ː", ",", " ", "ð", "o", "ʊ", "z", " ", "t", "w", "ˈ", "ɛ", "l", "v", " ", "b", "ˈ", "e", "ɪ", "ʒ", " ", "h", "ˈ", "ʊ", "k", "s", " ", "ɑ", "ː", "ɹ", " ", "d", "ʒ", "ˈ", "ɔ", "ɪ", "n", "d", " ", "ɪ", "f", " ", "a", "ɪ", " ", "p", "ˈ", "æ", "t", "ʃ", " ", "ɐ", " ", "j", "ˈ", "ʌ", "ŋ", ",", " ", "ɡ", "ˈ", "u", "ː", "i", " ", "m", "ˈ", "a", "ʊ", "θ", "."], "phoneme_ids": [1, 0, 96, 0, 120, 0, 54, 0, 122, 0, 8, 0, 3, 0, 41, 0, 27, 0, 100, 0, 38, 0, 3, 0, 32, 0, 35, 0, 120, 0, 61, 0, 24, 0, 34, 0, 3, 0, 15, 0, 120, 0, 18, 0, 74, 0, 108, 0, 3, 0, 20, 0, 120, 0, 100, 0, 23, 0, 31, 0, 3, 0, 51, 0, 122, 0, 88, 0, 3, 0, 17, 0, 108, 0, 120, 0, 54, 0, 74, 0, 26, 0, 17, 0, 3, 0, 74, 0, 19, 0, 3, 0, 14, 0, 74, 0, 3, 0, 28, 0, 120, 0, 39, 0, 32, 0, 96, 0, 3, 0, 50, 0, 3, 0, 22, 0, 120, 0, 102, 0, 44, 0, 8, 0, 3, 0, 66, 0, 120, 0, 33, 0, 122, 0, 21, 0, 3, 0, 25, 0, 120, 0, 14, 0, 100, 0, 126, 0, 10, 0, 2]} +{"text": "Are those shy Eurasian footwear, cowboy chaps, or jolly earthmoving headgear?", "phonemes": ["ɑ", "ː", "ɹ", " ", "ð", "o", "ʊ", "z", " ", "ʃ", "ˈ", "a", "ɪ", " ", "j", "u", "ː", "ɹ", "ˈ", "e", "ɪ", "ʒ", "ə", "n", " ", "f", "ˈ", "ʊ", "t", "w", "ɛ", "ɹ", ",", " ", "k", "ˈ", "a", "ʊ", "b", "ɔ", "ɪ", " ", "t", "ʃ", "ˈ", "æ", "p", "s", ",", " ", "ɔ", "ː", "ɹ", " ", "d", "ʒ", "ˈ", "ɑ", "ː", "l", "i", " ", "ˈ", "ɜ", "ː", "θ", "m", "u", "ː", "v", "ɪ", "ŋ", " ", "h", "ˈ", "ɛ", "d", "ɡ", "ɪ", "ɹ", "?"], "phoneme_ids": [1, 0, 51, 0, 122, 0, 88, 0, 3, 0, 41, 0, 27, 0, 100, 0, 38, 0, 3, 0, 96, 0, 120, 0, 14, 0, 74, 0, 3, 0, 22, 0, 33, 0, 122, 0, 88, 0, 120, 0, 18, 0, 74, 0, 108, 0, 59, 0, 26, 0, 3, 0, 19, 0, 120, 0, 100, 0, 32, 0, 35, 0, 61, 0, 88, 0, 8, 0, 3, 0, 23, 0, 120, 0, 14, 0, 100, 0, 15, 0, 54, 0, 74, 0, 3, 0, 32, 0, 96, 0, 120, 0, 39, 0, 28, 0, 31, 0, 8, 0, 3, 0, 54, 0, 122, 0, 88, 0, 3, 0, 17, 0, 108, 0, 120, 0, 51, 0, 122, 0, 24, 0, 21, 0, 3, 0, 120, 0, 62, 0, 122, 0, 126, 0, 25, 0, 33, 0, 122, 0, 34, 0, 74, 0, 44, 0, 3, 0, 20, 0, 120, 0, 61, 0, 17, 0, 66, 0, 74, 0, 88, 0, 13, 0, 2]} +{"text": "The beige hue on the waters of the loch impressed all, including the French queen, before she heard that symphony again, just as young Arthur wanted.", "phonemes": ["ð", "ə", " ", "b", "ˈ", "e", "ɪ", "ʒ", " ", "h", "j", "ˈ", "u", "ː", " ", "ɔ", "n", "ð", "ə", " ", "w", "ˈ", "ɔ", "ː", "ɾ", "ɚ", "z", " ", "ʌ", "v", "ð", "ə", " ", "l", "ˈ", "ɑ", "ː", "x", " ", "ɪ", "m", "p", "ɹ", "ˈ", "ɛ", "s", "t", " ", "ˈ", "ɔ", "ː", "l", ",", " ", "ɪ", "ŋ", "k", "l", "ˈ", "u", "ː", "d", "ɪ", "ŋ", " ", "ð", "ə", " ", "f", "ɹ", "ˈ", "ɛ", "n", "t", "ʃ", " ", "k", "w", "ˈ", "i", "ː", "n", ",", " ", "b", "ᵻ", "f", "ˌ", "o", "ː", "ɹ", " ", "ʃ", "i", "ː", " ", "h", "ˈ", "ɜ", "ː", "d", " ", "ð", "æ", "t", " ", "s", "ˈ", "ɪ", "m", "f", "ə", "n", "i", " ", "ɐ", "ɡ", "ˈ", "ɛ", "n", ",", " ", "d", "ʒ", "ˈ", "ʌ", "s", "t", " ", "æ", "z", " ", "j", "ˈ", "ʌ", "ŋ", " ", "ˈ", "ɑ", "ː", "ɹ", "θ", "ɚ", " ", "w", "ˈ", "ɔ", "n", "t", "ᵻ", "d", "."], "phoneme_ids": [1, 0, 41, 0, 59, 0, 3, 0, 15, 0, 120, 0, 18, 0, 74, 0, 108, 0, 3, 0, 20, 0, 22, 0, 120, 0, 33, 0, 122, 0, 3, 0, 54, 0, 26, 0, 41, 0, 59, 0, 3, 0, 35, 0, 120, 0, 54, 0, 122, 0, 92, 0, 60, 0, 38, 0, 3, 0, 102, 0, 34, 0, 41, 0, 59, 0, 3, 0, 24, 0, 120, 0, 51, 0, 122, 0, 36, 0, 3, 0, 74, 0, 25, 0, 28, 0, 88, 0, 120, 0, 61, 0, 31, 0, 32, 0, 3, 0, 120, 0, 54, 0, 122, 0, 24, 0, 8, 0, 3, 0, 74, 0, 44, 0, 23, 0, 24, 0, 120, 0, 33, 0, 122, 0, 17, 0, 74, 0, 44, 0, 3, 0, 41, 0, 59, 0, 3, 0, 19, 0, 88, 0, 120, 0, 61, 0, 26, 0, 32, 0, 96, 0, 3, 0, 23, 0, 35, 0, 120, 0, 21, 0, 122, 0, 26, 0, 8, 0, 3, 0, 15, 0, 128, 0, 19, 0, 121, 0, 27, 0, 122, 0, 88, 0, 3, 0, 96, 0, 21, 0, 122, 0, 3, 0, 20, 0, 120, 0, 62, 0, 122, 0, 17, 0, 3, 0, 41, 0, 39, 0, 32, 0, 3, 0, 31, 0, 120, 0, 74, 0, 25, 0, 19, 0, 59, 0, 26, 0, 21, 0, 3, 0, 50, 0, 66, 0, 120, 0, 61, 0, 26, 0, 8, 0, 3, 0, 17, 0, 108, 0, 120, 0, 102, 0, 31, 0, 32, 0, 3, 0, 39, 0, 38, 0, 3, 0, 22, 0, 120, 0, 102, 0, 44, 0, 3, 0, 120, 0, 51, 0, 122, 0, 88, 0, 126, 0, 60, 0, 3, 0, 35, 0, 120, 0, 54, 0, 26, 0, 32, 0, 128, 0, 17, 0, 10, 0, 2]} diff --git a/piper/piper/etc/test_sentences/test_es-419.jsonl b/piper/piper/etc/test_sentences/test_es-419.jsonl new file mode 100644 index 0000000..0c201b1 --- /dev/null +++ b/piper/piper/etc/test_sentences/test_es-419.jsonl @@ -0,0 +1,6 @@ +{"phoneme_ids":[1,0,120,0,33,0,26,0,3,0,121,0,14,0,92,0,23,0,27,0,120,0,21,0,92,0,21,0,31,0,3,0,27,0,3,0,120,0,14,0,92,0,23,0,27,0,3,0,120,0,21,0,92,0,21,0,31,0,3,0,120,0,18,0,31,0,3,0,120,0,33,0,26,0,3,0,19,0,18,0,26,0,120,0,27,0,25,0,18,0,26,0,27,0,3,0,120,0,27,0,28,0,122,0,32,0,21,0,23,0,27,0,3,0,21,0,3,0,25,0,121,0,18,0,32,0,18,0,121,0,27,0,92,0,27,0,24,0,120,0,27,0,36,0,21,0,23,0,27,0,3,0,23,0,18,0,3,0,23,0,27,0,26,0,31,0,120,0,21,0,31,0,32,0,18,0,3,0,18,0,26,0,3,0,24,0,14,0,3,0,121,0,14,0,28,0,14,0,92,0,21,0,31,0,22,0,120,0,27,0,26,0,3,0,18,0,26,0,3,0,18,0,24,0,3,0,31,0,22,0,120,0,18,0,24,0,27,0,3,0,41,0,18,0,3,0,120,0,33,0,26,0,3,0,120,0,14,0,92,0,23,0,27,0,3,0,41,0,18,0,3,0,24,0,120,0,33,0,31,0,3,0,25,0,121,0,33,0,24,0,32,0,21,0,23,0,27,0,24,0,120,0,27,0,92,0,8,0,121,0,27,0,92,0,21,0,36,0,21,0,26,0,120,0,14,0,41,0,27,0,3,0,28,0,27,0,92,0,3,0,24,0,14,0,3,0,41,0,121,0,18,0,31,0,23,0,27,0,25,0,28,0,121,0,27,0,31,0,21,0,31,0,22,0,120,0,27,0,26,0,3,0,17,0,18,0,3,0,24,0,14,0,3,0,24,0,120,0,33,0,31,0,3,0,31,0,27,0,24,0,120,0,14,0,92,0,3,0,18,0,26,0,3,0,18,0,24,0,3,0,18,0,31,0,28,0,120,0,18,0,23,0,32,0,92,0,27,0,3,0,125,0,21,0,31,0,120,0,21,0,125,0,24,0,18,0,8,0,24,0,14,0,3,0,23,0,35,0,120,0,14,0,24,0,3,0,31,0,18,0,3,0,28,0,92,0,27,0,41,0,120,0,33,0,31,0,18,0,3,0,28,0,27,0,92,0,3,0,30,0,121,0,18,0,19,0,92,0,14,0,23,0,31,0,22,0,120,0,27,0,26,0,8,0,23,0,35,0,121,0,14,0,26,0,17,0,27,0,3,0,24,0,27,0,31,0,3,0,30,0,120,0,14,0,115,0,27,0,31,0,3,0,41,0,18,0,24,0,3,0,31,0,120,0,27,0,24,0,3,0,121,0,14,0,32,0,92,0,14,0,125,0,22,0,120,0,18,0,31,0,14,0,25,0,3,0,28,0,18,0,23,0,120,0,18,0,82,0,14,0,31,0,3,0,68,0,120,0,27,0,32,0,14,0,31,0,3,0,41,0,18,0,3,0,120,0,14,0,68,0,35,0,14,0,3,0,23,0,121,0,27,0,26,0,32,0,18,0,26,0,120,0,21,0,41,0,14,0,31,0,3,0,18,0,26,0,3,0,24,0,14,0,3,0,14,0,32,0,25,0,120,0,27,0,31,0,19,0,18,0,92,0,14,0,3,0,32,0,18,0,30,0,120,0,18,0,31,0,32,0,92,0,18,0,10,0,2],"phonemes":["ˈ","u","n"," ","ˌ","a","ɾ","k","o","ˈ","i","ɾ","i","s"," ","o"," ","ˈ","a","ɾ","k","o"," ","ˈ","i","ɾ","i","s"," ","ˈ","e","s"," ","ˈ","u","n"," ","f","e","n","ˈ","o","m","e","n","o"," ","ˈ","o","p","ː","t","i","k","o"," ","i"," ","m","ˌ","e","t","e","ˌ","o","ɾ","o","l","ˈ","o","x","i","k","o"," ","k","e"," ","k","o","n","s","ˈ","i","s","t","e"," ","e","n"," ","l","a"," ","ˌ","a","p","a","ɾ","i","s","j","ˈ","o","n"," ","e","n"," ","e","l"," ","s","j","ˈ","e","l","o"," ","ð","e"," ","ˈ","u","n"," ","ˈ","a","ɾ","k","o"," ","ð","e"," ","l","ˈ","u","s"," ","m","ˌ","u","l","t","i","k","o","l","ˈ","o","ɾ",",","ˌ","o","ɾ","i","x","i","n","ˈ","a","ð","o"," ","p","o","ɾ"," ","l","a"," ","ð","ˌ","e","s","k","o","m","p","ˌ","o","s","i","s","j","ˈ","o","n"," ","d","e"," ","l","a"," ","l","ˈ","u","s"," ","s","o","l","ˈ","a","ɾ"," ","e","n"," ","e","l"," ","e","s","p","ˈ","e","k","t","ɾ","o"," ","β","i","s","ˈ","i","β","l","e",",","l","a"," ","k","w","ˈ","a","l"," ","s","e"," ","p","ɾ","o","ð","ˈ","u","s","e"," ","p","o","ɾ"," ","r","ˌ","e","f","ɾ","a","k","s","j","ˈ","o","n",",","k","w","ˌ","a","n","d","o"," ","l","o","s"," ","r","ˈ","a","ʝ","o","s"," ","ð","e","l"," ","s","ˈ","o","l"," ","ˌ","a","t","ɾ","a","β","j","ˈ","e","s","a","m"," ","p","e","k","ˈ","e","ɲ","a","s"," ","ɣ","ˈ","o","t","a","s"," ","ð","e"," ","ˈ","a","ɣ","w","a"," ","k","ˌ","o","n","t","e","n","ˈ","i","ð","a","s"," ","e","n"," ","l","a"," ","a","t","m","ˈ","o","s","f","e","ɾ","a"," ","t","e","r","ˈ","e","s","t","ɾ","e","."],"processed_text":"Un arcoíris​ o arco iris es un fenómeno óptico y meteorológico que consiste en la aparición en el cielo de un arco de luz multicolor, originado por la descomposición de la luz solar en el espectro visible, la cual se produce por refracción, cuando los rayos del sol atraviesan pequeñas gotas de agua contenidas en la atmósfera terrestre.","text":"Un arcoíris​ o arco iris es un fenómeno óptico y meteorológico que consiste en la aparición en el cielo de un arco de luz multicolor, originado por la descomposición de la luz solar en el espectro visible, la cual se produce por refracción, cuando los rayos del sol atraviesan pequeñas gotas de agua contenidas en la atmósfera terrestre."} +{"phoneme_ids":[1,0,120,0,18,0,31,0,3,0,120,0,33,0,26,0,3,0,120,0,14,0,92,0,23,0,27,0,3,0,23,0,27,0,25,0,28,0,35,0,120,0,18,0,31,0,32,0,27,0,3,0,41,0,18,0,3,0,120,0,14,0,92,0,23,0,27,0,31,0,3,0,23,0,27,0,26,0,31,0,120,0,18,0,26,0,32,0,92,0,21,0,23,0,27,0,31,0,3,0,41,0,18,0,3,0,23,0,27,0,24,0,120,0,27,0,92,0,18,0,31,0,8,0,31,0,21,0,26,0,3,0,31,0,121,0,27,0,24,0,33,0,31,0,22,0,120,0,27,0,26,0,3,0,17,0,18,0,3,0,23,0,121,0,27,0,26,0,32,0,21,0,26,0,35,0,21,0,41,0,120,0,14,0,41,0,3,0,121,0,18,0,26,0,32,0,92,0,18,0,3,0,120,0,18,0,22,0,22,0,27,0,31,0,8,0,23,0,27,0,26,0,3,0,18,0,24,0,3,0,30,0,120,0,27,0,36,0,27,0,3,0,121,0,14,0,31,0,22,0,14,0,3,0,24,0,14,0,3,0,28,0,120,0,14,0,92,0,32,0,18,0,3,0,121,0,18,0,23,0,31,0,32,0,18,0,92,0,22,0,120,0,27,0,92,0,3,0,21,0,3,0,18,0,24,0,3,0,125,0,22,0,27,0,24,0,120,0,18,0,32,0,14,0,3,0,121,0,14,0,31,0,22,0,14,0,3,0,18,0,24,0,3,0,121,0,21,0,26,0,32,0,18,0,92,0,22,0,120,0,27,0,92,0,10,0,2],"phonemes":["ˈ","e","s"," ","ˈ","u","n"," ","ˈ","a","ɾ","k","o"," ","k","o","m","p","w","ˈ","e","s","t","o"," ","ð","e"," ","ˈ","a","ɾ","k","o","s"," ","k","o","n","s","ˈ","e","n","t","ɾ","i","k","o","s"," ","ð","e"," ","k","o","l","ˈ","o","ɾ","e","s",",","s","i","n"," ","s","ˌ","o","l","u","s","j","ˈ","o","n"," ","d","e"," ","k","ˌ","o","n","t","i","n","w","i","ð","ˈ","a","ð"," ","ˌ","e","n","t","ɾ","e"," ","ˈ","e","j","j","o","s",",","k","o","n"," ","e","l"," ","r","ˈ","o","x","o"," ","ˌ","a","s","j","a"," ","l","a"," ","p","ˈ","a","ɾ","t","e"," ","ˌ","e","k","s","t","e","ɾ","j","ˈ","o","ɾ"," ","i"," ","e","l"," ","β","j","o","l","ˈ","e","t","a"," ","ˌ","a","s","j","a"," ","e","l"," ","ˌ","i","n","t","e","ɾ","j","ˈ","o","ɾ","."],"processed_text":"Es un arco compuesto de arcos concéntricos de colores, sin solución de continuidad entre ellos, con el rojo hacia la parte exterior y el violeta hacia el interior.","text":"Es un arco compuesto de arcos concéntricos de colores, sin solución de continuidad entre ellos, con el rojo hacia la parte exterior y el violeta hacia el interior."} +{"phoneme_ids":[1,0,14,0,3,0,121,0,14,0,24,0,32,0,21,0,32,0,120,0,33,0,17,0,3,0,31,0,121,0,33,0,19,0,21,0,31,0,22,0,120,0,61,0,26,0,32,0,18,0,8,0,28,0,27,0,92,0,3,0,18,0,36,0,120,0,18,0,25,0,28,0,24,0,27,0,3,0,23,0,35,0,121,0,14,0,26,0,17,0,27,0,3,0,31,0,18,0,3,0,125,0,22,0,120,0,14,0,36,0,14,0,3,0,18,0,26,0,3,0,14,0,125,0,22,0,120,0,27,0,26,0,8,0,18,0,24,0,3,0,121,0,14,0,92,0,23,0,27,0,120,0,21,0,92,0,21,0,31,0,3,0,31,0,18,0,3,0,28,0,35,0,120,0,18,0,41,0,18,0,3,0,121,0,27,0,125,0,31,0,18,0,92,0,125,0,120,0,14,0,92,0,3,0,18,0,26,0,3,0,19,0,120,0,27,0,92,0,25,0,14,0,3,0,41,0,18,0,3,0,31,0,120,0,21,0,92,0,23,0,33,0,24,0,27,0,3,0,23,0,27,0,25,0,28,0,24,0,120,0,18,0,32,0,27,0,10,0,2],"phonemes":["a"," ","ˌ","a","l","t","i","t","ˈ","u","d"," ","s","ˌ","u","f","i","s","j","ˈ","ɛ","n","t","e",",","p","o","ɾ"," ","e","x","ˈ","e","m","p","l","o"," ","k","w","ˌ","a","n","d","o"," ","s","e"," ","β","j","ˈ","a","x","a"," ","e","n"," ","a","β","j","ˈ","o","n",",","e","l"," ","ˌ","a","ɾ","k","o","ˈ","i","ɾ","i","s"," ","s","e"," ","p","w","ˈ","e","ð","e"," ","ˌ","o","β","s","e","ɾ","β","ˈ","a","ɾ"," ","e","n"," ","f","ˈ","o","ɾ","m","a"," ","ð","e"," ","s","ˈ","i","ɾ","k","u","l","o"," ","k","o","m","p","l","ˈ","e","t","o","."],"processed_text":"A altitud suficiente, por ejemplo cuando se viaja en avión, el arcoíris se puede observar en forma de círculo completo.","text":"A altitud suficiente, por ejemplo cuando se viaja en avión, el arcoíris se puede observar en forma de círculo completo."} +{"phoneme_ids":[1,0,15,0,121,0,18,0,44,0,36,0,14,0,25,0,120,0,21,0,25,0,3,0,28,0,21,0,41,0,22,0,120,0,27,0,3,0,120,0,33,0,26,0,14,0,3,0,125,0,18,0,125,0,120,0,21,0,41,0,14,0,3,0,41,0,18,0,3,0,23,0,120,0,21,0,35,0,21,0,3,0,21,0,3,0,19,0,92,0,120,0,18,0,31,0,14,0,12,0,26,0,27,0,120,0,18,0,8,0,31,0,21,0,25,0,3,0,15,0,121,0,18,0,92,0,68,0,33,0,120,0,61,0,26,0,31,0,14,0,8,0,24,0,14,0,3,0,25,0,120,0,14,0,31,0,3,0,121,0,18,0,23,0,31,0,23,0,21,0,31,0,120,0,21,0,32,0,14,0,3,0,32,0,96,0,14,0,25,0,28,0,120,0,14,0,82,0,14,0,3,0,41,0,18,0,24,0,3,0,25,0,18,0,26,0,120,0,33,0,10,0,2],"phonemes":["b","ˌ","e","ŋ","x","a","m","ˈ","i","m"," ","p","i","ð","j","ˈ","o"," ","ˈ","u","n","a"," ","β","e","β","ˈ","i","ð","a"," ","ð","e"," ","k","ˈ","i","w","i"," ","i"," ","f","ɾ","ˈ","e","s","a",";","n","o","ˈ","e",",","s","i","m"," ","b","ˌ","e","ɾ","ɣ","u","ˈ","ɛ","n","s","a",",","l","a"," ","m","ˈ","a","s"," ","ˌ","e","k","s","k","i","s","ˈ","i","t","a"," ","t","ʃ","a","m","p","ˈ","a","ɲ","a"," ","ð","e","l"," ","m","e","n","ˈ","u","."],"processed_text":"Benjamín pidió una bebida de kiwi y fresa; Noé, sin vergüenza, la más exquisita champaña del menú.","text":"Benjamín pidió una bebida de kiwi y fresa; Noé, sin vergüenza, la más exquisita champaña del menú."} +{"phoneme_ids":[1,0,36,0,27,0,31,0,120,0,18,0,3,0,23,0,27,0,25,0,28,0,92,0,120,0,27,0,3,0,120,0,33,0,26,0,14,0,3,0,125,0,22,0,120,0,18,0,36,0,14,0,3,0,31,0,14,0,25,0,28,0,120,0,27,0,82,0,14,0,3,0,18,0,25,0,3,0,28,0,18,0,92,0,120,0,33,0,10,0,2,1,0,121,0,18,0,23,0,31,0,23,0,33,0,31,0,120,0,14,0,26,0,17,0,27,0,31,0,18,0,8,0,31,0,27,0,19,0,120,0,21,0,14,0,3,0,32,0,21,0,92,0,120,0,27,0,3,0,31,0,33,0,3,0,35,0,120,0,21,0,31,0,23,0,21,0,3,0,14,0,24,0,3,0,41,0,121,0,18,0,31,0,14,0,68,0,120,0,33,0,18,0,3,0,41,0,18,0,3,0,24,0,14,0,3,0,125,0,14,0,26,0,23,0,120,0,18,0,32,0,14,0,10,0,2],"phonemes":["x","o","s","ˈ","e"," ","k","o","m","p","ɾ","ˈ","o"," ","ˈ","u","n","a"," ","β","j","ˈ","e","x","a"," ","s","a","m","p","ˈ","o","ɲ","a"," ","e","m"," ","p","e","ɾ","ˈ","u",".","ˌ","e","k","s","k","u","s","ˈ","a","n","d","o","s","e",",","s","o","f","ˈ","i","a"," ","t","i","ɾ","ˈ","o"," ","s","u"," ","w","ˈ","i","s","k","i"," ","a","l"," ","ð","ˌ","e","s","a","ɣ","ˈ","u","e"," ","ð","e"," ","l","a"," ","β","a","n","k","ˈ","e","t","a","."],"processed_text":"José compró una vieja zampoña en Perú. Excusándose, Sofía tiró su whisky al desagüe de la banqueta.","text":"José compró una vieja zampoña en Perú. Excusándose, Sofía tiró su whisky al desagüe de la banqueta."} +{"phoneme_ids":[1,0,18,0,24,0,3,0,125,0,18,0,24,0,120,0,27,0,31,0,3,0,25,0,33,0,92,0,31,0,22,0,120,0,18,0,24,0,14,0,68,0,27,0,3,0,21,0,26,0,17,0,120,0,33,0,3,0,23,0,27,0,25,0,120,0,21,0,14,0,3,0,19,0,18,0,24,0,120,0,21,0,31,0,3,0,23,0,14,0,92,0,41,0,120,0,21,0,22,0,22,0,27,0,3,0,21,0,3,0,23,0,120,0,21,0,35,0,21,0,10,0,2,1,0,24,0,14,0,3,0,31,0,121,0,21,0,68,0,33,0,120,0,18,0,82,0,14,0,3,0,32,0,27,0,23,0,120,0,14,0,125,0,14,0,3,0,18,0,24,0,3,0,31,0,121,0,14,0,23,0,31,0,27,0,19,0,120,0,27,0,26,0,3,0,17,0,18,0,32,0,92,0,120,0,14,0,31,0,3,0,41,0,18,0,24,0,3,0,28,0,14,0,24,0,120,0,61,0,26,0,23,0,18,0,3,0,41,0,18,0,3,0,28,0,120,0,14,0,36,0,14,0,10,0,2],"phonemes":["e","l"," ","β","e","l","ˈ","o","s"," ","m","u","ɾ","s","j","ˈ","e","l","a","ɣ","o"," ","i","n","d","ˈ","u"," ","k","o","m","ˈ","i","a"," ","f","e","l","ˈ","i","s"," ","k","a","ɾ","ð","ˈ","i","j","j","o"," ","i"," ","k","ˈ","i","w","i",".","l","a"," ","s","ˌ","i","ɣ","u","ˈ","e","ɲ","a"," ","t","o","k","ˈ","a","β","a"," ","e","l"," ","s","ˌ","a","k","s","o","f","ˈ","o","n"," ","d","e","t","ɾ","ˈ","a","s"," ","ð","e","l"," ","p","a","l","ˈ","ɛ","n","k","e"," ","ð","e"," ","p","ˈ","a","x","a","."],"processed_text":"El veloz murciélago hindú comía feliz cardillo y kiwi. La cigüeña tocaba el saxofón detrás del palenque de paja.","text":"El veloz murciélago hindú comía feliz cardillo y kiwi. La cigüeña tocaba el saxofón detrás del palenque de paja."} diff --git a/piper/piper/etc/test_sentences/test_es.jsonl b/piper/piper/etc/test_sentences/test_es.jsonl new file mode 100644 index 0000000..6a89525 --- /dev/null +++ b/piper/piper/etc/test_sentences/test_es.jsonl @@ -0,0 +1,6 @@ +{"text": "Un arcoíris​ o arco iris es un fenómeno óptico y meteorológico que consiste en la aparición en el cielo de un arco de luz multicolor, originado por la descomposición de la luz solar en el espectro visible, la cual se produce por refracción, cuando los rayos del sol atraviesan pequeñas gotas de agua contenidas en la atmósfera terrestre.", "phonemes": ["ˈ", "u", "n", " ", "ˌ", "a", "ɾ", "k", "o", "ˈ", "i", "ɾ", "i", "s", " ", "o", " ", "ˈ", "a", "ɾ", "k", "o", " ", "ˈ", "i", "ɾ", "i", "s", " ", "ˈ", "e", "s", " ", "ˈ", "u", "n", " ", "f", "e", "n", "ˈ", "o", "m", "e", "n", "o", " ", "ˈ", "o", "p", "ː", "t", "i", "k", "o", " ", "i", " ", "m", "ˌ", "e", "t", "e", "ˌ", "o", "ɾ", "o", "l", "ˈ", "o", "x", "i", "k", "o", " ", "k", "e", " ", "k", "o", "n", "s", "ˈ", "i", "s", "t", "e", " ", "e", "n", " ", "l", "a", " ", "ˌ", "a", "p", "a", "ɾ", "i", "θ", "j", "ˈ", "o", "n", " ", "e", "n", " ", "e", "l", " ", "θ", "j", "ˈ", "e", "l", "o", " ", "ð", "e", " ", "ˈ", "u", "n", " ", "ˈ", "a", "ɾ", "k", "o", " ", "ð", "e", " ", "l", "ˈ", "u", "θ", " ", "m", "ˌ", "u", "l", "t", "i", "k", "o", "l", "ˈ", "o", "ɾ", ",", " ", "ˌ", "o", "ɾ", "i", "x", "i", "n", "ˈ", "a", "ð", "o", " ", "p", "o", "ɾ", " ", "l", "a", " ", "ð", "ˌ", "e", "s", "k", "o", "m", "p", "ˌ", "o", "s", "i", "θ", "j", "ˈ", "o", "n", " ", "d", "e", " ", "l", "a", " ", "l", "ˈ", "u", "θ", " ", "s", "o", "l", "ˈ", "a", "ɾ", " ", "e", "n", " ", "e", "l", " ", "e", "s", "p", "ˈ", "e", "k", "t", "ɾ", "o", " ", "β", "i", "s", "ˈ", "i", "β", "l", "e", ",", " ", "l", "a", " ", "k", "w", "ˈ", "a", "l", " ", "s", "e", " ", "p", "ɾ", "o", "ð", "ˈ", "u", "θ", "e", " ", "p", "o", "ɾ", " ", "r", "ˌ", "e", "f", "ɾ", "a", "k", "θ", "j", "ˈ", "o", "n", ",", " ", "k", "w", "ˌ", "a", "n", "d", "o", " ", "l", "o", "s", " ", "r", "ˈ", "a", "ʝ", "o", "s", " ", "ð", "e", "l", " ", "s", "ˈ", "o", "l", " ", "ˌ", "a", "t", "ɾ", "a", "β", "j", "ˈ", "e", "s", "a", "m", " ", "p", "e", "k", "ˈ", "e", "ɲ", "a", "s", " ", "ɣ", "ˈ", "o", "t", "a", "s", " ", "ð", "e", " ", "ˈ", "a", "ɣ", "w", "a", " ", "k", "ˌ", "o", "n", "t", "e", "n", "ˈ", "i", "ð", "a", "s", " ", "e", "n", " ", "l", "a", " ", "a", "t", "m", "ˈ", "o", "s", "f", "e", "ɾ", "a", " ", "t", "e", "r", "ˈ", "e", "s", "t", "ɾ", "e", "."], "phoneme_ids": [1, 0, 120, 0, 33, 0, 26, 0, 3, 0, 121, 0, 14, 0, 92, 0, 23, 0, 27, 0, 120, 0, 21, 0, 92, 0, 21, 0, 31, 0, 3, 0, 27, 0, 3, 0, 120, 0, 14, 0, 92, 0, 23, 0, 27, 0, 3, 0, 120, 0, 21, 0, 92, 0, 21, 0, 31, 0, 3, 0, 120, 0, 18, 0, 31, 0, 3, 0, 120, 0, 33, 0, 26, 0, 3, 0, 19, 0, 18, 0, 26, 0, 120, 0, 27, 0, 25, 0, 18, 0, 26, 0, 27, 0, 3, 0, 120, 0, 27, 0, 28, 0, 122, 0, 32, 0, 21, 0, 23, 0, 27, 0, 3, 0, 21, 0, 3, 0, 25, 0, 121, 0, 18, 0, 32, 0, 18, 0, 121, 0, 27, 0, 92, 0, 27, 0, 24, 0, 120, 0, 27, 0, 36, 0, 21, 0, 23, 0, 27, 0, 3, 0, 23, 0, 18, 0, 3, 0, 23, 0, 27, 0, 26, 0, 31, 0, 120, 0, 21, 0, 31, 0, 32, 0, 18, 0, 3, 0, 18, 0, 26, 0, 3, 0, 24, 0, 14, 0, 3, 0, 121, 0, 14, 0, 28, 0, 14, 0, 92, 0, 21, 0, 126, 0, 22, 0, 120, 0, 27, 0, 26, 0, 3, 0, 18, 0, 26, 0, 3, 0, 18, 0, 24, 0, 3, 0, 126, 0, 22, 0, 120, 0, 18, 0, 24, 0, 27, 0, 3, 0, 41, 0, 18, 0, 3, 0, 120, 0, 33, 0, 26, 0, 3, 0, 120, 0, 14, 0, 92, 0, 23, 0, 27, 0, 3, 0, 41, 0, 18, 0, 3, 0, 24, 0, 120, 0, 33, 0, 126, 0, 3, 0, 25, 0, 121, 0, 33, 0, 24, 0, 32, 0, 21, 0, 23, 0, 27, 0, 24, 0, 120, 0, 27, 0, 92, 0, 8, 0, 3, 0, 121, 0, 27, 0, 92, 0, 21, 0, 36, 0, 21, 0, 26, 0, 120, 0, 14, 0, 41, 0, 27, 0, 3, 0, 28, 0, 27, 0, 92, 0, 3, 0, 24, 0, 14, 0, 3, 0, 41, 0, 121, 0, 18, 0, 31, 0, 23, 0, 27, 0, 25, 0, 28, 0, 121, 0, 27, 0, 31, 0, 21, 0, 126, 0, 22, 0, 120, 0, 27, 0, 26, 0, 3, 0, 17, 0, 18, 0, 3, 0, 24, 0, 14, 0, 3, 0, 24, 0, 120, 0, 33, 0, 126, 0, 3, 0, 31, 0, 27, 0, 24, 0, 120, 0, 14, 0, 92, 0, 3, 0, 18, 0, 26, 0, 3, 0, 18, 0, 24, 0, 3, 0, 18, 0, 31, 0, 28, 0, 120, 0, 18, 0, 23, 0, 32, 0, 92, 0, 27, 0, 3, 0, 125, 0, 21, 0, 31, 0, 120, 0, 21, 0, 125, 0, 24, 0, 18, 0, 8, 0, 3, 0, 24, 0, 14, 0, 3, 0, 23, 0, 35, 0, 120, 0, 14, 0, 24, 0, 3, 0, 31, 0, 18, 0, 3, 0, 28, 0, 92, 0, 27, 0, 41, 0, 120, 0, 33, 0, 126, 0, 18, 0, 3, 0, 28, 0, 27, 0, 92, 0, 3, 0, 30, 0, 121, 0, 18, 0, 19, 0, 92, 0, 14, 0, 23, 0, 126, 0, 22, 0, 120, 0, 27, 0, 26, 0, 8, 0, 3, 0, 23, 0, 35, 0, 121, 0, 14, 0, 26, 0, 17, 0, 27, 0, 3, 0, 24, 0, 27, 0, 31, 0, 3, 0, 30, 0, 120, 0, 14, 0, 115, 0, 27, 0, 31, 0, 3, 0, 41, 0, 18, 0, 24, 0, 3, 0, 31, 0, 120, 0, 27, 0, 24, 0, 3, 0, 121, 0, 14, 0, 32, 0, 92, 0, 14, 0, 125, 0, 22, 0, 120, 0, 18, 0, 31, 0, 14, 0, 25, 0, 3, 0, 28, 0, 18, 0, 23, 0, 120, 0, 18, 0, 82, 0, 14, 0, 31, 0, 3, 0, 68, 0, 120, 0, 27, 0, 32, 0, 14, 0, 31, 0, 3, 0, 41, 0, 18, 0, 3, 0, 120, 0, 14, 0, 68, 0, 35, 0, 14, 0, 3, 0, 23, 0, 121, 0, 27, 0, 26, 0, 32, 0, 18, 0, 26, 0, 120, 0, 21, 0, 41, 0, 14, 0, 31, 0, 3, 0, 18, 0, 26, 0, 3, 0, 24, 0, 14, 0, 3, 0, 14, 0, 32, 0, 25, 0, 120, 0, 27, 0, 31, 0, 19, 0, 18, 0, 92, 0, 14, 0, 3, 0, 32, 0, 18, 0, 30, 0, 120, 0, 18, 0, 31, 0, 32, 0, 92, 0, 18, 0, 10, 0, 2]} +{"text": "Es un arco compuesto de arcos concéntricos de colores, sin solución de continuidad entre ellos, con el rojo hacia la parte exterior y el violeta hacia el interior.", "phonemes": ["ˈ", "e", "s", " ", "ˈ", "u", "n", " ", "ˈ", "a", "ɾ", "k", "o", " ", "k", "o", "m", "p", "w", "ˈ", "e", "s", "t", "o", " ", "ð", "e", " ", "ˈ", "a", "ɾ", "k", "o", "s", " ", "k", "o", "n", "θ", "ˈ", "e", "n", "t", "ɾ", "i", "k", "o", "s", " ", "ð", "e", " ", "k", "o", "l", "ˈ", "o", "ɾ", "e", "s", ",", " ", "s", "i", "n", " ", "s", "ˌ", "o", "l", "u", "θ", "j", "ˈ", "o", "n", " ", "d", "e", " ", "k", "ˌ", "o", "n", "t", "i", "n", "w", "i", "ð", "ˈ", "a", "ð", " ", "ˌ", "e", "n", "t", "ɾ", "e", " ", "ˈ", "e", "ʎ", "o", "s", ",", " ", "k", "o", "n", " ", "e", "l", " ", "r", "ˈ", "o", "x", "o", " ", "ˌ", "a", "θ", "j", "a", " ", "l", "a", " ", "p", "ˈ", "a", "ɾ", "t", "e", " ", "ˌ", "e", "k", "s", "t", "e", "ɾ", "j", "ˈ", "o", "ɾ", " ", "i", " ", "e", "l", " ", "β", "j", "o", "l", "ˈ", "e", "t", "a", " ", "ˌ", "a", "θ", "j", "a", " ", "e", "l", " ", "ˌ", "i", "n", "t", "e", "ɾ", "j", "ˈ", "o", "ɾ", "."], "phoneme_ids": [1, 0, 120, 0, 18, 0, 31, 0, 3, 0, 120, 0, 33, 0, 26, 0, 3, 0, 120, 0, 14, 0, 92, 0, 23, 0, 27, 0, 3, 0, 23, 0, 27, 0, 25, 0, 28, 0, 35, 0, 120, 0, 18, 0, 31, 0, 32, 0, 27, 0, 3, 0, 41, 0, 18, 0, 3, 0, 120, 0, 14, 0, 92, 0, 23, 0, 27, 0, 31, 0, 3, 0, 23, 0, 27, 0, 26, 0, 126, 0, 120, 0, 18, 0, 26, 0, 32, 0, 92, 0, 21, 0, 23, 0, 27, 0, 31, 0, 3, 0, 41, 0, 18, 0, 3, 0, 23, 0, 27, 0, 24, 0, 120, 0, 27, 0, 92, 0, 18, 0, 31, 0, 8, 0, 3, 0, 31, 0, 21, 0, 26, 0, 3, 0, 31, 0, 121, 0, 27, 0, 24, 0, 33, 0, 126, 0, 22, 0, 120, 0, 27, 0, 26, 0, 3, 0, 17, 0, 18, 0, 3, 0, 23, 0, 121, 0, 27, 0, 26, 0, 32, 0, 21, 0, 26, 0, 35, 0, 21, 0, 41, 0, 120, 0, 14, 0, 41, 0, 3, 0, 121, 0, 18, 0, 26, 0, 32, 0, 92, 0, 18, 0, 3, 0, 120, 0, 18, 0, 104, 0, 27, 0, 31, 0, 8, 0, 3, 0, 23, 0, 27, 0, 26, 0, 3, 0, 18, 0, 24, 0, 3, 0, 30, 0, 120, 0, 27, 0, 36, 0, 27, 0, 3, 0, 121, 0, 14, 0, 126, 0, 22, 0, 14, 0, 3, 0, 24, 0, 14, 0, 3, 0, 28, 0, 120, 0, 14, 0, 92, 0, 32, 0, 18, 0, 3, 0, 121, 0, 18, 0, 23, 0, 31, 0, 32, 0, 18, 0, 92, 0, 22, 0, 120, 0, 27, 0, 92, 0, 3, 0, 21, 0, 3, 0, 18, 0, 24, 0, 3, 0, 125, 0, 22, 0, 27, 0, 24, 0, 120, 0, 18, 0, 32, 0, 14, 0, 3, 0, 121, 0, 14, 0, 126, 0, 22, 0, 14, 0, 3, 0, 18, 0, 24, 0, 3, 0, 121, 0, 21, 0, 26, 0, 32, 0, 18, 0, 92, 0, 22, 0, 120, 0, 27, 0, 92, 0, 10, 0, 2]} +{"text": "A altitud suficiente, por ejemplo cuando se viaja en avión, el arcoíris se puede observar en forma de círculo completo.", "phonemes": ["a", " ", "ˌ", "a", "l", "t", "i", "t", "ˈ", "u", "d", " ", "s", "ˌ", "u", "f", "i", "θ", "j", "ˈ", "ɛ", "n", "t", "e", ",", " ", "p", "o", "ɾ", " ", "e", "x", "ˈ", "e", "m", "p", "l", "o", " ", "k", "w", "ˌ", "a", "n", "d", "o", " ", "s", "e", " ", "β", "j", "ˈ", "a", "x", "a", " ", "e", "n", " ", "a", "β", "j", "ˈ", "o", "n", ",", " ", "e", "l", " ", "ˌ", "a", "ɾ", "k", "o", "ˈ", "i", "ɾ", "i", "s", " ", "s", "e", " ", "p", "w", "ˈ", "e", "ð", "e", " ", "ˌ", "o", "β", "s", "e", "ɾ", "β", "ˈ", "a", "ɾ", " ", "e", "n", " ", "f", "ˈ", "o", "ɾ", "m", "a", " ", "ð", "e", " ", "θ", "ˈ", "i", "ɾ", "k", "u", "l", "o", " ", "k", "o", "m", "p", "l", "ˈ", "e", "t", "o", "."], "phoneme_ids": [1, 0, 14, 0, 3, 0, 121, 0, 14, 0, 24, 0, 32, 0, 21, 0, 32, 0, 120, 0, 33, 0, 17, 0, 3, 0, 31, 0, 121, 0, 33, 0, 19, 0, 21, 0, 126, 0, 22, 0, 120, 0, 61, 0, 26, 0, 32, 0, 18, 0, 8, 0, 3, 0, 28, 0, 27, 0, 92, 0, 3, 0, 18, 0, 36, 0, 120, 0, 18, 0, 25, 0, 28, 0, 24, 0, 27, 0, 3, 0, 23, 0, 35, 0, 121, 0, 14, 0, 26, 0, 17, 0, 27, 0, 3, 0, 31, 0, 18, 0, 3, 0, 125, 0, 22, 0, 120, 0, 14, 0, 36, 0, 14, 0, 3, 0, 18, 0, 26, 0, 3, 0, 14, 0, 125, 0, 22, 0, 120, 0, 27, 0, 26, 0, 8, 0, 3, 0, 18, 0, 24, 0, 3, 0, 121, 0, 14, 0, 92, 0, 23, 0, 27, 0, 120, 0, 21, 0, 92, 0, 21, 0, 31, 0, 3, 0, 31, 0, 18, 0, 3, 0, 28, 0, 35, 0, 120, 0, 18, 0, 41, 0, 18, 0, 3, 0, 121, 0, 27, 0, 125, 0, 31, 0, 18, 0, 92, 0, 125, 0, 120, 0, 14, 0, 92, 0, 3, 0, 18, 0, 26, 0, 3, 0, 19, 0, 120, 0, 27, 0, 92, 0, 25, 0, 14, 0, 3, 0, 41, 0, 18, 0, 3, 0, 126, 0, 120, 0, 21, 0, 92, 0, 23, 0, 33, 0, 24, 0, 27, 0, 3, 0, 23, 0, 27, 0, 25, 0, 28, 0, 24, 0, 120, 0, 18, 0, 32, 0, 27, 0, 10, 0, 2]} +{"text": "Benjamín pidió una bebida de kiwi y fresa; Noé, sin vergüenza, la más exquisita champaña del menú.", "phonemes": ["b", "ˌ", "e", "ŋ", "x", "a", "m", "ˈ", "i", "m", " ", "p", "i", "ð", "j", "ˈ", "o", " ", "ˈ", "u", "n", "a", " ", "β", "e", "β", "ˈ", "i", "ð", "a", " ", "ð", "e", " ", "k", "ˈ", "i", "w", "i", " ", "i", " ", "f", "ɾ", "ˈ", "e", "s", "a", ";", " ", "n", "o", "ˈ", "e", ",", " ", "s", "i", "m", " ", "b", "ˌ", "e", "ɾ", "ɣ", "u", "ˈ", "ɛ", "n", "θ", "a", ",", " ", "l", "a", " ", "m", "ˈ", "a", "s", " ", "ˌ", "e", "k", "s", "k", "i", "s", "ˈ", "i", "t", "a", " ", "t", "ʃ", "a", "m", "p", "ˈ", "a", "ɲ", "a", " ", "ð", "e", "l", " ", "m", "e", "n", "ˈ", "u", "."], "phoneme_ids": [1, 0, 15, 0, 121, 0, 18, 0, 44, 0, 36, 0, 14, 0, 25, 0, 120, 0, 21, 0, 25, 0, 3, 0, 28, 0, 21, 0, 41, 0, 22, 0, 120, 0, 27, 0, 3, 0, 120, 0, 33, 0, 26, 0, 14, 0, 3, 0, 125, 0, 18, 0, 125, 0, 120, 0, 21, 0, 41, 0, 14, 0, 3, 0, 41, 0, 18, 0, 3, 0, 23, 0, 120, 0, 21, 0, 35, 0, 21, 0, 3, 0, 21, 0, 3, 0, 19, 0, 92, 0, 120, 0, 18, 0, 31, 0, 14, 0, 12, 0, 3, 0, 26, 0, 27, 0, 120, 0, 18, 0, 8, 0, 3, 0, 31, 0, 21, 0, 25, 0, 3, 0, 15, 0, 121, 0, 18, 0, 92, 0, 68, 0, 33, 0, 120, 0, 61, 0, 26, 0, 126, 0, 14, 0, 8, 0, 3, 0, 24, 0, 14, 0, 3, 0, 25, 0, 120, 0, 14, 0, 31, 0, 3, 0, 121, 0, 18, 0, 23, 0, 31, 0, 23, 0, 21, 0, 31, 0, 120, 0, 21, 0, 32, 0, 14, 0, 3, 0, 32, 0, 96, 0, 14, 0, 25, 0, 28, 0, 120, 0, 14, 0, 82, 0, 14, 0, 3, 0, 41, 0, 18, 0, 24, 0, 3, 0, 25, 0, 18, 0, 26, 0, 120, 0, 33, 0, 10, 0, 2]} +{"text": "José compró una vieja zampoña en Perú. Excusándose, Sofía tiró su whisky al desagüe de la banqueta.", "phonemes": ["x", "o", "s", "ˈ", "e", " ", "k", "o", "m", "p", "ɾ", "ˈ", "o", " ", "ˈ", "u", "n", "a", " ", "β", "j", "ˈ", "e", "x", "a", " ", "θ", "a", "m", "p", "ˈ", "o", "ɲ", "a", " ", "e", "m", " ", "p", "e", "ɾ", "ˈ", "u", ".", " ", "ˌ", "e", "k", "s", "k", "u", "s", "ˈ", "a", "n", "d", "o", "s", "e", ",", " ", "s", "o", "f", "ˈ", "i", "a", " ", "t", "i", "ɾ", "ˈ", "o", " ", "s", "u", " ", "w", "ˈ", "i", "s", "k", "i", " ", "a", "l", " ", "ð", "ˌ", "e", "s", "a", "ɣ", "ˈ", "u", "e", " ", "ð", "e", " ", "l", "a", " ", "β", "a", "n", "k", "ˈ", "e", "t", "a", "."], "phoneme_ids": [1, 0, 36, 0, 27, 0, 31, 0, 120, 0, 18, 0, 3, 0, 23, 0, 27, 0, 25, 0, 28, 0, 92, 0, 120, 0, 27, 0, 3, 0, 120, 0, 33, 0, 26, 0, 14, 0, 3, 0, 125, 0, 22, 0, 120, 0, 18, 0, 36, 0, 14, 0, 3, 0, 126, 0, 14, 0, 25, 0, 28, 0, 120, 0, 27, 0, 82, 0, 14, 0, 3, 0, 18, 0, 25, 0, 3, 0, 28, 0, 18, 0, 92, 0, 120, 0, 33, 0, 10, 0, 3, 0, 121, 0, 18, 0, 23, 0, 31, 0, 23, 0, 33, 0, 31, 0, 120, 0, 14, 0, 26, 0, 17, 0, 27, 0, 31, 0, 18, 0, 8, 0, 3, 0, 31, 0, 27, 0, 19, 0, 120, 0, 21, 0, 14, 0, 3, 0, 32, 0, 21, 0, 92, 0, 120, 0, 27, 0, 3, 0, 31, 0, 33, 0, 3, 0, 35, 0, 120, 0, 21, 0, 31, 0, 23, 0, 21, 0, 3, 0, 14, 0, 24, 0, 3, 0, 41, 0, 121, 0, 18, 0, 31, 0, 14, 0, 68, 0, 120, 0, 33, 0, 18, 0, 3, 0, 41, 0, 18, 0, 3, 0, 24, 0, 14, 0, 3, 0, 125, 0, 14, 0, 26, 0, 23, 0, 120, 0, 18, 0, 32, 0, 14, 0, 10, 0, 2]} +{"text": "El veloz murciélago hindú comía feliz cardillo y kiwi. La cigüeña tocaba el saxofón detrás del palenque de paja.", "phonemes": ["e", "l", " ", "β", "e", "l", "ˈ", "o", "θ", " ", "m", "u", "ɾ", "θ", "j", "ˈ", "e", "l", "a", "ɣ", "o", " ", "i", "n", "d", "ˈ", "u", " ", "k", "o", "m", "ˈ", "i", "a", " ", "f", "e", "l", "ˈ", "i", "θ", " ", "k", "a", "ɾ", "ð", "ˈ", "i", "ʎ", "o", " ", "i", " ", "k", "ˈ", "i", "w", "i", ".", " ", "l", "a", " ", "θ", "ˌ", "i", "ɣ", "u", "ˈ", "e", "ɲ", "a", " ", "t", "o", "k", "ˈ", "a", "β", "a", " ", "e", "l", " ", "s", "ˌ", "a", "k", "s", "o", "f", "ˈ", "o", "n", " ", "d", "e", "t", "ɾ", "ˈ", "a", "s", " ", "ð", "e", "l", " ", "p", "a", "l", "ˈ", "ɛ", "n", "k", "e", " ", "ð", "e", " ", "p", "ˈ", "a", "x", "a", "."], "phoneme_ids": [1, 0, 18, 0, 24, 0, 3, 0, 125, 0, 18, 0, 24, 0, 120, 0, 27, 0, 126, 0, 3, 0, 25, 0, 33, 0, 92, 0, 126, 0, 22, 0, 120, 0, 18, 0, 24, 0, 14, 0, 68, 0, 27, 0, 3, 0, 21, 0, 26, 0, 17, 0, 120, 0, 33, 0, 3, 0, 23, 0, 27, 0, 25, 0, 120, 0, 21, 0, 14, 0, 3, 0, 19, 0, 18, 0, 24, 0, 120, 0, 21, 0, 126, 0, 3, 0, 23, 0, 14, 0, 92, 0, 41, 0, 120, 0, 21, 0, 104, 0, 27, 0, 3, 0, 21, 0, 3, 0, 23, 0, 120, 0, 21, 0, 35, 0, 21, 0, 10, 0, 3, 0, 24, 0, 14, 0, 3, 0, 126, 0, 121, 0, 21, 0, 68, 0, 33, 0, 120, 0, 18, 0, 82, 0, 14, 0, 3, 0, 32, 0, 27, 0, 23, 0, 120, 0, 14, 0, 125, 0, 14, 0, 3, 0, 18, 0, 24, 0, 3, 0, 31, 0, 121, 0, 14, 0, 23, 0, 31, 0, 27, 0, 19, 0, 120, 0, 27, 0, 26, 0, 3, 0, 17, 0, 18, 0, 32, 0, 92, 0, 120, 0, 14, 0, 31, 0, 3, 0, 41, 0, 18, 0, 24, 0, 3, 0, 28, 0, 14, 0, 24, 0, 120, 0, 61, 0, 26, 0, 23, 0, 18, 0, 3, 0, 41, 0, 18, 0, 3, 0, 28, 0, 120, 0, 14, 0, 36, 0, 14, 0, 10, 0, 2]} diff --git a/piper/piper/etc/test_sentences/test_eu.jsonl b/piper/piper/etc/test_sentences/test_eu.jsonl new file mode 100644 index 0000000..9611cc4 --- /dev/null +++ b/piper/piper/etc/test_sentences/test_eu.jsonl @@ -0,0 +1,4 @@ +{"text": "Ostadarra, halaber Erromako zubia edo uztargia, gertaera optiko eta meteorologiko bat da, zeruan, jarraikako argi zerrenda bat eragiten duena, eguzkiaren izpiek Lurreko atmosferan aurkitzen diren hezetasun tanta txikiak zeharkatzen dituztenean.", "phonemes": ["o", "s", "̺", "t", "ˈ", "a", "ð", "a", "r", "ˌ", "a", ",", " ", "a", "l", "ˈ", "a", "β", "ˌ", "e", "ɾ", " ", "e", "r", "ˈ", "o", "m", "a", "k", "ˌ", "o", " ", "s", "̻", "u", "β", "ˈ", "i", "ˌ", "a", " ", "ˈ", "e", "ð", "o", " ", "u", "s", "̻", "t", "ˈ", "a", "ɾ", "ɣ", "i", "ˌ", "a", ",", " ", "ɡ", "e", "ɾ", "t", "ˈ", "a", "e", "ɾ", "ˌ", "a", " ", "o", "p", "t", "ˈ", "i", "k", "ˌ", "o", " ", "ˌ", "e", "t", "a", " ", "m", "e", "t", "ˈ", "e", "o", "ɾ", "o", "l", "o", "ɣ", "i", "k", "ˌ", "o", " ", "β", "ˈ", "a", "t", " ", "ð", "ˈ", "a", ",", " ", "s", "̻", "e", "ɾ", "ˈ", "u", "ˌ", "a", "n", ",", " ", "ɟ", "a", "r", "ˈ", "a", "ɪ", "k", "a", "k", "ˌ", "o", " ", "ˈ", "a", "ɾ", "ɣ", "i", " ", "s", "̻", "e", "r", "ˈ", "e", "n", "d", "ˌ", "a", " ", "β", "ˈ", "a", "t", " ", "e", "ɾ", "ˈ", "a", "ɣ", "i", "t", "ˌ", "e", "n", " ", "d", "u", "ˈ", "e", "n", "ˌ", "a", ",", " ", "e", "ɣ", "ˈ", "u", "s", "̻", "k", "i", "a", "ɾ", "ˌ", "e", "n", " ", "i", "s", "̻", "p", "ˈ", "i", "ˌ", "e", "k", " ", "l", "u", "r", "ˈ", "e", "k", "ˌ", "o", " ", "a", "t", "m", "ˈ", "o", "s", "̺", "f", "e", "ɾ", "ˌ", "a", "n", " ", "a", "ʊ", "ɾ", "k", "ˈ", "i", "t", "s", "̻", "ˌ", "e", "n", " ", "d", "i", "ɾ", "ˈ", "e", "n", " ", "e", "s", "̻", "ˈ", "e", "t", "a", "s", "̺", "ˌ", "u", "n", " ", "t", "ˈ", "a", "n", "t", "a", " ", "t", "ʃ", "i", "k", "ˈ", "i", "ˌ", "a", "k", " ", "s", "̻", "e", "ˈ", "a", "ɾ", "k", "a", "t", "s", "̻", "ˌ", "e", "n", " ", "d", "i", "t", "ˈ", "u", "s", "̻", "t", "e", "n", "e", "ˌ", "a", "n", "."], "phoneme_ids": [1, 0, 27, 0, 31, 0, 152, 0, 32, 0, 120, 0, 14, 0, 41, 0, 14, 0, 30, 0, 121, 0, 14, 0, 8, 0, 3, 0, 14, 0, 24, 0, 120, 0, 14, 0, 125, 0, 121, 0, 18, 0, 92, 0, 3, 0, 18, 0, 30, 0, 120, 0, 27, 0, 25, 0, 14, 0, 23, 0, 121, 0, 27, 0, 3, 0, 31, 0, 153, 0, 33, 0, 125, 0, 120, 0, 21, 0, 121, 0, 14, 0, 3, 0, 120, 0, 18, 0, 41, 0, 27, 0, 3, 0, 33, 0, 31, 0, 153, 0, 32, 0, 120, 0, 14, 0, 92, 0, 68, 0, 21, 0, 121, 0, 14, 0, 8, 0, 3, 0, 66, 0, 18, 0, 92, 0, 32, 0, 120, 0, 14, 0, 18, 0, 92, 0, 121, 0, 14, 0, 3, 0, 27, 0, 28, 0, 32, 0, 120, 0, 21, 0, 23, 0, 121, 0, 27, 0, 3, 0, 121, 0, 18, 0, 32, 0, 14, 0, 3, 0, 25, 0, 18, 0, 32, 0, 120, 0, 18, 0, 27, 0, 92, 0, 27, 0, 24, 0, 27, 0, 68, 0, 21, 0, 23, 0, 121, 0, 27, 0, 3, 0, 125, 0, 120, 0, 14, 0, 32, 0, 3, 0, 41, 0, 120, 0, 14, 0, 8, 0, 3, 0, 31, 0, 153, 0, 18, 0, 92, 0, 120, 0, 33, 0, 121, 0, 14, 0, 26, 0, 8, 0, 3, 0, 64, 0, 14, 0, 30, 0, 120, 0, 14, 0, 74, 0, 23, 0, 14, 0, 23, 0, 121, 0, 27, 0, 3, 0, 120, 0, 14, 0, 92, 0, 68, 0, 21, 0, 3, 0, 31, 0, 153, 0, 18, 0, 30, 0, 120, 0, 18, 0, 26, 0, 17, 0, 121, 0, 14, 0, 3, 0, 125, 0, 120, 0, 14, 0, 32, 0, 3, 0, 18, 0, 92, 0, 120, 0, 14, 0, 68, 0, 21, 0, 32, 0, 121, 0, 18, 0, 26, 0, 3, 0, 17, 0, 33, 0, 120, 0, 18, 0, 26, 0, 121, 0, 14, 0, 8, 0, 3, 0, 18, 0, 68, 0, 120, 0, 33, 0, 31, 0, 153, 0, 23, 0, 21, 0, 14, 0, 92, 0, 121, 0, 18, 0, 26, 0, 3, 0, 21, 0, 31, 0, 153, 0, 28, 0, 120, 0, 21, 0, 121, 0, 18, 0, 23, 0, 3, 0, 24, 0, 33, 0, 30, 0, 120, 0, 18, 0, 23, 0, 121, 0, 27, 0, 3, 0, 14, 0, 32, 0, 25, 0, 120, 0, 27, 0, 31, 0, 152, 0, 19, 0, 18, 0, 92, 0, 121, 0, 14, 0, 26, 0, 3, 0, 14, 0, 100, 0, 92, 0, 23, 0, 120, 0, 21, 0, 32, 0, 31, 0, 153, 0, 121, 0, 18, 0, 26, 0, 3, 0, 17, 0, 21, 0, 92, 0, 120, 0, 18, 0, 26, 0, 3, 0, 18, 0, 31, 0, 153, 0, 120, 0, 18, 0, 32, 0, 14, 0, 31, 0, 152, 0, 121, 0, 33, 0, 26, 0, 3, 0, 32, 0, 120, 0, 14, 0, 26, 0, 32, 0, 14, 0, 3, 0, 32, 0, 96, 0, 21, 0, 23, 0, 120, 0, 21, 0, 121, 0, 14, 0, 23, 0, 3, 0, 31, 0, 153, 0, 18, 0, 120, 0, 14, 0, 92, 0, 23, 0, 14, 0, 32, 0, 31, 0, 153, 0, 121, 0, 18, 0, 26, 0, 3, 0, 17, 0, 21, 0, 32, 0, 120, 0, 33, 0, 31, 0, 153, 0, 32, 0, 18, 0, 26, 0, 18, 0, 121, 0, 14, 0, 26, 0, 10, 0, 2]} +{"text": "Forma, arku kolore anitz batena da, gorria kanpoalderantz duena eta morea barnealderantz.", "phonemes": ["f", "ˈ", "o", "ɾ", "m", "a", ",", " ", "ˈ", "a", "ɾ", "k", "u", " ", "k", "o", "l", "ˈ", "o", "ɾ", "ˌ", "e", " ", "a", "n", "ˈ", "i", "t", "s", "̻", " ", "β", "a", "t", "ˈ", "e", "n", "ˌ", "a", " ", "ð", "ˈ", "a", ",", " ", "ɡ", "o", "r", "ˈ", "i", "ˌ", "a", " ", "k", "a", "n", "p", "ˈ", "o", "a", "l", "ð", "e", "ɾ", "ˌ", "a", "n", "t", "s", "̻", " ", "ð", "u", "ˈ", "e", "n", "ˌ", "a", " ", "ˌ", "e", "t", "a", " ", "m", "o", "ɾ", "ˈ", "e", "ˌ", "a", " ", "β", "a", "ɾ", "n", "ˈ", "e", "a", "l", "ð", "e", "ɾ", "ˌ", "a", "n", "t", "s", "̻", "."], "phoneme_ids": [1, 0, 19, 0, 120, 0, 27, 0, 92, 0, 25, 0, 14, 0, 8, 0, 3, 0, 120, 0, 14, 0, 92, 0, 23, 0, 33, 0, 3, 0, 23, 0, 27, 0, 24, 0, 120, 0, 27, 0, 92, 0, 121, 0, 18, 0, 3, 0, 14, 0, 26, 0, 120, 0, 21, 0, 32, 0, 31, 0, 153, 0, 3, 0, 125, 0, 14, 0, 32, 0, 120, 0, 18, 0, 26, 0, 121, 0, 14, 0, 3, 0, 41, 0, 120, 0, 14, 0, 8, 0, 3, 0, 66, 0, 27, 0, 30, 0, 120, 0, 21, 0, 121, 0, 14, 0, 3, 0, 23, 0, 14, 0, 26, 0, 28, 0, 120, 0, 27, 0, 14, 0, 24, 0, 41, 0, 18, 0, 92, 0, 121, 0, 14, 0, 26, 0, 32, 0, 31, 0, 153, 0, 3, 0, 41, 0, 33, 0, 120, 0, 18, 0, 26, 0, 121, 0, 14, 0, 3, 0, 121, 0, 18, 0, 32, 0, 14, 0, 3, 0, 25, 0, 27, 0, 92, 0, 120, 0, 18, 0, 121, 0, 14, 0, 3, 0, 125, 0, 14, 0, 92, 0, 26, 0, 120, 0, 18, 0, 14, 0, 24, 0, 41, 0, 18, 0, 92, 0, 121, 0, 14, 0, 26, 0, 32, 0, 31, 0, 153, 0, 10, 0, 2]} +{"text": "Ez da hain ohikoa ostadar bikoitza, bigarren arku bat duena, ilunagoa, koloreen ordena alderantziz duena, hau da, gorria barnealderantz eta morea kanpoalderantz.", "phonemes": ["ˈ", "e", "s", "̻", " ", "t", "ˈ", "a", " ", "ˈ", "a", "ɪ", "n", " ", "o", "ˈ", "i", "k", "o", "ˌ", "a", " ", "o", "s", "̺", "t", "ˈ", "a", "ð", "ˌ", "a", "ɾ", " ", "β", "i", "k", "ˈ", "o", "ɪ", "t", "s", "̻", "ˌ", "a", ",", " ", "b", "i", "ɣ", "ˈ", "a", "r", "ˌ", "e", "n", " ", "ˈ", "a", "ɾ", "k", "u", " ", "β", "ˈ", "a", "t", " ", "ð", "u", "ˈ", "e", "n", "ˌ", "a", ",", " ", "i", "ʎ", "ˈ", "u", "n", "a", "ɣ", "o", "ˌ", "a", ",", " ", "k", "o", "l", "ˈ", "o", "ɾ", "e", "ˌ", "e", "n", " ", "o", "ɾ", "ð", "ˈ", "e", "n", "ˌ", "a", " ", "a", "l", "ð", "ˈ", "e", "ɾ", "a", "n", "t", "s", "̻", "ˌ", "i", "s", "̻", " ", "ð", "u", "ˈ", "e", "n", "ˌ", "a", ",", " ", "ˈ", "a", "ʊ", " ", "ð", "ˈ", "a", ",", " ", "ɡ", "o", "r", "ˈ", "i", "ˌ", "a", " ", "β", "a", "ɾ", "n", "ˈ", "e", "a", "l", "ð", "e", "ɾ", "ˌ", "a", "n", "t", "s", "̻", " ", "ˌ", "e", "t", "a", " ", "m", "o", "ɾ", "ˈ", "e", "ˌ", "a", " ", "k", "a", "n", "p", "ˈ", "o", "a", "l", "ð", "e", "ɾ", "ˌ", "a", "n", "t", "s", "̻", "."], "phoneme_ids": [1, 0, 120, 0, 18, 0, 31, 0, 153, 0, 3, 0, 32, 0, 120, 0, 14, 0, 3, 0, 120, 0, 14, 0, 74, 0, 26, 0, 3, 0, 27, 0, 120, 0, 21, 0, 23, 0, 27, 0, 121, 0, 14, 0, 3, 0, 27, 0, 31, 0, 152, 0, 32, 0, 120, 0, 14, 0, 41, 0, 121, 0, 14, 0, 92, 0, 3, 0, 125, 0, 21, 0, 23, 0, 120, 0, 27, 0, 74, 0, 32, 0, 31, 0, 153, 0, 121, 0, 14, 0, 8, 0, 3, 0, 15, 0, 21, 0, 68, 0, 120, 0, 14, 0, 30, 0, 121, 0, 18, 0, 26, 0, 3, 0, 120, 0, 14, 0, 92, 0, 23, 0, 33, 0, 3, 0, 125, 0, 120, 0, 14, 0, 32, 0, 3, 0, 41, 0, 33, 0, 120, 0, 18, 0, 26, 0, 121, 0, 14, 0, 8, 0, 3, 0, 21, 0, 104, 0, 120, 0, 33, 0, 26, 0, 14, 0, 68, 0, 27, 0, 121, 0, 14, 0, 8, 0, 3, 0, 23, 0, 27, 0, 24, 0, 120, 0, 27, 0, 92, 0, 18, 0, 121, 0, 18, 0, 26, 0, 3, 0, 27, 0, 92, 0, 41, 0, 120, 0, 18, 0, 26, 0, 121, 0, 14, 0, 3, 0, 14, 0, 24, 0, 41, 0, 120, 0, 18, 0, 92, 0, 14, 0, 26, 0, 32, 0, 31, 0, 153, 0, 121, 0, 21, 0, 31, 0, 153, 0, 3, 0, 41, 0, 33, 0, 120, 0, 18, 0, 26, 0, 121, 0, 14, 0, 8, 0, 3, 0, 120, 0, 14, 0, 100, 0, 3, 0, 41, 0, 120, 0, 14, 0, 8, 0, 3, 0, 66, 0, 27, 0, 30, 0, 120, 0, 21, 0, 121, 0, 14, 0, 3, 0, 125, 0, 14, 0, 92, 0, 26, 0, 120, 0, 18, 0, 14, 0, 24, 0, 41, 0, 18, 0, 92, 0, 121, 0, 14, 0, 26, 0, 32, 0, 31, 0, 153, 0, 3, 0, 121, 0, 18, 0, 32, 0, 14, 0, 3, 0, 25, 0, 27, 0, 92, 0, 120, 0, 18, 0, 121, 0, 14, 0, 3, 0, 23, 0, 14, 0, 26, 0, 28, 0, 120, 0, 27, 0, 14, 0, 24, 0, 41, 0, 18, 0, 92, 0, 121, 0, 14, 0, 26, 0, 32, 0, 31, 0, 153, 0, 10, 0, 2]} +{"text": "Ostadarrak, jarraikako kolore zerrenda bat erakusten duen arren, ohi, osatzen duten koloreak sei direla onartzen da: gorria, laranja, hori, berdea, urdina eta morea, argiaren maiztasunen deskonposaketen ondorio, eta hiru oinarrizko koloreek, eta hauek, euren arteko nahasketetan emandako beste hirurek emandakoek osatua, tradizionalki, 7 kolore aipatzen diren arren, urdina eta morearen artean anila jarriz.", "phonemes": ["o", "s", "̺", "t", "ˈ", "a", "ð", "a", "r", "ˌ", "a", "k", ",", " ", "ɟ", "a", "r", "ˈ", "a", "ɪ", "k", "a", "k", "ˌ", "o", " ", "k", "o", "l", "ˈ", "o", "ɾ", "ˌ", "e", " ", "s", "̻", "e", "r", "ˈ", "e", "n", "d", "ˌ", "a", " ", "β", "ˈ", "a", "t", " ", "e", "ɾ", "ˈ", "a", "k", "u", "s", "̺", "t", "ˌ", "e", "n", " ", "d", "u", "ˈ", "e", "n", " ", "a", "r", "ˈ", "e", "n", ",", " ", "ˈ", "o", "i", ",", " ", "o", "s", "̺", "ˈ", "a", "t", "s", "̻", "ˌ", "e", "n", " ", "d", "u", "t", "ˈ", "e", "n", " ", "k", "o", "l", "ˈ", "o", "ɾ", "e", "ˌ", "a", "k", " ", "s", "̺", "ˈ", "e", "ɪ", " ", "ð", "i", "ɾ", "ˈ", "e", "l", "ˌ", "a", " ", "o", "n", "ˈ", "a", "ɾ", "t", "s", "̻", "ˌ", "e", "n", " ", "d", "ˈ", "a", ":", " ", "ɡ", "o", "r", "ˈ", "i", "ˌ", "a", ",", " ", "l", "a", "ɾ", "ˈ", "a", "n", "ɟ", "ˌ", "a", ",", " ", "ˈ", "o", "ɾ", "i", ",", " ", "b", "e", "ɾ", "ð", "ˈ", "e", "ˌ", "a", ",", " ", "u", "ɾ", "ð", "ˈ", "i", "ɲ", "ˌ", "a", " ", "ˌ", "e", "t", "a", " ", "m", "o", "ɾ", "ˈ", "e", "ˌ", "a", ",", " ", "a", "ɾ", "ɣ", "ˈ", "i", "a", "ɾ", "ˌ", "e", "n", " ", "m", "a", "ɪ", "s", "̻", "t", "ˈ", "a", "s", "̺", "u", "n", "ˌ", "e", "n", " ", "d", "e", "s", "̺", "k", "ˈ", "o", "n", "p", "o", "s", "̺", "a", "k", "e", "t", "ˌ", "e", "n", " ", "o", "n", "d", "ˈ", "o", "ɾ", "i", "ˌ", "o", ",", " ", "ˌ", "e", "t", "a", " ", "ˈ", "i", "ɾ", "u", " ", "o", "ɪ", "ɲ", "ˈ", "a", "r", "i", "s", "̻", "k", "ˌ", "o", " ", "k", "o", "l", "ˈ", "o", "ɾ", "e", "ˌ", "e", "k", ",", " ", "ˌ", "e", "t", "a", " ", "ˈ", "a", "ʊ", "e", "k", ",", " ", "e", "ʊ", "ɾ", "ˈ", "e", "n", " ", "a", "ɾ", "t", "ˈ", "e", "k", "ˌ", "o", " ", "n", "a", "ˈ", "a", "s", "̺", "k", "e", "t", "e", "t", "ˌ", "a", "n", " ", "e", "m", "ˈ", "a", "n", "d", "a", "k", "ˌ", "o", " ", "β", "ˈ", "e", "s", "̺", "t", "e", " ", "i", "ɾ", "ˈ", "u", "ɾ", "ˌ", "e", "k", " ", "e", "m", "ˈ", "a", "n", "d", "a", "k", "o", "ˌ", "e", "k", " ", "o", "s", "̺", "ˈ", "a", "t", "u", "ˌ", "a", ",", " ", "t", "ɾ", "a", "ð", "ˈ", "i", "s", "̻", "i", "o", "n", "a", "l", "k", "ˌ", "i", ",", " ", "s", "̻", "ˈ", "a", "s", "̻", "p", "i", " ", "k", "o", "l", "ˈ", "o", "ɾ", "ˌ", "e", " ", "a", "ɪ", "p", "ˈ", "a", "t", "s", "̻", "ˌ", "e", "n", " ", "d", "i", "ɾ", "ˈ", "e", "n", " ", "a", "r", "ˈ", "e", "n", ",", " ", "u", "ɾ", "ð", "ˈ", "i", "ɲ", "ˌ", "a", " ", "ˌ", "e", "t", "a", " ", "m", "o", "ɾ", "ˈ", "e", "a", "ɾ", "ˌ", "e", "n", " ", "a", "ɾ", "t", "ˈ", "e", "ˌ", "a", "n", " ", "a", "n", "ˈ", "i", "ʎ", "ˌ", "a", " ", "j", "a", "r", "ˈ", "i", "s", "̻", "."], "phoneme_ids": [1, 0, 27, 0, 31, 0, 152, 0, 32, 0, 120, 0, 14, 0, 41, 0, 14, 0, 30, 0, 121, 0, 14, 0, 23, 0, 8, 0, 3, 0, 64, 0, 14, 0, 30, 0, 120, 0, 14, 0, 74, 0, 23, 0, 14, 0, 23, 0, 121, 0, 27, 0, 3, 0, 23, 0, 27, 0, 24, 0, 120, 0, 27, 0, 92, 0, 121, 0, 18, 0, 3, 0, 31, 0, 153, 0, 18, 0, 30, 0, 120, 0, 18, 0, 26, 0, 17, 0, 121, 0, 14, 0, 3, 0, 125, 0, 120, 0, 14, 0, 32, 0, 3, 0, 18, 0, 92, 0, 120, 0, 14, 0, 23, 0, 33, 0, 31, 0, 152, 0, 32, 0, 121, 0, 18, 0, 26, 0, 3, 0, 17, 0, 33, 0, 120, 0, 18, 0, 26, 0, 3, 0, 14, 0, 30, 0, 120, 0, 18, 0, 26, 0, 8, 0, 3, 0, 120, 0, 27, 0, 21, 0, 8, 0, 3, 0, 27, 0, 31, 0, 152, 0, 120, 0, 14, 0, 32, 0, 31, 0, 153, 0, 121, 0, 18, 0, 26, 0, 3, 0, 17, 0, 33, 0, 32, 0, 120, 0, 18, 0, 26, 0, 3, 0, 23, 0, 27, 0, 24, 0, 120, 0, 27, 0, 92, 0, 18, 0, 121, 0, 14, 0, 23, 0, 3, 0, 31, 0, 152, 0, 120, 0, 18, 0, 74, 0, 3, 0, 41, 0, 21, 0, 92, 0, 120, 0, 18, 0, 24, 0, 121, 0, 14, 0, 3, 0, 27, 0, 26, 0, 120, 0, 14, 0, 92, 0, 32, 0, 31, 0, 153, 0, 121, 0, 18, 0, 26, 0, 3, 0, 17, 0, 120, 0, 14, 0, 11, 0, 3, 0, 66, 0, 27, 0, 30, 0, 120, 0, 21, 0, 121, 0, 14, 0, 8, 0, 3, 0, 24, 0, 14, 0, 92, 0, 120, 0, 14, 0, 26, 0, 64, 0, 121, 0, 14, 0, 8, 0, 3, 0, 120, 0, 27, 0, 92, 0, 21, 0, 8, 0, 3, 0, 15, 0, 18, 0, 92, 0, 41, 0, 120, 0, 18, 0, 121, 0, 14, 0, 8, 0, 3, 0, 33, 0, 92, 0, 41, 0, 120, 0, 21, 0, 82, 0, 121, 0, 14, 0, 3, 0, 121, 0, 18, 0, 32, 0, 14, 0, 3, 0, 25, 0, 27, 0, 92, 0, 120, 0, 18, 0, 121, 0, 14, 0, 8, 0, 3, 0, 14, 0, 92, 0, 68, 0, 120, 0, 21, 0, 14, 0, 92, 0, 121, 0, 18, 0, 26, 0, 3, 0, 25, 0, 14, 0, 74, 0, 31, 0, 153, 0, 32, 0, 120, 0, 14, 0, 31, 0, 152, 0, 33, 0, 26, 0, 121, 0, 18, 0, 26, 0, 3, 0, 17, 0, 18, 0, 31, 0, 152, 0, 23, 0, 120, 0, 27, 0, 26, 0, 28, 0, 27, 0, 31, 0, 152, 0, 14, 0, 23, 0, 18, 0, 32, 0, 121, 0, 18, 0, 26, 0, 3, 0, 27, 0, 26, 0, 17, 0, 120, 0, 27, 0, 92, 0, 21, 0, 121, 0, 27, 0, 8, 0, 3, 0, 121, 0, 18, 0, 32, 0, 14, 0, 3, 0, 120, 0, 21, 0, 92, 0, 33, 0, 3, 0, 27, 0, 74, 0, 82, 0, 120, 0, 14, 0, 30, 0, 21, 0, 31, 0, 153, 0, 23, 0, 121, 0, 27, 0, 3, 0, 23, 0, 27, 0, 24, 0, 120, 0, 27, 0, 92, 0, 18, 0, 121, 0, 18, 0, 23, 0, 8, 0, 3, 0, 121, 0, 18, 0, 32, 0, 14, 0, 3, 0, 120, 0, 14, 0, 100, 0, 18, 0, 23, 0, 8, 0, 3, 0, 18, 0, 100, 0, 92, 0, 120, 0, 18, 0, 26, 0, 3, 0, 14, 0, 92, 0, 32, 0, 120, 0, 18, 0, 23, 0, 121, 0, 27, 0, 3, 0, 26, 0, 14, 0, 120, 0, 14, 0, 31, 0, 152, 0, 23, 0, 18, 0, 32, 0, 18, 0, 32, 0, 121, 0, 14, 0, 26, 0, 3, 0, 18, 0, 25, 0, 120, 0, 14, 0, 26, 0, 17, 0, 14, 0, 23, 0, 121, 0, 27, 0, 3, 0, 125, 0, 120, 0, 18, 0, 31, 0, 152, 0, 32, 0, 18, 0, 3, 0, 21, 0, 92, 0, 120, 0, 33, 0, 92, 0, 121, 0, 18, 0, 23, 0, 3, 0, 18, 0, 25, 0, 120, 0, 14, 0, 26, 0, 17, 0, 14, 0, 23, 0, 27, 0, 121, 0, 18, 0, 23, 0, 3, 0, 27, 0, 31, 0, 152, 0, 120, 0, 14, 0, 32, 0, 33, 0, 121, 0, 14, 0, 8, 0, 3, 0, 32, 0, 92, 0, 14, 0, 41, 0, 120, 0, 21, 0, 31, 0, 153, 0, 21, 0, 27, 0, 26, 0, 14, 0, 24, 0, 23, 0, 121, 0, 21, 0, 8, 0, 3, 0, 31, 0, 153, 0, 120, 0, 14, 0, 31, 0, 153, 0, 28, 0, 21, 0, 3, 0, 23, 0, 27, 0, 24, 0, 120, 0, 27, 0, 92, 0, 121, 0, 18, 0, 3, 0, 14, 0, 74, 0, 28, 0, 120, 0, 14, 0, 32, 0, 31, 0, 153, 0, 121, 0, 18, 0, 26, 0, 3, 0, 17, 0, 21, 0, 92, 0, 120, 0, 18, 0, 26, 0, 3, 0, 14, 0, 30, 0, 120, 0, 18, 0, 26, 0, 8, 0, 3, 0, 33, 0, 92, 0, 41, 0, 120, 0, 21, 0, 82, 0, 121, 0, 14, 0, 3, 0, 121, 0, 18, 0, 32, 0, 14, 0, 3, 0, 25, 0, 27, 0, 92, 0, 120, 0, 18, 0, 14, 0, 92, 0, 121, 0, 18, 0, 26, 0, 3, 0, 14, 0, 92, 0, 32, 0, 120, 0, 18, 0, 121, 0, 14, 0, 26, 0, 3, 0, 14, 0, 26, 0, 120, 0, 21, 0, 104, 0, 121, 0, 14, 0, 3, 0, 22, 0, 14, 0, 30, 0, 120, 0, 21, 0, 31, 0, 153, 0, 10, 0, 2]} diff --git a/piper/piper/etc/test_sentences/test_fi.jsonl b/piper/piper/etc/test_sentences/test_fi.jsonl new file mode 100644 index 0000000..6f4ae03 --- /dev/null +++ b/piper/piper/etc/test_sentences/test_fi.jsonl @@ -0,0 +1,7 @@ +{"phoneme_ids":[1,0,31,0,120,0,14,0,32,0,18,0,122,0,44,0,23,0,121,0,14,0,122,0,30,0,74,0,3,0,27,0,26,0,3,0,31,0,28,0,120,0,18,0,23,0,32,0,30,0,74,0,26,0,3,0,34,0,120,0,39,0,30,0,18,0,21,0,31,0,31,0,39,0,3,0,120,0,18,0,31,0,74,0,122,0,26,0,32,0,121,0,37,0,34,0,39,0,3,0,120,0,21,0,24,0,25,0,14,0,23,0,18,0,20,0,39,0,26,0,3,0,120,0,27,0,28,0,32,0,74,0,26,0,18,0,26,0,3,0,120,0,21,0,24,0,25,0,74,0,42,0,10,0,2],"phonemes":["s","ˈ","a","t","e","ː","ŋ","k","ˌ","a","ː","r","ɪ"," ","o","n"," ","s","p","ˈ","e","k","t","r","ɪ","n"," ","v","ˈ","æ","r","e","i","s","s","æ"," ","ˈ","e","s","ɪ","ː","n","t","ˌ","y","v","æ"," ","ˈ","i","l","m","a","k","e","h","æ","n"," ","ˈ","o","p","t","ɪ","n","e","n"," ","ˈ","i","l","m","ɪ","ø","."],"processed_text":"Sateenkaari on spektrin väreissä esiintyvä ilmakehän optinen ilmiö.","text":"Sateenkaari on spektrin väreissä esiintyvä ilmakehän optinen ilmiö."} +{"phoneme_ids":[1,0,31,0,18,0,3,0,31,0,120,0,37,0,26,0,32,0,37,0,122,0,8,0,23,0,120,0,33,0,26,0,3,0,34,0,120,0,14,0,24,0,27,0,3,0,32,0,120,0,14,0,21,0,32,0,122,0,33,0,122,0,3,0,28,0,120,0,21,0,31,0,14,0,30,0,14,0,26,0,3,0,120,0,18,0,32,0,33,0,28,0,121,0,21,0,26,0,26,0,14,0,31,0,32,0,14,0,8,0,20,0,120,0,18,0,21,0,22,0,14,0,31,0,32,0,33,0,122,0,3,0,28,0,120,0,21,0,31,0,14,0,30,0,14,0,26,0,3,0,32,0,120,0,14,0,23,0,14,0,28,0,121,0,21,0,26,0,26,0,14,0,31,0,32,0,14,0,3,0,22,0,14,0,3,0,32,0,120,0,14,0,21,0,32,0,122,0,33,0,122,0,3,0,22,0,120,0,39,0,24,0,24,0,18,0,122,0,25,0,3,0,28,0,120,0,21,0,31,0,14,0,30,0,14,0,26,0,3,0,120,0,18,0,32,0,33,0,28,0,121,0,21,0,26,0,26,0,14,0,31,0,32,0,14,0,10,0,2],"phonemes":["s","e"," ","s","ˈ","y","n","t","y","ː",",","k","ˈ","u","n"," ","v","ˈ","a","l","o"," ","t","ˈ","a","i","t","ː","u","ː"," ","p","ˈ","i","s","a","r","a","n"," ","ˈ","e","t","u","p","ˌ","i","n","n","a","s","t","a",",","h","ˈ","e","i","j","a","s","t","u","ː"," ","p","ˈ","i","s","a","r","a","n"," ","t","ˈ","a","k","a","p","ˌ","i","n","n","a","s","t","a"," ","j","a"," ","t","ˈ","a","i","t","ː","u","ː"," ","j","ˈ","æ","l","l","e","ː","m"," ","p","ˈ","i","s","a","r","a","n"," ","ˈ","e","t","u","p","ˌ","i","n","n","a","s","t","a","."],"processed_text":"Se syntyy, kun valo taittuu pisaran etupinnasta, heijastuu pisaran takapinnasta ja taittuu jälleen pisaran etupinnasta.","text":"Se syntyy, kun valo taittuu pisaran etupinnasta, heijastuu pisaran takapinnasta ja taittuu jälleen pisaran etupinnasta."} +{"phoneme_ids":[1,0,23,0,120,0,27,0,31,0,23,0,14,0,3,0,34,0,120,0,18,0,31,0,74,0,28,0,121,0,21,0,31,0,14,0,30,0,14,0,3,0,27,0,26,0,3,0,17,0,120,0,21,0,31,0,28,0,18,0,30,0,31,0,121,0,21,0,122,0,34,0,74,0,26,0,18,0,26,0,8,0,34,0,120,0,14,0,24,0,23,0,27,0,21,0,26,0,18,0,26,0,3,0,34,0,120,0,14,0,24,0,27,0,3,0,20,0,120,0,14,0,22,0,27,0,14,0,122,0,3,0,34,0,120,0,39,0,30,0,18,0,21,0,23,0,31,0,74,0,3,0,25,0,120,0,33,0,27,0,17,0,27,0,31,0,32,0,14,0,18,0,26,0,3,0,31,0,120,0,14,0,32,0,18,0,122,0,44,0,23,0,121,0,14,0,122,0,30,0,18,0,26,0,10,0,2],"phonemes":["k","ˈ","o","s","k","a"," ","v","ˈ","e","s","ɪ","p","ˌ","i","s","a","r","a"," ","o","n"," ","d","ˈ","i","s","p","e","r","s","ˌ","i","ː","v","ɪ","n","e","n",",","v","ˈ","a","l","k","o","i","n","e","n"," ","v","ˈ","a","l","o"," ","h","ˈ","a","j","o","a","ː"," ","v","ˈ","æ","r","e","i","k","s","ɪ"," ","m","ˈ","u","o","d","o","s","t","a","e","n"," ","s","ˈ","a","t","e","ː","ŋ","k","ˌ","a","ː","r","e","n","."],"processed_text":"Koska vesipisara on dispersiivinen, valkoinen valo hajoaa väreiksi muodostaen sateenkaaren.","text":"Koska vesipisara on dispersiivinen, valkoinen valo hajoaa väreiksi muodostaen sateenkaaren."} +{"phoneme_ids":[1,0,28,0,30,0,120,0,21,0,31,0,25,0,14,0,26,0,3,0,32,0,120,0,33,0,27,0,32,0,122,0,14,0,25,0,14,0,3,0,31,0,28,0,120,0,18,0,23,0,32,0,30,0,74,0,3,0,27,0,26,0,3,0,34,0,120,0,14,0,24,0,27,0,26,0,3,0,120,0,18,0,30,0,74,0,3,0,120,0,14,0,122,0,24,0,24,0,27,0,25,0,28,0,74,0,32,0,121,0,33,0,122,0,23,0,31,0,21,0,18,0,26,0,3,0,32,0,120,0,14,0,31,0,14,0,21,0,26,0,18,0,26,0,3,0,22,0,120,0,14,0,32,0,23,0,33,0,25,0,27,0,3,0,120,0,21,0,24,0,25,0,14,0,44,0,3,0,23,0,120,0,14,0,21,0,31,0,32,0,27,0,22,0,14,0,10,0,2],"phonemes":["p","r","ˈ","i","s","m","a","n"," ","t","ˈ","u","o","t","ː","a","m","a"," ","s","p","ˈ","e","k","t","r","ɪ"," ","o","n"," ","v","ˈ","a","l","o","n"," ","ˈ","e","r","ɪ"," ","ˈ","a","ː","l","l","o","m","p","ɪ","t","ˌ","u","ː","k","s","i","e","n"," ","t","ˈ","a","s","a","i","n","e","n"," ","j","ˈ","a","t","k","u","m","o"," ","ˈ","i","l","m","a","ŋ"," ","k","ˈ","a","i","s","t","o","j","a","."],"processed_text":"Prisman tuottama spektri on valon eri aallonpituuksien tasainen jatkumo ilman kaistoja.","text":"Prisman tuottama spektri on valon eri aallonpituuksien tasainen jatkumo ilman kaistoja."} +{"phoneme_ids":[1,0,120,0,21,0,20,0,25,0,74,0,31,0,31,0,121,0,21,0,24,0,25,0,39,0,3,0,23,0,120,0,37,0,23,0,18,0,26,0,18,0,122,0,3,0,120,0,18,0,30,0,27,0,32,0,122,0,14,0,25,0,14,0,122,0,26,0,3,0,31,0,28,0,120,0,18,0,23,0,32,0,30,0,74,0,31,0,32,0,39,0,3,0,120,0,18,0,30,0,74,0,23,0,31,0,18,0,122,0,26,0,3,0,22,0,120,0,27,0,21,0,32,0,14,0,21,0,26,0,3,0,31,0,120,0,14,0,32,0,27,0,22,0,14,0,3,0,120,0,18,0,30,0,74,0,3,0,34,0,120,0,39,0,30,0,18,0,22,0,39,0,10,0,2],"phonemes":["ˈ","i","h","m","ɪ","s","s","ˌ","i","l","m","æ"," ","k","ˈ","y","k","e","n","e","ː"," ","ˈ","e","r","o","t","ː","a","m","a","ː","n"," ","s","p","ˈ","e","k","t","r","ɪ","s","t","æ"," ","ˈ","e","r","ɪ","k","s","e","ː","n"," ","j","ˈ","o","i","t","a","i","n"," ","s","ˈ","a","t","o","j","a"," ","ˈ","e","r","ɪ"," ","v","ˈ","æ","r","e","j","æ","."],"processed_text":"Ihmissilmä kykenee erottamaan spektristä erikseen joitain satoja eri värejä.","text":"Ihmissilmä kykenee erottamaan spektristä erikseen joitain satoja eri värejä."} +{"phoneme_ids":[1,0,32,0,121,0,39,0,25,0,39,0,26,0,3,0,25,0,120,0,33,0,23,0,14,0,21,0,31,0,121,0,18,0,31,0,32,0,74,0,25,0,3,0,25,0,120,0,33,0,26,0,31,0,18,0,24,0,24,0,74,0,26,0,3,0,34,0,120,0,39,0,30,0,74,0,31,0,121,0,37,0,31,0,32,0,18,0,122,0,25,0,74,0,3,0,120,0,18,0,30,0,27,0,32,0,122,0,14,0,122,0,3,0,31,0,120,0,14,0,32,0,14,0,3,0,120,0,18,0,30,0,74,0,3,0,34,0,120,0,39,0,30,0,74,0,31,0,121,0,39,0,34,0,37,0,39,0,10,0,2],"phonemes":["t","ˌ","æ","m","æ","n"," ","m","ˈ","u","k","a","i","s","ˌ","e","s","t","ɪ","m"," ","m","ˈ","u","n","s","e","l","l","ɪ","n"," ","v","ˈ","æ","r","ɪ","s","ˌ","y","s","t","e","ː","m","ɪ"," ","ˈ","e","r","o","t","ː","a","ː"," ","s","ˈ","a","t","a"," ","ˈ","e","r","ɪ"," ","v","ˈ","æ","r","ɪ","s","ˌ","æ","v","y","æ","."],"processed_text":"Tämän mukaisesti Munsellin värisysteemi erottaa 100 eri värisävyä.","text":"Tämän mukaisesti Munsellin värisysteemi erottaa 100 eri värisävyä."} +{"phoneme_ids":[1,0,28,0,120,0,39,0,122,0,34,0,39,0,30,0,21,0,18,0,26,0,3,0,26,0,120,0,39,0,18,0,26,0,26,0,121,0,39,0,21,0,26,0,18,0,26,0,3,0,120,0,18,0,30,0,74,0,24,0,24,0,74,0,31,0,37,0,122,0,31,0,3,0,27,0,26,0,3,0,120,0,21,0,20,0,25,0,74,0,31,0,18,0,26,0,3,0,26,0,120,0,39,0,23,0,42,0,22,0,121,0,39,0,30,0,22,0,18,0,31,0,32,0,121,0,18,0,24,0,25,0,39,0,26,0,3,0,120,0,27,0,25,0,74,0,26,0,121,0,14,0,21,0,31,0,33,0,122,0,31,0,3,0,22,0,14,0,3,0,28,0,120,0,39,0,122,0,34,0,39,0,30,0,21,0,18,0,26,0,3,0,32,0,120,0,14,0,30,0,23,0,122,0,14,0,3,0,24,0,120,0,33,0,23,0,33,0,25,0,121,0,39,0,122,0,30,0,39,0,3,0,27,0,26,0,3,0,22,0,120,0,27,0,31,0,31,0,14,0,21,0,26,0,3,0,25,0,120,0,39,0,122,0,30,0,74,0,26,0,3,0,34,0,120,0,14,0,28,0,14,0,122,0,34,0,14,0,24,0,121,0,21,0,26,0,32,0,14,0,21,0,26,0,18,0,26,0,10,0,2],"phonemes":["p","ˈ","æ","ː","v","æ","r","i","e","n"," ","n","ˈ","æ","e","n","n","ˌ","æ","i","n","e","n"," ","ˈ","e","r","ɪ","l","l","ɪ","s","y","ː","s"," ","o","n"," ","ˈ","i","h","m","ɪ","s","e","n"," ","n","ˈ","æ","k","ø","j","ˌ","æ","r","j","e","s","t","ˌ","e","l","m","æ","n"," ","ˈ","o","m","ɪ","n","ˌ","a","i","s","u","ː","s"," ","j","a"," ","p","ˈ","æ","ː","v","æ","r","i","e","n"," ","t","ˈ","a","r","k","ː","a"," ","l","ˈ","u","k","u","m","ˌ","æ","ː","r","æ"," ","o","n"," ","j","ˈ","o","s","s","a","i","n"," ","m","ˈ","æ","ː","r","ɪ","n"," ","v","ˈ","a","p","a","ː","v","a","l","ˌ","i","n","t","a","i","n","e","n","."],"processed_text":"Päävärien näennäinen erillisyys on ihmisen näköjärjestelmän ominaisuus ja päävärien tarkka lukumäärä on jossain määrin vapaavalintainen.","text":"Päävärien näennäinen erillisyys on ihmisen näköjärjestelmän ominaisuus ja päävärien tarkka lukumäärä on jossain määrin vapaavalintainen."} diff --git a/piper/piper/etc/test_sentences/test_fr.jsonl b/piper/piper/etc/test_sentences/test_fr.jsonl new file mode 100644 index 0000000..535f0a7 --- /dev/null +++ b/piper/piper/etc/test_sentences/test_fr.jsonl @@ -0,0 +1,7 @@ +{"text": "Un arc-en-ciel est un photométéore, un phénomène optique se produisant dans le ciel, visible dans la direction opposée au Soleil quand il brille pendant la pluie.", "phonemes": ["œ", "̃", "n", " ", "ˈ", "a", "ʁ", "k", "ɑ", "̃", "s", "j", "ˈ", "ɛ", "l", " ", "ɛ", "t", " ", "œ", "̃", " ", "f", "o", "t", "o", "m", "e", "t", "e", "ˈ", "ɔ", "ʁ", ",", " ", "œ", "̃", " ", "f", "e", "n", "o", "m", "ˈ", "ɛ", "n", " ", "ɔ", "p", "t", "ˈ", "i", "k", " ", "s", "ə", "-", " ", "p", "ʁ", "o", "d", "y", "i", "z", "ˈ", "ɑ", "̃", " ", "d", "ɑ", "̃", " ", "l", "ə", "-", " ", "s", "j", "ˈ", "ɛ", "l", ",", " ", "v", "i", "z", "ˈ", "i", "b", "l", " ", "d", "ɑ", "̃", " ", "l", "a", "-", " ", "d", "i", "ʁ", "ɛ", "k", "s", "j", "ˈ", "ɔ", "̃", " ", "ɔ", "p", "o", "z", "ˈ", "e", " ", "o", " ", "s", "o", "l", "ˈ", "ɛ", "j", " ", "k", "ɑ", "̃", "t", " ", "i", "l", " ", "b", "ʁ", "ˈ", "i", "j", " ", "p", "ɑ", "̃", "d", "ˈ", "ɑ", "̃", " ", "l", "a", "-", " ", "p", "l", "y", "ˈ", "i", "."], "phoneme_ids": [1, 0, 45, 0, 141, 0, 26, 0, 3, 0, 120, 0, 14, 0, 94, 0, 23, 0, 51, 0, 141, 0, 31, 0, 22, 0, 120, 0, 61, 0, 24, 0, 3, 0, 61, 0, 32, 0, 3, 0, 45, 0, 141, 0, 3, 0, 19, 0, 27, 0, 32, 0, 27, 0, 25, 0, 18, 0, 32, 0, 18, 0, 120, 0, 54, 0, 94, 0, 8, 0, 3, 0, 45, 0, 141, 0, 3, 0, 19, 0, 18, 0, 26, 0, 27, 0, 25, 0, 120, 0, 61, 0, 26, 0, 3, 0, 54, 0, 28, 0, 32, 0, 120, 0, 21, 0, 23, 0, 3, 0, 31, 0, 59, 0, 9, 0, 3, 0, 28, 0, 94, 0, 27, 0, 17, 0, 37, 0, 21, 0, 38, 0, 120, 0, 51, 0, 141, 0, 3, 0, 17, 0, 51, 0, 141, 0, 3, 0, 24, 0, 59, 0, 9, 0, 3, 0, 31, 0, 22, 0, 120, 0, 61, 0, 24, 0, 8, 0, 3, 0, 34, 0, 21, 0, 38, 0, 120, 0, 21, 0, 15, 0, 24, 0, 3, 0, 17, 0, 51, 0, 141, 0, 3, 0, 24, 0, 14, 0, 9, 0, 3, 0, 17, 0, 21, 0, 94, 0, 61, 0, 23, 0, 31, 0, 22, 0, 120, 0, 54, 0, 141, 0, 3, 0, 54, 0, 28, 0, 27, 0, 38, 0, 120, 0, 18, 0, 3, 0, 27, 0, 3, 0, 31, 0, 27, 0, 24, 0, 120, 0, 61, 0, 22, 0, 3, 0, 23, 0, 51, 0, 141, 0, 32, 0, 3, 0, 21, 0, 24, 0, 3, 0, 15, 0, 94, 0, 120, 0, 21, 0, 22, 0, 3, 0, 28, 0, 51, 0, 141, 0, 17, 0, 120, 0, 51, 0, 141, 0, 3, 0, 24, 0, 14, 0, 9, 0, 3, 0, 28, 0, 24, 0, 37, 0, 120, 0, 21, 0, 10, 0, 2]} +{"text": "C'est un arc de cercle coloré d'un dégradé de couleurs continu du rouge, à l'extérieur, au jaune au vert et au bleu, jusqu'au violet à l'intérieur.", "phonemes": ["s", "ɛ", "t", " ", "œ", "̃", "n", " ", "ˈ", "a", "ʁ", "k", " ", "d", "ə", "-", " ", "s", "ˈ", "ɛ", "ʁ", "k", "l", " ", "k", "o", "l", "o", "ʁ", "ˈ", "e", " ", "d", "œ", "̃", " ", "d", "e", "ɡ", "ʁ", "a", "d", "ˈ", "e", " ", "d", "ə", "-", " ", "k", "u", "l", "ˈ", "œ", "ʁ", " ", "k", "ɔ", "̃", "t", "i", "n", "ˈ", "y", " ", "d", "y", "-", " ", "ʁ", "ˈ", "u", "ʒ", ",", " ", "a", " ", "l", "ɛ", "k", "s", "t", "e", "ʁ", "j", "ˈ", "œ", "ʁ", ",", " ", "o", " ", "ʒ", "ˈ", "o", "n", " ", "o", " ", "v", "ˈ", "ɛ", "ʁ", " ", "e", " ", "o", " ", "b", "l", "ˈ", "ø", ",", " ", "ʒ", "y", "s", "k", "o", " ", "v", "j", "o", "l", "ˈ", "ɛ", " ", "a", " ", "l", "ɛ", "̃", "t", "e", "ʁ", "j", "ˈ", "œ", "ʁ", "."], "phoneme_ids": [1, 0, 31, 0, 61, 0, 32, 0, 3, 0, 45, 0, 141, 0, 26, 0, 3, 0, 120, 0, 14, 0, 94, 0, 23, 0, 3, 0, 17, 0, 59, 0, 9, 0, 3, 0, 31, 0, 120, 0, 61, 0, 94, 0, 23, 0, 24, 0, 3, 0, 23, 0, 27, 0, 24, 0, 27, 0, 94, 0, 120, 0, 18, 0, 3, 0, 17, 0, 45, 0, 141, 0, 3, 0, 17, 0, 18, 0, 66, 0, 94, 0, 14, 0, 17, 0, 120, 0, 18, 0, 3, 0, 17, 0, 59, 0, 9, 0, 3, 0, 23, 0, 33, 0, 24, 0, 120, 0, 45, 0, 94, 0, 3, 0, 23, 0, 54, 0, 141, 0, 32, 0, 21, 0, 26, 0, 120, 0, 37, 0, 3, 0, 17, 0, 37, 0, 9, 0, 3, 0, 94, 0, 120, 0, 33, 0, 108, 0, 8, 0, 3, 0, 14, 0, 3, 0, 24, 0, 61, 0, 23, 0, 31, 0, 32, 0, 18, 0, 94, 0, 22, 0, 120, 0, 45, 0, 94, 0, 8, 0, 3, 0, 27, 0, 3, 0, 108, 0, 120, 0, 27, 0, 26, 0, 3, 0, 27, 0, 3, 0, 34, 0, 120, 0, 61, 0, 94, 0, 3, 0, 18, 0, 3, 0, 27, 0, 3, 0, 15, 0, 24, 0, 120, 0, 42, 0, 8, 0, 3, 0, 108, 0, 37, 0, 31, 0, 23, 0, 27, 0, 3, 0, 34, 0, 22, 0, 27, 0, 24, 0, 120, 0, 61, 0, 3, 0, 14, 0, 3, 0, 24, 0, 61, 0, 141, 0, 32, 0, 18, 0, 94, 0, 22, 0, 120, 0, 45, 0, 94, 0, 10, 0, 2]} +{"text": "Un arc-en-ciel se compose de deux arcs principaux : l'arc primaire et l'arc secondaire.", "phonemes": ["œ", "̃", "n", " ", "ˈ", "a", "ʁ", "k", "ɑ", "̃", "s", "j", "ˈ", "ɛ", "l", " ", "s", "ə", "-", " ", "k", "ɔ", "̃", "p", "ˈ", "ɔ", "z", " ", "d", "ə", "-", " ", "d", "ˈ", "ø", "z", " ", "ˈ", "a", "ʁ", "k", " ", "p", "ʁ", "ɛ", "̃", "s", "i", "p", "ˈ", "o", ":", " ", "l", "ˈ", "a", "ʁ", "k", " ", "p", "ʁ", "i", "m", "ˈ", "ɛ", "ʁ", " ", "e", " ", "l", "ˈ", "a", "ʁ", "k", " ", "s", "ə", "ɡ", "ɔ", "̃", "d", "ˈ", "ɛ", "ʁ", "."], "phoneme_ids": [1, 0, 45, 0, 141, 0, 26, 0, 3, 0, 120, 0, 14, 0, 94, 0, 23, 0, 51, 0, 141, 0, 31, 0, 22, 0, 120, 0, 61, 0, 24, 0, 3, 0, 31, 0, 59, 0, 9, 0, 3, 0, 23, 0, 54, 0, 141, 0, 28, 0, 120, 0, 54, 0, 38, 0, 3, 0, 17, 0, 59, 0, 9, 0, 3, 0, 17, 0, 120, 0, 42, 0, 38, 0, 3, 0, 120, 0, 14, 0, 94, 0, 23, 0, 3, 0, 28, 0, 94, 0, 61, 0, 141, 0, 31, 0, 21, 0, 28, 0, 120, 0, 27, 0, 11, 0, 3, 0, 24, 0, 120, 0, 14, 0, 94, 0, 23, 0, 3, 0, 28, 0, 94, 0, 21, 0, 25, 0, 120, 0, 61, 0, 94, 0, 3, 0, 18, 0, 3, 0, 24, 0, 120, 0, 14, 0, 94, 0, 23, 0, 3, 0, 31, 0, 59, 0, 66, 0, 54, 0, 141, 0, 17, 0, 120, 0, 61, 0, 94, 0, 10, 0, 2]} +{"text": "L'arc primaire est dû aux rayons ayant effectué une réflexion interne dans la goutte d'eau.", "phonemes": ["l", "ˈ", "a", "ʁ", "k", " ", "p", "ʁ", "i", "m", "ˈ", "ɛ", "ʁ", " ", "ɛ", " ", "d", "ˈ", "y", "ː", " ", "o", " ", "ʁ", "ɛ", "j", "ˈ", "ɔ", "̃", "z", " ", "ɛ", "j", "ˈ", "ɑ", "̃", " ", "e", "f", "ɛ", "k", "t", "y", "ˈ", "e", " ", "y", "n", " ", "ʁ", "e", "f", "l", "ɛ", "k", "s", "j", "ˈ", "ɔ", "̃", " ", "ɛ", "̃", "t", "ˈ", "ɛ", "ʁ", "n", " ", "d", "ɑ", "̃", " ", "l", "a", "-", " ", "ɡ", "ˈ", "u", "t", " ", "d", "ˈ", "o", "."], "phoneme_ids": [1, 0, 24, 0, 120, 0, 14, 0, 94, 0, 23, 0, 3, 0, 28, 0, 94, 0, 21, 0, 25, 0, 120, 0, 61, 0, 94, 0, 3, 0, 61, 0, 3, 0, 17, 0, 120, 0, 37, 0, 122, 0, 3, 0, 27, 0, 3, 0, 94, 0, 61, 0, 22, 0, 120, 0, 54, 0, 141, 0, 38, 0, 3, 0, 61, 0, 22, 0, 120, 0, 51, 0, 141, 0, 3, 0, 18, 0, 19, 0, 61, 0, 23, 0, 32, 0, 37, 0, 120, 0, 18, 0, 3, 0, 37, 0, 26, 0, 3, 0, 94, 0, 18, 0, 19, 0, 24, 0, 61, 0, 23, 0, 31, 0, 22, 0, 120, 0, 54, 0, 141, 0, 3, 0, 61, 0, 141, 0, 32, 0, 120, 0, 61, 0, 94, 0, 26, 0, 3, 0, 17, 0, 51, 0, 141, 0, 3, 0, 24, 0, 14, 0, 9, 0, 3, 0, 66, 0, 120, 0, 33, 0, 32, 0, 3, 0, 17, 0, 120, 0, 27, 0, 10, 0, 2]} +{"text": "Les rayons ayant effectué deux réflexions internes dans la goutte d'eau provoquent un arc secondaire moins intense à l'extérieur du premier.", "phonemes": ["l", "e", "-", " ", "ʁ", "ɛ", "j", "ˈ", "ɔ", "̃", "z", " ", "ɛ", "j", "ˈ", "ɑ", "̃", " ", "e", "f", "ɛ", "k", "t", "y", "ˈ", "e", " ", "d", "ˈ", "ø", " ", "ʁ", "e", "f", "l", "ɛ", "k", "s", "j", "ˈ", "ɔ", "̃", "z", " ", "ɛ", "̃", "t", "ˈ", "ɛ", "ʁ", "n", " ", "d", "ɑ", "̃", " ", "l", "a", "-", " ", "ɡ", "ˈ", "u", "t", " ", "d", "ˈ", "o", " ", "p", "ʁ", "o", "v", "ˈ", "o", "k", "t", " ", "œ", "̃", "n", " ", "ˈ", "a", "ʁ", "k", " ", "s", "ə", "ɡ", "ɔ", "̃", "d", "ˈ", "ɛ", "ʁ", " ", "m", "w", "ˈ", "ɛ", "̃", "z", " ", "ɛ", "̃", "t", "ˈ", "ɑ", "̃", "s", " ", "a", " ", "l", "ɛ", "k", "s", "t", "e", "ʁ", "j", "ˈ", "œ", "ʁ", " ", "d", "y", "-", " ", "p", "ʁ", "ə", "m", "j", "ˈ", "e", "."], "phoneme_ids": [1, 0, 24, 0, 18, 0, 9, 0, 3, 0, 94, 0, 61, 0, 22, 0, 120, 0, 54, 0, 141, 0, 38, 0, 3, 0, 61, 0, 22, 0, 120, 0, 51, 0, 141, 0, 3, 0, 18, 0, 19, 0, 61, 0, 23, 0, 32, 0, 37, 0, 120, 0, 18, 0, 3, 0, 17, 0, 120, 0, 42, 0, 3, 0, 94, 0, 18, 0, 19, 0, 24, 0, 61, 0, 23, 0, 31, 0, 22, 0, 120, 0, 54, 0, 141, 0, 38, 0, 3, 0, 61, 0, 141, 0, 32, 0, 120, 0, 61, 0, 94, 0, 26, 0, 3, 0, 17, 0, 51, 0, 141, 0, 3, 0, 24, 0, 14, 0, 9, 0, 3, 0, 66, 0, 120, 0, 33, 0, 32, 0, 3, 0, 17, 0, 120, 0, 27, 0, 3, 0, 28, 0, 94, 0, 27, 0, 34, 0, 120, 0, 27, 0, 23, 0, 32, 0, 3, 0, 45, 0, 141, 0, 26, 0, 3, 0, 120, 0, 14, 0, 94, 0, 23, 0, 3, 0, 31, 0, 59, 0, 66, 0, 54, 0, 141, 0, 17, 0, 120, 0, 61, 0, 94, 0, 3, 0, 25, 0, 35, 0, 120, 0, 61, 0, 141, 0, 38, 0, 3, 0, 61, 0, 141, 0, 32, 0, 120, 0, 51, 0, 141, 0, 31, 0, 3, 0, 14, 0, 3, 0, 24, 0, 61, 0, 23, 0, 31, 0, 32, 0, 18, 0, 94, 0, 22, 0, 120, 0, 45, 0, 94, 0, 3, 0, 17, 0, 37, 0, 9, 0, 3, 0, 28, 0, 94, 0, 59, 0, 25, 0, 22, 0, 120, 0, 18, 0, 10, 0, 2]} +{"text": "Les deux arcs sont séparés par la bande sombre d'Alexandre.", "phonemes": ["l", "e", "-", " ", "d", "ˈ", "ø", "z", " ", "ˈ", "a", "ʁ", "k", " ", "s", "ˈ", "ɔ", "̃", " ", "s", "e", "p", "a", "ʁ", "ˈ", "e", " ", "p", "a", "ʁ", " ", "l", "a", "-", " ", "b", "ˈ", "ɑ", "̃", "d", " ", "s", "ˈ", "ɔ", "̃", "b", "ʁ", " ", "d", "a", "l", "ɛ", "k", "s", "ˈ", "ɑ", "̃", "d", "ʁ", "."], "phoneme_ids": [1, 0, 24, 0, 18, 0, 9, 0, 3, 0, 17, 0, 120, 0, 42, 0, 38, 0, 3, 0, 120, 0, 14, 0, 94, 0, 23, 0, 3, 0, 31, 0, 120, 0, 54, 0, 141, 0, 3, 0, 31, 0, 18, 0, 28, 0, 14, 0, 94, 0, 120, 0, 18, 0, 3, 0, 28, 0, 14, 0, 94, 0, 3, 0, 24, 0, 14, 0, 9, 0, 3, 0, 15, 0, 120, 0, 51, 0, 141, 0, 17, 0, 3, 0, 31, 0, 120, 0, 54, 0, 141, 0, 15, 0, 94, 0, 3, 0, 17, 0, 14, 0, 24, 0, 61, 0, 23, 0, 31, 0, 120, 0, 51, 0, 141, 0, 17, 0, 94, 0, 10, 0, 2]} +{"text": "Buvez de ce whisky que le patron juge fameux.", "phonemes": ["b", "y", "v", "ˈ", "e", " ", "d", "ə", "-", " ", "s", "ə", "-", " ", "w", "ˈ", "ɪ", "s", "k", "i", " ", "k", "ə", " ", "l", "ə", "-", " ", "p", "a", "t", "ʁ", "ˈ", "ɔ", "̃", " ", "ʒ", "ˈ", "y", "ʒ", " ", "f", "a", "m", "ˈ", "ø", "."], "phoneme_ids": [1, 0, 15, 0, 37, 0, 34, 0, 120, 0, 18, 0, 3, 0, 17, 0, 59, 0, 9, 0, 3, 0, 31, 0, 59, 0, 9, 0, 3, 0, 35, 0, 120, 0, 74, 0, 31, 0, 23, 0, 21, 0, 3, 0, 23, 0, 59, 0, 3, 0, 24, 0, 59, 0, 9, 0, 3, 0, 28, 0, 14, 0, 32, 0, 94, 0, 120, 0, 54, 0, 141, 0, 3, 0, 108, 0, 120, 0, 37, 0, 108, 0, 3, 0, 19, 0, 14, 0, 25, 0, 120, 0, 42, 0, 10, 0, 2]} diff --git a/piper/piper/etc/test_sentences/test_hu.jsonl b/piper/piper/etc/test_sentences/test_hu.jsonl new file mode 100644 index 0000000..067c5fe --- /dev/null +++ b/piper/piper/etc/test_sentences/test_hu.jsonl @@ -0,0 +1,6 @@ +{"phoneme_ids":[1,0,121,0,51,0,3,0,31,0,120,0,21,0,34,0,14,0,122,0,30,0,34,0,14,0,122,0,82,0,3,0,120,0,27,0,22,0,51,0,26,0,3,0,120,0,27,0,28,0,32,0,21,0,23,0,51,0,21,0,3,0,22,0,121,0,61,0,24,0,61,0,26,0,96,0,18,0,122,0,66,0,8,0,3,0,25,0,120,0,61,0,22,0,61,0,32,0,3,0,120,0,61,0,96,0,42,0,122,0,3,0,34,0,121,0,51,0,64,0,3,0,28,0,120,0,14,0,122,0,30,0,51,0,32,0,96,0,61,0,28,0,122,0,61,0,23,0,3,0,121,0,27,0,23,0,27,0,38,0,26,0,51,0,23,0,8,0,3,0,25,0,120,0,21,0,23,0,27,0,30,0,3,0,121,0,51,0,3,0,19,0,120,0,18,0,122,0,82,0,3,0,28,0,30,0,120,0,21,0,38,0,25,0,51,0,31,0,61,0,30,0,37,0,122,0,61,0,26,0,3,0,25,0,120,0,61,0,66,0,32,0,42,0,30,0,21,0,23,0,3,0,30,0,120,0,51,0,22,0,32,0,33,0,23,0,3,0,121,0,18,0,122,0,96,0,3,0,31,0,120,0,21,0,122,0,26,0,61,0,21,0,30,0,61,0,3,0,15,0,120,0,27,0,25,0,24,0,21,0,23,0,8,0,3,0,23,0,120,0,21,0,51,0,24,0,51,0,23,0,33,0,24,0,3,0,121,0,51,0,3,0,31,0,120,0,21,0,122,0,26,0,23,0,18,0,122,0,28,0,61,0,8,0,3,0,25,0,120,0,14,0,122,0,96,0,3,0,26,0,120,0,18,0,122,0,34,0,61,0,26,0,3,0,96,0,28,0,120,0,61,0,23,0,32,0,30,0,33,0,25,0,51,0,10,0,2],"phonemes":["ˌ","ɑ"," ","s","ˈ","i","v","a","ː","r","v","a","ː","ɲ"," ","ˈ","o","j","ɑ","n"," ","ˈ","o","p","t","i","k","ɑ","i"," ","j","ˌ","ɛ","l","ɛ","n","ʃ","e","ː","ɡ",","," ","m","ˈ","ɛ","j","ɛ","t"," ","ˈ","ɛ","ʃ","ø","ː"," ","v","ˌ","ɑ","ɟ"," ","p","ˈ","a","ː","r","ɑ","t","ʃ","ɛ","p","ː","ɛ","k"," ","ˌ","o","k","o","z","n","ɑ","k",","," ","m","ˈ","i","k","o","r"," ","ˌ","ɑ"," ","f","ˈ","e","ː","ɲ"," ","p","r","ˈ","i","z","m","ɑ","s","ɛ","r","y","ː","ɛ","n"," ","m","ˈ","ɛ","ɡ","t","ø","r","i","k"," ","r","ˈ","ɑ","j","t","u","k"," ","ˌ","e","ː","ʃ"," ","s","ˈ","i","ː","n","ɛ","i","r","ɛ"," ","b","ˈ","o","m","l","i","k",","," ","k","ˈ","i","ɑ","l","ɑ","k","u","l"," ","ˌ","ɑ"," ","s","ˈ","i","ː","n","k","e","ː","p","ɛ",","," ","m","ˈ","a","ː","ʃ"," ","n","ˈ","e","ː","v","ɛ","n"," ","ʃ","p","ˈ","ɛ","k","t","r","u","m","ɑ","."],"processed_text":"A szivárvány olyan optikai jelenség, melyet eső- vagy páracseppek okoznak, mikor a fény prizmaszerűen megtörik rajtuk és színeire bomlik, kialakul a színképe, más néven spektruma.","text":"A szivárvány olyan optikai jelenség, melyet eső- vagy páracseppek okoznak, mikor a fény prizmaszerűen megtörik rajtuk és színeire bomlik, kialakul a színképe, más néven spektruma."} +{"phoneme_ids":[1,0,121,0,51,0,38,0,3,0,120,0,21,0,122,0,34,0,3,0,23,0,120,0,37,0,24,0,96,0,42,0,122,0,3,0,30,0,120,0,18,0,122,0,31,0,61,0,3,0,34,0,120,0,42,0,30,0,42,0,96,0,8,0,3,0,25,0,120,0,21,0,122,0,66,0,3,0,121,0,51,0,3,0,15,0,120,0,61,0,24,0,96,0,42,0,122,0,3,0,120,0,21,0,15,0,27,0,22,0,51,0,10,0,2],"phonemes":["ˌ","ɑ","z"," ","ˈ","i","ː","v"," ","k","ˈ","y","l","ʃ","ø","ː"," ","r","ˈ","e","ː","s","ɛ"," ","v","ˈ","ø","r","ø","ʃ",","," ","m","ˈ","i","ː","ɡ"," ","ˌ","ɑ"," ","b","ˈ","ɛ","l","ʃ","ø","ː"," ","ˈ","i","b","o","j","ɑ","."],"processed_text":"Az ív külső része vörös, míg a belső ibolya.","text":"Az ív külső része vörös, míg a belső ibolya."} +{"phoneme_ids":[1,0,120,0,61,0,24,0,42,0,122,0,19,0,27,0,30,0,17,0,33,0,24,0,3,0,121,0,51,0,38,0,3,0,120,0,33,0,122,0,64,0,26,0,61,0,34,0,61,0,38,0,61,0,32,0,122,0,10,0,2],"phonemes":["ˈ","ɛ","l","ø","ː","f","o","r","d","u","l"," ","ˌ","ɑ","z"," ","ˈ","u","ː","ɟ","n","ɛ","v","ɛ","z","ɛ","t","ː","."],"processed_text":"Előfordul az ún.","text":"Előfordul az ún."} +{"phoneme_ids":[1,0,17,0,120,0,33,0,28,0,24,0,51,0,3,0,31,0,120,0,21,0,34,0,14,0,122,0,30,0,34,0,14,0,122,0,82,0,3,0,121,0,21,0,96,0,8,0,3,0,120,0,51,0,25,0,61,0,22,0,26,0,18,0,122,0,24,0,3,0,120,0,61,0,64,0,3,0,25,0,120,0,14,0,122,0,96,0,21,0,23,0,8,0,3,0,20,0,120,0,51,0,24,0,34,0,14,0,122,0,82,0,51,0,15,0,122,0,3,0,120,0,21,0,122,0,34,0,3,0,120,0,21,0,96,0,3,0,24,0,120,0,14,0,122,0,32,0,20,0,51,0,32,0,27,0,122,0,3,0,19,0,120,0,27,0,30,0,17,0,21,0,122,0,32,0,27,0,32,0,122,0,3,0,96,0,120,0,27,0,30,0,61,0,26,0,17,0,37,0,122,0,3,0,31,0,120,0,21,0,122,0,26,0,61,0,23,0,122,0,61,0,24,0,10,0,2],"phonemes":["d","ˈ","u","p","l","ɑ"," ","s","ˈ","i","v","a","ː","r","v","a","ː","ɲ"," ","ˌ","i","ʃ",","," ","ˈ","ɑ","m","ɛ","j","n","e","ː","l"," ","ˈ","ɛ","ɟ"," ","m","ˈ","a","ː","ʃ","i","k",","," ","h","ˈ","ɑ","l","v","a","ː","ɲ","ɑ","b","ː"," ","ˈ","i","ː","v"," ","ˈ","i","ʃ"," ","l","ˈ","a","ː","t","h","ɑ","t","o","ː"," ","f","ˈ","o","r","d","i","ː","t","o","t","ː"," ","ʃ","ˈ","o","r","ɛ","n","d","y","ː"," ","s","ˈ","i","ː","n","ɛ","k","ː","ɛ","l","."],"processed_text":"dupla szivárvány is, amelynél egy másik, halványabb ív is látható fordított sorrendű színekkel.","text":"dupla szivárvány is, amelynél egy másik, halványabb ív is látható fordított sorrendű színekkel."} +{"phoneme_ids":[1,0,121,0,61,0,24,0,42,0,122,0,19,0,27,0,30,0,17,0,33,0,24,0,8,0,3,0,20,0,121,0,27,0,64,0,121,0,51,0,3,0,31,0,120,0,21,0,34,0,14,0,122,0,30,0,34,0,14,0,122,0,82,0,3,0,120,0,21,0,122,0,34,0,3,0,19,0,120,0,27,0,30,0,25,0,14,0,122,0,22,0,51,0,3,0,120,0,21,0,96,0,3,0,25,0,120,0,61,0,66,0,34,0,14,0,122,0,24,0,32,0,27,0,38,0,21,0,23,0,8,0,3,0,30,0,120,0,61,0,28,0,37,0,24,0,42,0,122,0,66,0,18,0,122,0,28,0,15,0,42,0,122,0,24,0,3,0,26,0,120,0,18,0,122,0,38,0,34,0,61,0,3,0,23,0,120,0,42,0,30,0,26,0,61,0,23,0,3,0,24,0,121,0,14,0,122,0,32,0,31,0,122,0,21,0,23,0,8,0,3,0,34,0,121,0,51,0,64,0,3,0,120,0,21,0,30,0,21,0,38,0,14,0,122,0,24,0,27,0,122,0,3,0,19,0,120,0,61,0,24,0,20,0,42,0,122,0,23,0,61,0,32,0,3,0,120,0,33,0,122,0,64,0,26,0,61,0,34,0,61,0,38,0,61,0,32,0,122,0,3,0,32,0,120,0,37,0,122,0,38,0,31,0,21,0,34,0,14,0,122,0,30,0,34,0,14,0,122,0,82,0,32,0,3,0,120,0,21,0,96,0,3,0,24,0,120,0,18,0,122,0,32,0,30,0,61,0,20,0,27,0,38,0,20,0,51,0,32,0,8,0,3,0,120,0,51,0,25,0,61,0,82,0,82,0,21,0,15,0,61,0,26,0,3,0,121,0,51,0,3,0,19,0,120,0,18,0,122,0,82,0,3,0,22,0,120,0,18,0,122,0,23,0,122,0,30,0,21,0,96,0,32,0,14,0,122,0,22,0,27,0,23,0,27,0,26,0,3,0,32,0,120,0,42,0,30,0,21,0,23,0,3,0,25,0,121,0,61,0,66,0,8,0,3,0,25,0,120,0,61,0,66,0,19,0,61,0,24,0,61,0,24,0,42,0,122,0,3,0,23,0,120,0,42,0,30,0,37,0,24,0,25,0,18,0,122,0,82,0,61,0,23,0,3,0,23,0,121,0,42,0,38,0,42,0,32,0,122,0,10,0,2],"phonemes":["ˌ","ɛ","l","ø","ː","f","o","r","d","u","l",","," ","h","ˌ","o","ɟ","ˌ","ɑ"," ","s","ˈ","i","v","a","ː","r","v","a","ː","ɲ"," ","ˈ","i","ː","v"," ","f","ˈ","o","r","m","a","ː","j","ɑ"," ","ˈ","i","ʃ"," ","m","ˈ","ɛ","ɡ","v","a","ː","l","t","o","z","i","k",","," ","r","ˈ","ɛ","p","y","l","ø","ː","ɡ","e","ː","p","b","ø","ː","l"," ","n","ˈ","e","ː","z","v","ɛ"," ","k","ˈ","ø","r","n","ɛ","k"," ","l","ˌ","a","ː","t","s","ː","i","k",","," ","v","ˌ","ɑ","ɟ"," ","ˈ","i","r","i","z","a","ː","l","o","ː"," ","f","ˈ","ɛ","l","h","ø","ː","k","ɛ","t"," ","ˈ","u","ː","ɟ","n","ɛ","v","ɛ","z","ɛ","t","ː"," ","t","ˈ","y","ː","z","s","i","v","a","ː","r","v","a","ː","ɲ","t"," ","ˈ","i","ʃ"," ","l","ˈ","e","ː","t","r","ɛ","h","o","z","h","ɑ","t",","," ","ˈ","ɑ","m","ɛ","ɲ","ɲ","i","b","ɛ","n"," ","ˌ","ɑ"," ","f","ˈ","e","ː","ɲ"," ","j","ˈ","e","ː","k","ː","r","i","ʃ","t","a","ː","j","o","k","o","n"," ","t","ˈ","ø","r","i","k"," ","m","ˌ","ɛ","ɡ",","," ","m","ˈ","ɛ","ɡ","f","ɛ","l","ɛ","l","ø","ː"," ","k","ˈ","ø","r","y","l","m","e","ː","ɲ","ɛ","k"," ","k","ˌ","ø","z","ø","t","ː","."],"processed_text":"Előfordul, hogy a szivárvány ív formája is megváltozik, repülőgépből nézve körnek látszik, vagy irizáló felhőket (úgynevezett „tűzszivárványt”) is létrehozhat, amennyiben a fény jégkristályokon törik meg, megfelelő körülmények között.","text":"Előfordul, hogy a szivárvány ív formája is megváltozik, repülőgépből nézve körnek látszik, vagy irizáló felhőket (úgynevezett „tűzszivárványt”) is létrehozhat, amennyiben a fény jégkristályokon törik meg, megfelelő körülmények között."} +{"phoneme_ids":[1,0,22,0,120,0,27,0,122,0,3,0,19,0,120,0,27,0,23,0,31,0,21,0,25,0,3,0,121,0,18,0,122,0,96,0,3,0,17,0,120,0,27,0,26,0,3,0,23,0,34,0,120,0,21,0,22,0,27,0,32,0,61,0,3,0,20,0,120,0,33,0,122,0,31,0,34,0,51,0,32,0,122,0,27,0,96,0,3,0,24,0,120,0,14,0,122,0,25,0,28,0,14,0,122,0,26,0,14,0,122,0,24,0,3,0,120,0,37,0,24,0,34,0,61,0,3,0,120,0,61,0,64,0,3,0,28,0,120,0,14,0,122,0,30,0,3,0,15,0,120,0,37,0,122,0,34,0,42,0,96,0,3,0,32,0,31,0,120,0,21,0,28,0,42,0,122,0,32,0,3,0,23,0,121,0,18,0,122,0,31,0,21,0,122,0,32,0,10,0,2],"phonemes":["j","ˈ","o","ː"," ","f","ˈ","o","k","s","i","m"," ","ˌ","e","ː","ʃ"," ","d","ˈ","o","n"," ","k","v","ˈ","i","j","o","t","ɛ"," ","h","ˈ","u","ː","s","v","ɑ","t","ː","o","ʃ"," ","l","ˈ","a","ː","m","p","a","ː","n","a","ː","l"," ","ˈ","y","l","v","ɛ"," ","ˈ","ɛ","ɟ"," ","p","ˈ","a","ː","r"," ","b","ˈ","y","ː","v","ø","ʃ"," ","t","s","ˈ","i","p","ø","ː","t"," ","k","ˌ","e","ː","s","i","ː","t","."],"processed_text":"Jó foxim és don Quijote húszwattos lámpánál ülve egy pár bűvös cipőt készít.","text":"Jó foxim és don Quijote húszwattos lámpánál ülve egy pár bűvös cipőt készít."} diff --git a/piper/piper/etc/test_sentences/test_ka.jsonl b/piper/piper/etc/test_sentences/test_ka.jsonl new file mode 100644 index 0000000..5ceb3df --- /dev/null +++ b/piper/piper/etc/test_sentences/test_ka.jsonl @@ -0,0 +1,7 @@ +{"text": "ცისარტყელა — ატმოსფერული ოპტიკური და მეტეოროლოგიური მოვლენა, რომელიც ხშირად წვიმის შემდეგ ჩნდება.", "phonemes": ["t", "s", "ʰ", "ˈ", "i", "s", "a", "r", "t", "q", "ˌ", "e", "l", "a", ",", " ", "ˈ", "a", "t", "m", "o", "s", "p", "ʰ", "ˌ", "e", "r", "u", "l", "i", " ", "ˈ", "o", "p", "t", "i", "k", "ˌ", "u", "r", "i", " ", "d", "a", " ", "m", "ˈ", "e", "t", "e", "ˌ", "o", "r", "o", "l", "ˌ", "o", "ɡ", "i", "ˌ", "u", "r", "i", " ", "m", "ˈ", "o", "v", "l", "e", "n", "a", ".", " ", "r", "ˈ", "o", "m", "e", "l", "i", "t", "s", "ʰ", " ", "x", "ʃ", "ˈ", "i", "r", "a", "d", " ", "t", "s", "v", "ˈ", "i", "m", "i", "s", " ", "ʃ", "ˈ", "e", "m", "d", "e", "ɡ", " ", "t", "ʃ", "n", "d", "ˈ", "e", "b", "a"], "phoneme_ids": [1, 0, 32, 0, 31, 0, 145, 0, 120, 0, 21, 0, 31, 0, 14, 0, 30, 0, 32, 0, 29, 0, 121, 0, 18, 0, 24, 0, 14, 0, 8, 0, 3, 0, 120, 0, 14, 0, 32, 0, 25, 0, 27, 0, 31, 0, 28, 0, 145, 0, 121, 0, 18, 0, 30, 0, 33, 0, 24, 0, 21, 0, 3, 0, 120, 0, 27, 0, 28, 0, 32, 0, 21, 0, 23, 0, 121, 0, 33, 0, 30, 0, 21, 0, 3, 0, 17, 0, 14, 0, 3, 0, 25, 0, 120, 0, 18, 0, 32, 0, 18, 0, 121, 0, 27, 0, 30, 0, 27, 0, 24, 0, 121, 0, 27, 0, 66, 0, 21, 0, 121, 0, 33, 0, 30, 0, 21, 0, 3, 0, 25, 0, 120, 0, 27, 0, 34, 0, 24, 0, 18, 0, 26, 0, 14, 0, 10, 0, 3, 0, 30, 0, 120, 0, 27, 0, 25, 0, 18, 0, 24, 0, 21, 0, 32, 0, 31, 0, 145, 0, 3, 0, 36, 0, 96, 0, 120, 0, 21, 0, 30, 0, 14, 0, 17, 0, 3, 0, 32, 0, 31, 0, 34, 0, 120, 0, 21, 0, 25, 0, 21, 0, 31, 0, 3, 0, 96, 0, 120, 0, 18, 0, 25, 0, 17, 0, 18, 0, 66, 0, 3, 0, 32, 0, 96, 0, 26, 0, 17, 0, 120, 0, 18, 0, 15, 0, 14, 0, 2]} +{"text": "ეს თავისებური რკალია ან წრეხაზი, რომელიც ფერების სპექტრისგან შედგება.", "phonemes": ["ˈ", "e", "s", " ", "t", "ʰ", "ˈ", "a", "v", "i", "s", "ˌ", "e", "b", "u", "r", "i", " ", "r", "k", "ˈ", "a", "l", "i", "a", " ", "ˈ", "a", "n", " ", "t", "s", "r", "ˈ", "e", "x", "a", "z", "i", ",", " ", "r", "ˈ", "o", "m", "e", "l", "i", "t", "s", "ʰ", " ", "p", "ʰ", "ˈ", "e", "r", "e", "b", "i", "s", " ", "s", "p", "ˈ", "e", "k", "ʰ", "t", "r", "i", "s", "ɡ", "a", "n", " ", "ʃ", "ˈ", "e", "d", "ɡ", "e", "b", "a", "."], "phoneme_ids": [1, 0, 120, 0, 18, 0, 31, 0, 3, 0, 32, 0, 145, 0, 120, 0, 14, 0, 34, 0, 21, 0, 31, 0, 121, 0, 18, 0, 15, 0, 33, 0, 30, 0, 21, 0, 3, 0, 30, 0, 23, 0, 120, 0, 14, 0, 24, 0, 21, 0, 14, 0, 3, 0, 120, 0, 14, 0, 26, 0, 3, 0, 32, 0, 31, 0, 30, 0, 120, 0, 18, 0, 36, 0, 14, 0, 38, 0, 21, 0, 8, 0, 3, 0, 30, 0, 120, 0, 27, 0, 25, 0, 18, 0, 24, 0, 21, 0, 32, 0, 31, 0, 145, 0, 3, 0, 28, 0, 145, 0, 120, 0, 18, 0, 30, 0, 18, 0, 15, 0, 21, 0, 31, 0, 3, 0, 31, 0, 28, 0, 120, 0, 18, 0, 23, 0, 145, 0, 32, 0, 30, 0, 21, 0, 31, 0, 66, 0, 14, 0, 26, 0, 3, 0, 96, 0, 120, 0, 18, 0, 17, 0, 66, 0, 18, 0, 15, 0, 14, 0, 10, 0, 2]} +{"text": "ცისარტყელა შედგება შვიდი ფერისგან: წითელი, ნარინჯისფერი, ყვითელი, მწვანე, ცისფერი, ლურჯი, იისფერი.", "phonemes": ["t", "s", "ʰ", "ˈ", "i", "s", "a", "r", "t", "q", "ˌ", "e", "l", "a", " ", "ʃ", "ˈ", "e", "d", "ɡ", "e", "b", "a", " ", "ʃ", "v", "ˈ", "i", "d", "i", " ", "p", "ʰ", "ˈ", "e", "r", "i", "s", "ɡ", "a", "n", ":", " ", "t", "s", "ˈ", "i", "t", "ʰ", "e", "l", "i", ",", " ", "n", "ˈ", "a", "r", "i", "n", "d", "ʒ", "ˌ", "i", "s", "p", "ʰ", "e", "r", "i", ",", " ", "q", "v", "ˈ", "i", "t", "ʰ", "e", "l", "i", ",", " ", "m", "t", "s", "v", "ˈ", "a", "n", "e", ",", " ", "t", "s", "ʰ", "ˈ", "i", "s", "p", "ʰ", "e", "r", "i", ",", " ", "l", "ˈ", "u", "r", "d", "ʒ", "i", ",", " ", "ˈ", "i", "i", "s", "p", "ʰ", "ˌ", "e", "r", "i", "."], "phoneme_ids": [1, 0, 32, 0, 31, 0, 145, 0, 120, 0, 21, 0, 31, 0, 14, 0, 30, 0, 32, 0, 29, 0, 121, 0, 18, 0, 24, 0, 14, 0, 3, 0, 96, 0, 120, 0, 18, 0, 17, 0, 66, 0, 18, 0, 15, 0, 14, 0, 3, 0, 96, 0, 34, 0, 120, 0, 21, 0, 17, 0, 21, 0, 3, 0, 28, 0, 145, 0, 120, 0, 18, 0, 30, 0, 21, 0, 31, 0, 66, 0, 14, 0, 26, 0, 11, 0, 3, 0, 32, 0, 31, 0, 120, 0, 21, 0, 32, 0, 145, 0, 18, 0, 24, 0, 21, 0, 8, 0, 3, 0, 26, 0, 120, 0, 14, 0, 30, 0, 21, 0, 26, 0, 17, 0, 108, 0, 121, 0, 21, 0, 31, 0, 28, 0, 145, 0, 18, 0, 30, 0, 21, 0, 8, 0, 3, 0, 29, 0, 34, 0, 120, 0, 21, 0, 32, 0, 145, 0, 18, 0, 24, 0, 21, 0, 8, 0, 3, 0, 25, 0, 32, 0, 31, 0, 34, 0, 120, 0, 14, 0, 26, 0, 18, 0, 8, 0, 3, 0, 32, 0, 31, 0, 145, 0, 120, 0, 21, 0, 31, 0, 28, 0, 145, 0, 18, 0, 30, 0, 21, 0, 8, 0, 3, 0, 24, 0, 120, 0, 33, 0, 30, 0, 17, 0, 108, 0, 21, 0, 8, 0, 3, 0, 120, 0, 21, 0, 21, 0, 31, 0, 28, 0, 145, 0, 121, 0, 18, 0, 30, 0, 21, 0, 10, 0, 2]} +{"text": "ცენტრი წრისა, რომელსაც ცისარტყელა შემოწერს, ძევს წრფეზე, რომელიც გადის დამკვირვებელსა და მზეს შორის, ამავდროულად ცისარტყელას დანახვისას მზე ყოველთვის მდებარეობს დამკვირვებლის ზურგს უკან, შესაბამისად, სპეციალური ოპტიკური ხელსაწყოების გარეშე შეუძლებელია ერთდროულად ცისარტყელასა და მზის დანახვა.", "phonemes": ["t", "s", "ʰ", "ˈ", "e", "n", "t", "r", "i", " ", "t", "s", "r", "ˈ", "i", "s", "a", ",", " ", "r", "ˈ", "o", "m", "e", "l", "s", "a", "t", "s", "ʰ", " ", "t", "s", "ʰ", "ˈ", "i", "s", "a", "r", "t", "q", "ˌ", "e", "l", "a", " ", "ʃ", "ˈ", "e", "m", "o", "t", "s", "e", "r", "s", ",", " ", "d", "z", "ˈ", "e", "v", "s", " ", "t", "s", "r", "p", "ʰ", "ˈ", "e", "z", "e", ",", " ", "r", "ˈ", "o", "m", "e", "l", "i", "t", "s", "ʰ", " ", "ɡ", "ˈ", "a", "d", "i", "s", " ", "d", "ˈ", "a", "m", "k", "v", "i", "r", "v", "ˌ", "e", "b", "e", "l", "s", "a", " ", "d", "a", " ", "m", "z", "ˈ", "e", "s", " ", "ʃ", "ˈ", "o", "r", "i", "s", ",", " ", "ˈ", "a", "m", "a", "v", "d", "r", "ˌ", "o", "u", "l", "a", "d", " ", "t", "s", "ʰ", "ˈ", "i", "s", "a", "r", "t", "q", "ˌ", "e", "l", "a", "s", " ", "d", "ˈ", "a", "n", "a", "x", "v", "ˌ", "i", "s", "a", "s", " ", "m", "z", "ˈ", "e", " ", "q", "ˈ", "o", "v", "e", "l", "t", "ʰ", "v", "i", "s", " ", "m", "d", "ˈ", "e", "b", "a", "r", "ˌ", "e", "o", "b", "s", " ", "d", "ˈ", "a", "m", "k", "v", "i", "r", "v", "ˌ", "e", "b", "l", "i", "s", " ", "z", "ˈ", "u", "r", "ɡ", "s", " ", "ˈ", "u", "k", "a", "n", ",", " ", "ʃ", "ˈ", "e", "s", "a", "b", "ˌ", "a", "m", "i", "s", "a", "d", ",", " ", "s", "p", "ˈ", "e", "t", "s", "ʰ", "i", "ˌ", "a", "l", "u", "r", "i", " ", "ˈ", "o", "p", "t", "i", "k", "ˌ", "u", "r", "i", " ", "x", "ˈ", "e", "l", "s", "a", "t", "s", "q", "ˌ", "o", "e", "b", "i", "s", " ", "ɡ", "ˈ", "a", "r", "e", "ʃ", "e", " ", "ʃ", "ˈ", "e", "u", "d", "z", "l", "ˌ", "e", "b", "e", "l", "ˌ", "i", "a", " ", "ˈ", "e", "r", "t", "ʰ", "d", "r", "o", "ˌ", "u", "l", "a", "d", " ", "t", "s", "ʰ", "ˈ", "i", "s", "a", "r", "t", "q", "ˌ", "e", "l", "a", "s", "a", " ", "d", "a", " ", "m", "z", "ˈ", "i", "s", " ", "d", "ˈ", "a", "n", "a", "x", "v", "a", "."], "phoneme_ids": [1, 0, 32, 0, 31, 0, 145, 0, 120, 0, 18, 0, 26, 0, 32, 0, 30, 0, 21, 0, 3, 0, 32, 0, 31, 0, 30, 0, 120, 0, 21, 0, 31, 0, 14, 0, 8, 0, 3, 0, 30, 0, 120, 0, 27, 0, 25, 0, 18, 0, 24, 0, 31, 0, 14, 0, 32, 0, 31, 0, 145, 0, 3, 0, 32, 0, 31, 0, 145, 0, 120, 0, 21, 0, 31, 0, 14, 0, 30, 0, 32, 0, 29, 0, 121, 0, 18, 0, 24, 0, 14, 0, 3, 0, 96, 0, 120, 0, 18, 0, 25, 0, 27, 0, 32, 0, 31, 0, 18, 0, 30, 0, 31, 0, 8, 0, 3, 0, 17, 0, 38, 0, 120, 0, 18, 0, 34, 0, 31, 0, 3, 0, 32, 0, 31, 0, 30, 0, 28, 0, 145, 0, 120, 0, 18, 0, 38, 0, 18, 0, 8, 0, 3, 0, 30, 0, 120, 0, 27, 0, 25, 0, 18, 0, 24, 0, 21, 0, 32, 0, 31, 0, 145, 0, 3, 0, 66, 0, 120, 0, 14, 0, 17, 0, 21, 0, 31, 0, 3, 0, 17, 0, 120, 0, 14, 0, 25, 0, 23, 0, 34, 0, 21, 0, 30, 0, 34, 0, 121, 0, 18, 0, 15, 0, 18, 0, 24, 0, 31, 0, 14, 0, 3, 0, 17, 0, 14, 0, 3, 0, 25, 0, 38, 0, 120, 0, 18, 0, 31, 0, 3, 0, 96, 0, 120, 0, 27, 0, 30, 0, 21, 0, 31, 0, 8, 0, 3, 0, 120, 0, 14, 0, 25, 0, 14, 0, 34, 0, 17, 0, 30, 0, 121, 0, 27, 0, 33, 0, 24, 0, 14, 0, 17, 0, 3, 0, 32, 0, 31, 0, 145, 0, 120, 0, 21, 0, 31, 0, 14, 0, 30, 0, 32, 0, 29, 0, 121, 0, 18, 0, 24, 0, 14, 0, 31, 0, 3, 0, 17, 0, 120, 0, 14, 0, 26, 0, 14, 0, 36, 0, 34, 0, 121, 0, 21, 0, 31, 0, 14, 0, 31, 0, 3, 0, 25, 0, 38, 0, 120, 0, 18, 0, 3, 0, 29, 0, 120, 0, 27, 0, 34, 0, 18, 0, 24, 0, 32, 0, 145, 0, 34, 0, 21, 0, 31, 0, 3, 0, 25, 0, 17, 0, 120, 0, 18, 0, 15, 0, 14, 0, 30, 0, 121, 0, 18, 0, 27, 0, 15, 0, 31, 0, 3, 0, 17, 0, 120, 0, 14, 0, 25, 0, 23, 0, 34, 0, 21, 0, 30, 0, 34, 0, 121, 0, 18, 0, 15, 0, 24, 0, 21, 0, 31, 0, 3, 0, 38, 0, 120, 0, 33, 0, 30, 0, 66, 0, 31, 0, 3, 0, 120, 0, 33, 0, 23, 0, 14, 0, 26, 0, 8, 0, 3, 0, 96, 0, 120, 0, 18, 0, 31, 0, 14, 0, 15, 0, 121, 0, 14, 0, 25, 0, 21, 0, 31, 0, 14, 0, 17, 0, 8, 0, 3, 0, 31, 0, 28, 0, 120, 0, 18, 0, 32, 0, 31, 0, 145, 0, 21, 0, 121, 0, 14, 0, 24, 0, 33, 0, 30, 0, 21, 0, 3, 0, 120, 0, 27, 0, 28, 0, 32, 0, 21, 0, 23, 0, 121, 0, 33, 0, 30, 0, 21, 0, 3, 0, 36, 0, 120, 0, 18, 0, 24, 0, 31, 0, 14, 0, 32, 0, 31, 0, 29, 0, 121, 0, 27, 0, 18, 0, 15, 0, 21, 0, 31, 0, 3, 0, 66, 0, 120, 0, 14, 0, 30, 0, 18, 0, 96, 0, 18, 0, 3, 0, 96, 0, 120, 0, 18, 0, 33, 0, 17, 0, 38, 0, 24, 0, 121, 0, 18, 0, 15, 0, 18, 0, 24, 0, 121, 0, 21, 0, 14, 0, 3, 0, 120, 0, 18, 0, 30, 0, 32, 0, 145, 0, 17, 0, 30, 0, 27, 0, 121, 0, 33, 0, 24, 0, 14, 0, 17, 0, 3, 0, 32, 0, 31, 0, 145, 0, 120, 0, 21, 0, 31, 0, 14, 0, 30, 0, 32, 0, 29, 0, 121, 0, 18, 0, 24, 0, 14, 0, 31, 0, 14, 0, 3, 0, 17, 0, 14, 0, 3, 0, 25, 0, 38, 0, 120, 0, 21, 0, 31, 0, 3, 0, 17, 0, 120, 0, 14, 0, 26, 0, 14, 0, 36, 0, 34, 0, 14, 0, 10, 0, 2]} +{"text": "ხმელეთზე მდებარე დამკვირვებლისთვის ცისარტყელას, როგორც წესი, აქვს რკალის, წრის ნაწილის, ფორმა.", "phonemes": ["x", "m", "ˈ", "e", "l", "e", "t", "ʰ", "z", "e", " ", "m", "d", "ˈ", "e", "b", "a", "r", "e", " ", "d", "ˈ", "a", "m", "k", "v", "i", "r", "v", "ˌ", "e", "b", "l", "i", "s", "t", "ʰ", "v", "i", "s", " ", "t", "s", "ʰ", "ˈ", "i", "s", "a", "r", "t", "q", "ˌ", "e", "l", "a", "s", ",", " ", "r", "ˈ", "o", "ɡ", "o", "r", "t", "s", "ʰ", " ", "t", "s", "ˈ", "e", "s", "i", ",", " ", "ˈ", "a", "k", "ʰ", "v", "s", " ", "r", "k", "ˈ", "a", "l", "i", "s", ",", " ", "t", "s", "r", "ˈ", "i", "s", " ", "n", "ˈ", "a", "t", "s", "i", "l", "i", "s", ",", " ", "p", "ʰ", "ˈ", "o", "r", "m", "a", "."], "phoneme_ids": [1, 0, 36, 0, 25, 0, 120, 0, 18, 0, 24, 0, 18, 0, 32, 0, 145, 0, 38, 0, 18, 0, 3, 0, 25, 0, 17, 0, 120, 0, 18, 0, 15, 0, 14, 0, 30, 0, 18, 0, 3, 0, 17, 0, 120, 0, 14, 0, 25, 0, 23, 0, 34, 0, 21, 0, 30, 0, 34, 0, 121, 0, 18, 0, 15, 0, 24, 0, 21, 0, 31, 0, 32, 0, 145, 0, 34, 0, 21, 0, 31, 0, 3, 0, 32, 0, 31, 0, 145, 0, 120, 0, 21, 0, 31, 0, 14, 0, 30, 0, 32, 0, 29, 0, 121, 0, 18, 0, 24, 0, 14, 0, 31, 0, 8, 0, 3, 0, 30, 0, 120, 0, 27, 0, 66, 0, 27, 0, 30, 0, 32, 0, 31, 0, 145, 0, 3, 0, 32, 0, 31, 0, 120, 0, 18, 0, 31, 0, 21, 0, 8, 0, 3, 0, 120, 0, 14, 0, 23, 0, 145, 0, 34, 0, 31, 0, 3, 0, 30, 0, 23, 0, 120, 0, 14, 0, 24, 0, 21, 0, 31, 0, 8, 0, 3, 0, 32, 0, 31, 0, 30, 0, 120, 0, 21, 0, 31, 0, 3, 0, 26, 0, 120, 0, 14, 0, 32, 0, 31, 0, 21, 0, 24, 0, 21, 0, 31, 0, 8, 0, 3, 0, 28, 0, 145, 0, 120, 0, 27, 0, 30, 0, 25, 0, 14, 0, 10, 0, 2]} +{"text": "რაც უფრო მაღალია დაკვირვების წერტილი — მით უფრო სრულია ეს რკალი (მთიდან ან თვითმფრინავიდან შესაძლებელია მთლიანი წრის დანახვაც).", "phonemes": ["r", "ˈ", "a", "t", "s", "ʰ", " ", "ˈ", "u", "p", "ʰ", "r", "o", " ", "m", "ˈ", "a", "ɣ", "a", "l", "ˌ", "i", "a", " ", "d", "ˈ", "a", "k", "v", "i", "r", "v", "ˌ", "e", "b", "i", "s", " ", "t", "s", "ˈ", "e", "r", "t", "i", "l", "i", ".", " ", "m", "ˈ", "i", "t", "ʰ", " ", "ˈ", "u", "p", "ʰ", "r", "o", " ", "s", "r", "ˈ", "u", "l", "i", "a", " ", "ˈ", "e", "s", " ", "r", "k", "ˈ", "a", "l", "i", " ", "m", "t", "ʰ", "ˈ", "i", "d", "a", "n", " ", "ˈ", "a", "n", " ", "t", "ʰ", "v", "ˈ", "i", "t", "ʰ", "m", "p", "ʰ", "r", "i", "n", "ˌ", "a", "v", "i", "d", "a", "n", " ", "ʃ", "ˈ", "e", "s", "a", "d", "z", "l", "ˌ", "e", "b", "e", "l", "ˌ", "i", "a", " ", "m", "t", "ʰ", "l", "ˈ", "i", "a", "n", "i", " ", "t", "s", "r", "ˈ", "i", "s", " ", "d", "ˈ", "a", "n", "a", "x", "v", "a", "t", "s", "ʰ"], "phoneme_ids": [1, 0, 30, 0, 120, 0, 14, 0, 32, 0, 31, 0, 145, 0, 3, 0, 120, 0, 33, 0, 28, 0, 145, 0, 30, 0, 27, 0, 3, 0, 25, 0, 120, 0, 14, 0, 68, 0, 14, 0, 24, 0, 121, 0, 21, 0, 14, 0, 3, 0, 17, 0, 120, 0, 14, 0, 23, 0, 34, 0, 21, 0, 30, 0, 34, 0, 121, 0, 18, 0, 15, 0, 21, 0, 31, 0, 3, 0, 32, 0, 31, 0, 120, 0, 18, 0, 30, 0, 32, 0, 21, 0, 24, 0, 21, 0, 10, 0, 3, 0, 25, 0, 120, 0, 21, 0, 32, 0, 145, 0, 3, 0, 120, 0, 33, 0, 28, 0, 145, 0, 30, 0, 27, 0, 3, 0, 31, 0, 30, 0, 120, 0, 33, 0, 24, 0, 21, 0, 14, 0, 3, 0, 120, 0, 18, 0, 31, 0, 3, 0, 30, 0, 23, 0, 120, 0, 14, 0, 24, 0, 21, 0, 3, 0, 25, 0, 32, 0, 145, 0, 120, 0, 21, 0, 17, 0, 14, 0, 26, 0, 3, 0, 120, 0, 14, 0, 26, 0, 3, 0, 32, 0, 145, 0, 34, 0, 120, 0, 21, 0, 32, 0, 145, 0, 25, 0, 28, 0, 145, 0, 30, 0, 21, 0, 26, 0, 121, 0, 14, 0, 34, 0, 21, 0, 17, 0, 14, 0, 26, 0, 3, 0, 96, 0, 120, 0, 18, 0, 31, 0, 14, 0, 17, 0, 38, 0, 24, 0, 121, 0, 18, 0, 15, 0, 18, 0, 24, 0, 121, 0, 21, 0, 14, 0, 3, 0, 25, 0, 32, 0, 145, 0, 24, 0, 120, 0, 21, 0, 14, 0, 26, 0, 21, 0, 3, 0, 32, 0, 31, 0, 30, 0, 120, 0, 21, 0, 31, 0, 3, 0, 17, 0, 120, 0, 14, 0, 26, 0, 14, 0, 36, 0, 34, 0, 14, 0, 32, 0, 31, 0, 145, 0, 2]} +{"text": "როდესაც მზე აღიმართება ჰორიზონტიდან 42 გრადუსზე უფრო მაღლა, ცისარტყელა დედამიწის ზედაპირიდან უხილავია.", "phonemes": ["r", "ˈ", "o", "d", "e", "s", "a", "t", "s", "ʰ", " ", "m", "z", "ˈ", "e", " ", "ˈ", "a", "ɣ", "i", "m", "ˌ", "a", "r", "t", "ʰ", "e", "b", "a", " ", "h", "ˈ", "o", "r", "i", "z", "ˌ", "o", "n", "t", "i", "d", "a", "n", " ", "ˈ", "o", "r", "m", "o", "t", "s", "d", "a", "ˈ", "o", "r", "i", " ", "ɡ", "r", "ˈ", "a", "d", "u", "s", "z", "e", " ", "ˈ", "u", "p", "ʰ", "r", "o", " ", "m", "ˈ", "a", "ɣ", "l", "a", ",", " ", "t", "s", "ʰ", "ˈ", "i", "s", "a", "r", "t", "q", "ˌ", "e", "l", "a", " ", "d", "ˈ", "e", "d", "a", "m", "ˌ", "i", "t", "s", "i", "s", " ", "z", "ˈ", "e", "d", "a", "p", "ˌ", "i", "r", "i", "d", "a", "n", " ", "ˈ", "u", "x", "i", "l", "ˌ", "a", "v", "i", "a", "."], "phoneme_ids": [1, 0, 30, 0, 120, 0, 27, 0, 17, 0, 18, 0, 31, 0, 14, 0, 32, 0, 31, 0, 145, 0, 3, 0, 25, 0, 38, 0, 120, 0, 18, 0, 3, 0, 120, 0, 14, 0, 68, 0, 21, 0, 25, 0, 121, 0, 14, 0, 30, 0, 32, 0, 145, 0, 18, 0, 15, 0, 14, 0, 3, 0, 20, 0, 120, 0, 27, 0, 30, 0, 21, 0, 38, 0, 121, 0, 27, 0, 26, 0, 32, 0, 21, 0, 17, 0, 14, 0, 26, 0, 3, 0, 120, 0, 27, 0, 30, 0, 25, 0, 27, 0, 32, 0, 31, 0, 17, 0, 14, 0, 120, 0, 27, 0, 30, 0, 21, 0, 3, 0, 66, 0, 30, 0, 120, 0, 14, 0, 17, 0, 33, 0, 31, 0, 38, 0, 18, 0, 3, 0, 120, 0, 33, 0, 28, 0, 145, 0, 30, 0, 27, 0, 3, 0, 25, 0, 120, 0, 14, 0, 68, 0, 24, 0, 14, 0, 8, 0, 3, 0, 32, 0, 31, 0, 145, 0, 120, 0, 21, 0, 31, 0, 14, 0, 30, 0, 32, 0, 29, 0, 121, 0, 18, 0, 24, 0, 14, 0, 3, 0, 17, 0, 120, 0, 18, 0, 17, 0, 14, 0, 25, 0, 121, 0, 21, 0, 32, 0, 31, 0, 21, 0, 31, 0, 3, 0, 38, 0, 120, 0, 18, 0, 17, 0, 14, 0, 28, 0, 121, 0, 21, 0, 30, 0, 21, 0, 17, 0, 14, 0, 26, 0, 3, 0, 120, 0, 33, 0, 36, 0, 21, 0, 24, 0, 121, 0, 14, 0, 34, 0, 21, 0, 14, 0, 10, 0, 2]} diff --git a/piper/piper/etc/test_sentences/test_lb.jsonl b/piper/piper/etc/test_sentences/test_lb.jsonl new file mode 100644 index 0000000..c306157 --- /dev/null +++ b/piper/piper/etc/test_sentences/test_lb.jsonl @@ -0,0 +1,6 @@ +{"phoneme_ids":[1,0,120,0,18,0,122,0,32,0,3,0,19,0,93,0,120,0,18,0,122,0,32,0,3,0,25,0,120,0,59,0,55,0,8,0,3,0,120,0,21,0,59,0,55,0,3,0,23,0,120,0,39,0,26,0,59,0,26,0,3,0,155,0,120,0,59,0,3,0,24,0,62,0,74,0,120,0,59,0,93,0,59,0,26,0,10,0,2],"phonemes":["ˈ","e","ː","t"," ","f","ʀ","ˈ","e","ː","t"," ","m","ˈ","ə","ɕ",","," ","ˈ","i","ə","ɕ"," ","k","ˈ","æ","n","ə","n"," ","ʦ","ˈ","ə"," ","l","ɜ","ɪ","ˈ","ə","ʀ","ə","n","."],"processed_text":"Et freet mech, Iech kennen ze léieren.","text":"Et freet mech, Iech kennen ze léieren."} +{"phoneme_ids":[1,0,96,0,34,0,120,0,18,0,32,0,155,0,32,0,3,0,34,0,121,0,51,0,26,0,39,0,55,0,154,0,120,0,59,0,24,0,21,0,19,0,32,0,3,0,25,0,120,0,62,0,74,0,3,0,24,0,120,0,33,0,59,0,31,0,10,0,2],"phonemes":["ʃ","v","ˈ","e","t","ʦ","t"," ","v","ˌ","ɑ","n","æ","ɕ","g","ˈ","ə","l","i","f","t"," ","m","ˈ","ɜ","ɪ"," ","l","ˈ","u","ə","s","."],"processed_text":"Schwätzt wannechgelift méi lues.","text":"Schwätzt wannechgelift méi lues."} +{"phoneme_ids":[1,0,19,0,120,0,21,0,24,0,3,0,154,0,24,0,120,0,18,0,23,0,3,0,19,0,120,0,21,0,122,0,94,0,3,0,17,0,120,0,39,0,122,0,74,0,3,0,154,0,59,0,15,0,120,0,33,0,122,0,94,0,32,0,31,0,17,0,14,0,122,0,156,0,10,0,2],"phonemes":["f","ˈ","i","l"," ","g","l","ˈ","e","k"," ","f","ˈ","i","ː","ʁ"," ","d","ˈ","æ","ː","ɪ"," ","g","ə","b","ˈ","u","ː","ʁ","t","s","d","a","ː","X","."],"processed_text":"Vill Gléck fir däi Gebuertsdag.","text":"Vill Gléck fir däi Gebuertsdag."} +{"phoneme_ids":[1,0,25,0,120,0,39,0,122,0,74,0,3,0,24,0,121,0,27,0,19,0,32,0,23,0,59,0,31,0,120,0,18,0,122,0,15,0,27,0,122,0,32,0,3,0,120,0,51,0,31,0,3,0,34,0,120,0,27,0,24,0,18,0,122,0,93,0,3,0,120,0,62,0,74,0,24,0,59,0,26,0,10,0,2],"phonemes":["m","ˈ","æ","ː","ɪ"," ","l","ˌ","o","f","t","k","ə","s","ˈ","e","ː","b","o","ː","t"," ","ˈ","ɑ","s"," ","v","ˈ","o","l","e","ː","ʀ"," ","ˈ","ɜ","ɪ","l","ə","n","."],"processed_text":"Mäi Loftkësseboot ass voller Éilen.","text":"Mäi Loftkësseboot ass voller Éilen."} +{"phoneme_ids":[1,0,96,0,34,0,120,0,18,0,32,0,155,0,3,0,17,0,120,0,33,0,122,0,3,0,24,0,121,0,59,0,155,0,59,0,15,0,120,0,33,0,122,0,94,0,22,0,59,0,96,0,13,0,2],"phonemes":["ʃ","v","ˈ","e","t","ʦ"," ","d","ˈ","u","ː"," ","l","ˌ","ə","ʦ","ə","b","ˈ","u","ː","ʁ","j","ə","ʃ","?"],"processed_text":"Schwätz du Lëtzebuergesch?","text":"Schwätz du Lëtzebuergesch?"} +{"phoneme_ids":[1,0,120,0,59,0,3,0,154,0,120,0,33,0,17,0,59,0,3,0,93,0,120,0,33,0,32,0,96,0,3,0,120,0,51,0,26,0,3,0,17,0,26,0,120,0,51,0,74,0,32,0,3,0,22,0,120,0,27,0,122,0,94,0,10,0,2],"phonemes":["ˈ","ə"," ","g","ˈ","u","d","ə"," ","ʀ","ˈ","u","t","ʃ"," ","ˈ","ɑ","n"," ","d","n","ˈ","ɑ","ɪ","t"," ","j","ˈ","o","ː","ʁ","."],"processed_text":"E gudde Rutsch an d'neit Joer.","text":"E gudde Rutsch an d'neit Joer."} diff --git a/piper/piper/etc/test_sentences/test_nb.jsonl b/piper/piper/etc/test_sentences/test_nb.jsonl new file mode 100644 index 0000000..280b271 --- /dev/null +++ b/piper/piper/etc/test_sentences/test_nb.jsonl @@ -0,0 +1,6 @@ +{"phoneme_ids":[1,0,30,0,120,0,61,0,44,0,26,0,15,0,99,0,122,0,59,0,26,0,3,0,121,0,61,0,24,0,24,0,59,0,30,0,3,0,30,0,120,0,61,0,44,0,26,0,15,0,33,0,122,0,66,0,59,0,26,0,3,0,121,0,61,0,122,0,30,0,3,0,61,0,32,0,3,0,120,0,54,0,28,0,32,0,74,0,31,0,23,0,3,0,19,0,120,0,18,0,122,0,26,0,33,0,122,0,25,0,59,0,26,0,3,0,31,0,33,0,122,0,25,0,3,0,120,0,54,0,28,0,122,0,31,0,32,0,27,0,122,0,30,0,3,0,26,0,120,0,27,0,122,0,30,0,3,0,31,0,120,0,33,0,122,0,24,0,59,0,26,0,3,0,96,0,120,0,74,0,26,0,26,0,59,0,30,0,3,0,22,0,120,0,61,0,26,0,26,0,33,0,122,0,25,0,3,0,30,0,120,0,61,0,44,0,26,0,26,0,30,0,27,0,122,0,28,0,59,0,30,0,3,0,21,0,122,0,3,0,120,0,51,0,32,0,25,0,54,0,31,0,19,0,121,0,14,0,122,0,30,0,59,0,26,0,3,0,33,0,122,0,66,0,3,0,15,0,59,0,32,0,30,0,120,0,51,0,23,0,32,0,18,0,122,0,30,0,59,0,26,0,3,0,31,0,32,0,120,0,27,0,122,0,30,0,3,0,25,0,18,0,122,0,17,0,3,0,31,0,120,0,33,0,122,0,24,0,59,0,26,0,3,0,21,0,122,0,3,0,30,0,120,0,37,0,66,0,122,0,59,0,26,0,10,0,2],"phonemes":["r","ˈ","ɛ","ŋ","n","b","ʉ","ː","ə","n"," ","ˌ","ɛ","l","l","ə","r"," ","r","ˈ","ɛ","ŋ","n","b","u","ː","ɡ","ə","n"," ","ˌ","ɛ","ː","r"," ","ɛ","t"," ","ˈ","ɔ","p","t","ɪ","s","k"," ","f","ˈ","e","ː","n","u","ː","m","ə","n"," ","s","u","ː","m"," ","ˈ","ɔ","p","ː","s","t","o","ː","r"," ","n","ˈ","o","ː","r"," ","s","ˈ","u","ː","l","ə","n"," ","ʃ","ˈ","ɪ","n","n","ə","r"," ","j","ˈ","ɛ","n","n","u","ː","m"," ","r","ˈ","ɛ","ŋ","n","n","r","o","ː","p","ə","r"," ","i","ː"," ","ˈ","ɑ","t","m","ɔ","s","f","ˌ","a","ː","r","ə","n"," ","u","ː","ɡ"," ","b","ə","t","r","ˈ","ɑ","k","t","e","ː","r","ə","n"," ","s","t","ˈ","o","ː","r"," ","m","e","ː","d"," ","s","ˈ","u","ː","l","ə","n"," ","i","ː"," ","r","ˈ","y","ɡ","ː","ə","n","."],"processed_text":"Regnbuen eller regnbogen er et optisk fenomen som oppstår når solen skinner gjennom regndråper i atmosfæren og betrakteren står med solen i ryggen.","text":"Regnbuen eller regnbogen er et optisk fenomen som oppstår når solen skinner gjennom regndråper i atmosfæren og betrakteren står med solen i ryggen."} +{"phoneme_ids":[1,0,66,0,120,0,99,0,24,0,34,0,74,0,32,0,122,0,3,0,31,0,120,0,54,0,24,0,24,0,37,0,122,0,31,0,3,0,15,0,59,0,31,0,32,0,120,0,27,0,122,0,30,0,3,0,14,0,34,0,3,0,120,0,51,0,24,0,24,0,14,0,3,0,31,0,120,0,37,0,26,0,24,0,21,0,122,0,66,0,14,0,3,0,15,0,120,0,45,0,24,0,66,0,18,0,122,0,24,0,121,0,61,0,44,0,17,0,59,0,30,0,3,0,14,0,34,0,3,0,24,0,120,0,37,0,122,0,31,0,10,0,2],"phonemes":["ɡ","ˈ","ʉ","l","v","ɪ","t","ː"," ","s","ˈ","ɔ","l","l","y","ː","s"," ","b","ə","s","t","ˈ","o","ː","r"," ","a","v"," ","ˈ","ɑ","l","l","a"," ","s","ˈ","y","n","l","i","ː","ɡ","a"," ","b","ˈ","œ","l","ɡ","e","ː","l","ˌ","ɛ","ŋ","d","ə","r"," ","a","v"," ","l","ˈ","y","ː","s","."],"processed_text":"Gulhvitt sollys består av alle synlige bølgelengder av lys.","text":"Gulhvitt sollys består av alle synlige bølgelengder av lys."} +{"phoneme_ids":[1,0,24,0,120,0,37,0,31,0,15,0,30,0,37,0,32,0,26,0,121,0,74,0,44,0,59,0,26,0,3,0,121,0,61,0,122,0,30,0,3,0,19,0,120,0,54,0,30,0,96,0,59,0,24,0,24,0,121,0,74,0,3,0,120,0,51,0,34,0,20,0,59,0,44,0,121,0,74,0,3,0,14,0,34,0,3,0,15,0,120,0,45,0,24,0,66,0,18,0,122,0,24,0,121,0,61,0,44,0,17,0,59,0,26,0,3,0,96,0,24,0,120,0,21,0,122,0,23,0,3,0,14,0,32,0,3,0,31,0,120,0,54,0,24,0,24,0,37,0,122,0,31,0,59,0,32,0,3,0,31,0,28,0,120,0,51,0,24,0,32,0,59,0,31,0,3,0,32,0,21,0,122,0,24,0,3,0,61,0,32,0,3,0,31,0,28,0,120,0,61,0,23,0,32,0,30,0,99,0,122,0,25,0,3,0,14,0,34,0,3,0,30,0,120,0,45,0,17,0,32,0,3,0,120,0,37,0,32,0,122,0,14,0,30,0,96,0,32,0,3,0,33,0,122,0,66,0,3,0,17,0,120,0,18,0,122,0,30,0,61,0,32,0,122,0,59,0,30,0,3,0,120,0,33,0,122,0,30,0,51,0,26,0,96,0,14,0,8,0,66,0,120,0,99,0,24,0,32,0,8,0,66,0,30,0,120,0,45,0,26,0,32,0,8,0,15,0,24,0,120,0,54,0,32,0,122,0,8,0,120,0,74,0,26,0,26,0,21,0,122,0,66,0,121,0,33,0,122,0,3,0,15,0,24,0,120,0,27,0,122,0,24,0,74,0,24,0,24,0,121,0,51,0,3,0,33,0,122,0,66,0,3,0,19,0,120,0,21,0,122,0,33,0,122,0,24,0,121,0,61,0,32,0,122,0,10,0,2],"phonemes":["l","ˈ","y","s","b","r","y","t","n","ˌ","ɪ","ŋ","ə","n"," ","ˌ","ɛ","ː","r"," ","f","ˈ","ɔ","r","ʃ","ə","l","l","ˌ","ɪ"," ","ˈ","ɑ","v","h","ə","ŋ","ˌ","ɪ"," ","a","v"," ","b","ˈ","œ","l","ɡ","e","ː","l","ˌ","ɛ","ŋ","d","ə","n"," ","ʃ","l","ˈ","i","ː","k"," ","a","t"," ","s","ˈ","ɔ","l","l","y","ː","s","ə","t"," ","s","p","ˈ","ɑ","l","t","ə","s"," ","t","i","ː","l"," ","ɛ","t"," ","s","p","ˈ","ɛ","k","t","r","ʉ","ː","m"," ","a","v"," ","r","ˈ","œ","d","t"," ","ˈ","y","t","ː","a","r","ʃ","t"," ","u","ː","ɡ"," ","d","ˈ","e","ː","r","ɛ","t","ː","ə","r"," ","ˈ","u","ː","r","ɑ","n","ʃ","a",",","ɡ","ˈ","ʉ","l","t",",","ɡ","r","ˈ","œ","n","t",",","b","l","ˈ","ɔ","t","ː",",","ˈ","ɪ","n","n","i","ː","ɡ","ˌ","u","ː"," ","b","l","ˈ","o","ː","l","ɪ","l","l","ˌ","ɑ"," ","u","ː","ɡ"," ","f","ˈ","i","ː","u","ː","l","ˌ","ɛ","t","ː","."],"processed_text":"Lysbrytningen er forskjellig avhengig av bølgelengden slik at sollyset spaltes til et spektrum av rødt ytterst og deretter oransje, gult, grønt, blått, indigo (blålilla) og fiolett.","text":"Lysbrytningen er forskjellig avhengig av bølgelengden slik at sollyset spaltes til et spektrum av rødt ytterst og deretter oransje, gult, grønt, blått, indigo (blålilla) og fiolett."} +{"phoneme_ids":[1,0,18,0,122,0,26,0,3,0,19,0,120,0,99,0,24,0,31,0,32,0,59,0,26,0,26,0,121,0,74,0,3,0,30,0,120,0,61,0,44,0,26,0,15,0,99,0,122,0,14,0,3,0,20,0,14,0,30,0,3,0,18,0,122,0,26,0,3,0,32,0,120,0,37,0,122,0,17,0,18,0,122,0,24,0,121,0,74,0,3,0,20,0,120,0,33,0,122,0,34,0,59,0,17,0,30,0,121,0,61,0,44,0,26,0,15,0,99,0,122,0,14,0,3,0,28,0,30,0,120,0,21,0,122,0,25,0,14,0,30,0,15,0,121,0,99,0,122,0,14,0,3,0,120,0,74,0,26,0,26,0,14,0,30,0,96,0,32,0,3,0,33,0,122,0,66,0,3,0,18,0,122,0,26,0,3,0,31,0,34,0,120,0,14,0,23,0,18,0,122,0,30,0,14,0,3,0,30,0,120,0,61,0,44,0,26,0,15,0,99,0,122,0,14,0,3,0,31,0,120,0,18,0,122,0,23,0,99,0,26,0,26,0,121,0,14,0,30,0,15,0,99,0,122,0,14,0,3,0,120,0,37,0,32,0,122,0,14,0,30,0,96,0,32,0,3,0,17,0,120,0,61,0,122,0,30,0,3,0,19,0,120,0,51,0,30,0,66,0,61,0,26,0,14,0,3,0,24,0,120,0,74,0,66,0,122,0,59,0,30,0,3,0,21,0,122,0,3,0,120,0,54,0,25,0,34,0,61,0,26,0,26,0,32,0,3,0,30,0,120,0,61,0,23,0,122,0,18,0,122,0,19,0,121,0,45,0,24,0,66,0,14,0,10,0,2],"phonemes":["e","ː","n"," ","f","ˈ","ʉ","l","s","t","ə","n","n","ˌ","ɪ"," ","r","ˈ","ɛ","ŋ","n","b","ʉ","ː","a"," ","h","a","r"," ","e","ː","n"," ","t","ˈ","y","ː","d","e","ː","l","ˌ","ɪ"," ","h","ˈ","u","ː","v","ə","d","r","ˌ","ɛ","ŋ","n","b","ʉ","ː","a"," ","p","r","ˈ","i","ː","m","a","r","b","ˌ","ʉ","ː","a"," ","ˈ","ɪ","n","n","a","r","ʃ","t"," ","u","ː","ɡ"," ","e","ː","n"," ","s","v","ˈ","a","k","e","ː","r","a"," ","r","ˈ","ɛ","ŋ","n","b","ʉ","ː","a"," ","s","ˈ","e","ː","k","ʉ","n","n","ˌ","a","r","b","ʉ","ː","a"," ","ˈ","y","t","ː","a","r","ʃ","t"," ","d","ˈ","ɛ","ː","r"," ","f","ˈ","ɑ","r","ɡ","ɛ","n","a"," ","l","ˈ","ɪ","ɡ","ː","ə","r"," ","i","ː"," ","ˈ","ɔ","m","v","ɛ","n","n","t"," ","r","ˈ","ɛ","k","ː","e","ː","f","ˌ","œ","l","ɡ","a","."],"processed_text":"En fullstendig regnbue har en tydelig hovedregnbue (primærbue) innerst og en svakere regnbue (sekundærbue) ytterst der fargene ligger i omvendt rekkefølge.","text":"En fullstendig regnbue har en tydelig hovedregnbue (primærbue) innerst og en svakere regnbue (sekundærbue) ytterst der fargene ligger i omvendt rekkefølge."} +{"phoneme_ids":[1,0,34,0,27,0,122,0,30,0,3,0,31,0,120,0,14,0,122,0,30,0,14,0,3,0,31,0,120,0,99,0,122,0,24,0,99,0,122,0,3,0,19,0,30,0,51,0,3,0,15,0,120,0,14,0,17,0,18,0,122,0,121,0,42,0,37,0,51,0,3,0,31,0,28,0,120,0,74,0,24,0,32,0,14,0,3,0,22,0,120,0,33,0,122,0,3,0,34,0,20,0,120,0,74,0,31,0,32,0,3,0,33,0,122,0,66,0,3,0,23,0,35,0,120,0,74,0,23,0,23,0,31,0,32,0,59,0,28,0,3,0,21,0,122,0,3,0,25,0,21,0,122,0,26,0,3,0,32,0,120,0,14,0,23,0,31,0,21,0,122,0,10,0,2],"phonemes":["v","o","ː","r"," ","s","ˈ","a","ː","r","a"," ","s","ˈ","ʉ","ː","l","ʉ","ː"," ","f","r","ɑ"," ","b","ˈ","a","d","e","ː","ˌ","ø","y","ɑ"," ","s","p","ˈ","ɪ","l","t","a"," ","j","ˈ","u","ː"," ","v","h","ˈ","ɪ","s","t"," ","u","ː","ɡ"," ","k","w","ˈ","ɪ","k","k","s","t","ə","p"," ","i","ː"," ","m","i","ː","n"," ","t","ˈ","a","k","s","i","ː","."],"processed_text":"Vår sære Zulu fra badeøya spilte jo whist og quickstep i min taxi.","text":"Vår sære Zulu fra badeøya spilte jo whist og quickstep i min taxi."} +{"phoneme_ids":[1,0,20,0,120,0,45,0,34,0,17,0,74,0,44,0,59,0,26,0,31,0,3,0,36,0,120,0,14,0,122,0,30,0,14,0,3,0,31,0,23,0,35,0,120,0,14,0,34,0,3,0,19,0,120,0,27,0,122,0,30,0,3,0,24,0,120,0,74,0,32,0,122,0,3,0,28,0,120,0,74,0,38,0,51,0,3,0,21,0,122,0,3,0,25,0,120,0,18,0,122,0,23,0,31,0,21,0,122,0,23,0,121,0,33,0,122,0,3,0,15,0,120,0,37,0,122,0,10,0,2],"phonemes":["h","ˈ","œ","v","d","ɪ","ŋ","ə","n","s"," ","x","ˈ","a","ː","r","a"," ","s","k","w","ˈ","a","v"," ","f","ˈ","o","ː","r"," ","l","ˈ","ɪ","t","ː"," ","p","ˈ","ɪ","z","ɑ"," ","i","ː"," ","m","ˈ","e","ː","k","s","i","ː","k","ˌ","u","ː"," ","b","ˈ","y","ː","."],"processed_text":"Høvdingens kjære squaw får litt pizza i Mexico by.","text":"Høvdingens kjære squaw får litt pizza i Mexico by."} diff --git a/piper/piper/etc/test_sentences/test_ne.jsonl b/piper/piper/etc/test_sentences/test_ne.jsonl new file mode 100644 index 0000000..9e8d625 --- /dev/null +++ b/piper/piper/etc/test_sentences/test_ne.jsonl @@ -0,0 +1,4 @@ +{"phoneme_ids":[1,0,74,0,26,0,17,0,92,0,120,0,18,0,122,0,83,0,21,0,3,0,35,0,120,0,14,0,122,0,3,0,120,0,74,0,26,0,17,0,92,0,59,0,17,0,145,0,121,0,59,0,26,0,33,0,95,0,3,0,28,0,92,0,59,0,23,0,120,0,14,0,122,0,96,0,3,0,92,0,59,0,3,0,92,0,121,0,59,0,44,0,66,0,59,0,15,0,120,0,14,0,122,0,98,0,3,0,100,0,32,0,28,0,120,0,102,0,26,0,26,0,121,0,59,0,3,0,15,0,145,0,59,0,120,0,18,0,122,0,23,0,27,0,122,0,3,0,22,0,120,0,102,0,31,0,32,0,27,0,122,0,3,0,66,0,145,0,120,0,102,0,98,0,59,0,26,0,121,0,14,0,122,0,3,0,20,0,27,0,122,0,3,0,64,0,120,0,102,0,31,0,59,0,25,0,121,0,14,0,122,0,3,0,92,0,59,0,44,0,66,0,120,0,74,0,122,0,26,0,3,0,28,0,92,0,59,0,23,0,120,0,14,0,122,0,96,0,59,0,23,0,121,0,27,0,122,0,3,0,120,0,18,0,122,0,100,0,98,0,121,0,14,0,122,0,3,0,121,0,59,0,30,0,30,0,17,0,145,0,59,0,35,0,92,0,120,0,74,0,32,0,3,0,14,0,122,0,23,0,120,0,14,0,122,0,96,0,59,0,25,0,121,0,14,0,122,0,3,0,17,0,18,0,122,0,23,0,145,0,120,0,74,0,26,0,16,0,145,0,59,0,2,1,0,64,0,120,0,102,0,15,0,3,0,31,0,120,0,33,0,122,0,30,0,30,0,22,0,59,0,23,0,121,0,27,0,122,0,3,0,28,0,92,0,59,0,23,0,120,0,14,0,122,0,96,0,3,0,28,0,92,0,120,0,74,0,32,0,145,0,35,0,120,0,74,0,122,0,23,0,27,0,122,0,3,0,35,0,121,0,14,0,122,0,22,0,33,0,25,0,120,0,102,0,83,0,56,0,59,0,24,0,121,0,59,0,25,0,14,0,122,0,3,0,15,0,145,0,59,0,120,0,18,0,122,0,23,0,27,0,122,0,3,0,28,0,14,0,122,0,26,0,120,0,74,0,122,0,23,0,27,0,122,0,3,0,32,0,145,0,120,0,27,0,122,0,28,0,14,0,122,0,3,0,25,0,120,0,14,0,122,0,32,0,145,0,74,0,3,0,28,0,120,0,102,0,30,0,30,0,16,0,145,0,59,0,8,0,28,0,14,0,122,0,26,0,120,0,74,0,122,0,23,0,27,0,122,0,3,0,32,0,145,0,27,0,122,0,28,0,120,0,14,0,122,0,24,0,18,0,122,0,3,0,28,0,92,0,121,0,59,0,23,0,14,0,122,0,96,0,59,0,24,0,120,0,14,0,122,0,21,0,3,0,28,0,121,0,59,0,92,0,14,0,122,0,35,0,120,0,102,0,30,0,30,0,32,0,59,0,26,0,8,0,14,0,122,0,35,0,120,0,102,0,30,0,30,0,32,0,59,0,26,0,3,0,92,0,59,0,3,0,56,0,74,0,31,0,28,0,120,0,102,0,30,0,30,0,31,0,59,0,26,0,3,0,66,0,120,0,102,0,30,0,30,0,17,0,59,0,16,0,145,0,121,0,59,0,2,1,0,28,0,145,0,121,0,59,0,24,0,59,0,31,0,35,0,92,0,120,0,33,0,28,0,3,0,14,0,122,0,23,0,120,0,14,0,122,0,96,0,59,0,25,0,121,0,14,0,122,0,3,0,120,0,18,0,122,0,100,0,98,0,121,0,14,0,122,0,3,0,31,0,121,0,59,0,28,0,32,0,59,0,92,0,120,0,102,0,44,0,66,0,21,0,3,0,121,0,59,0,30,0,30,0,17,0,145,0,59,0,35,0,92,0,120,0,74,0,32,0,14,0,122,0,23,0,121,0,14,0,122,0,92,0,59,0,3,0,28,0,92,0,121,0,59,0,23,0,14,0,122,0,96,0,120,0,74,0,122,0,22,0,59,0,3,0,14,0,122,0,23,0,92,0,120,0,74,0,32,0,74,0,3,0,100,0,32,0,28,0,120,0,102,0,26,0,26,0,121,0,59,0,3,0,20,0,120,0,33,0,26,0,16,0,145,0,59,0,2,1,0,22,0,120,0,27,0,122,0,3,0,14,0,122,0,23,0,92,0,120,0,74,0,32,0,74,0,24,0,121,0,14,0,122,0,21,0,3,0,26,0,120,0,61,0,122,0,3,0,74,0,26,0,17,0,92,0,120,0,18,0,122,0,83,0,21,0,3,0,15,0,145,0,59,0,26,0,120,0,74,0,26,0,16,0,145,0,59,0,2,1,0,74,0,26,0,17,0,92,0,120,0,18,0,122,0,83,0,21,0,3,0,17,0,120,0,18,0,122,0,23,0,145,0,74,0,26,0,121,0,33,0,23,0,27,0,122,0,3,0,23,0,120,0,14,0,122,0,92,0,59,0,83,0,3,0,35,0,121,0,14,0,122,0,22,0,33,0,25,0,120,0,102,0,83,0,56,0,59,0,24,0,121,0,59,0,25,0,14,0,122,0,3,0,28,0,14,0,122,0,26,0,120,0,74,0,122,0,23,0,14,0,122,0,3,0,23,0,120,0,102,0,83,0,59,0,20,0,121,0,59,0,92,0,33,0,3,0,20,0,120,0,33,0,26,0,33,0,119,0,121,0,33,0,3,0,26,0,120,0,61,0,122,0,3,0,20,0,27,0,122,0,2,1,0,35,0,120,0,102,0,30,0,30,0,95,0,14,0,122,0,8,0,64,0,145,0,121,0,59,0,92,0,59,0,26,0,14,0,122,0,15,0,120,0,14,0,122,0,98,0,3,0,121,0,100,0,16,0,145,0,74,0,98,0,98,0,121,0,74,0,120,0,18,0,122,0,23,0,27,0,122,0,3,0,28,0,120,0,14,0,122,0,26,0,21,0,8,0,96,0,120,0,74,0,122,0,32,0,8,0,23,0,120,0,33,0,20,0,74,0,92,0,121,0,27,0,122,0,3,0,120,0,14,0,122,0,17,0,74,0,23,0,121,0,27,0,122,0,3,0,74,0,26,0,17,0,92,0,120,0,18,0,122,0,83,0,21,0,3,0,17,0,120,0,18,0,122,0,23,0,145,0,74,0,26,0,121,0,18,0,122,0,3,0,28,0,92,0,121,0,59,0,23,0,92,0,74,0,22,0,120,0,14,0,122,0,25,0,14,0,122,0,3,0,25,0,121,0,59,0,20,0,59,0,32,0,32,0,35,0,28,0,120,0,33,0,122,0,30,0,30,0,83,0,59,0,3,0,15,0,145,0,120,0,33,0,122,0,25,0,74,0,23,0,121,0,14,0,122,0,3,0,20,0,120,0,33,0,26,0,16,0,145,0,59,0,2,1,0,121,0,74,0,26,0,17,0,92,0,18,0,122,0,83,0,120,0,74,0,122,0,25,0,14,0,122,0,3,0,31,0,120,0,14,0,122,0,32,0,3,0,92,0,120,0,102,0,44,0,66,0,59,0,20,0,121,0,59,0,92,0,33,0,3,0,92,0,120,0,14,0,122,0,32,0,27,0,122,0,8,0,31,0,120,0,33,0,26,0,32,0,59,0,24,0,121,0,14,0,122,0,8,0,28,0,59,0,20,0,120,0,18,0,122,0,26,0,24,0,27,0,122,0,8,0,20,0,120,0,102,0,92,0,74,0,22,0,121,0,27,0,122,0,8,0,14,0,122,0,23,0,120,0,14,0,122,0,96,0,18,0,122,0,3,0,26,0,120,0,74,0,24,0,27,0,122,0,8,0,66,0,120,0,14,0,122,0,56,0,145,0,14,0,122,0,3,0,26,0,120,0,74,0,24,0,27,0,122,0,3,0,92,0,59,0,3,0,15,0,120,0,61,0,122,0,64,0,59,0,26,0,121,0,21,0,122,0,3,0,92,0,120,0,102,0,44,0,66,0,3,0,23,0,92,0,121,0,59,0,25,0,61,0,122,0,96,0,120,0,102,0,141,0,66,0,3,0,17,0,18,0,122,0,23,0,145,0,120,0,74,0,26,0,16,0,145,0,59,0,2,1,0,22,0,120,0,102,0,31,0,59,0,25,0,121,0,14,0,122,0,3,0,31,0,121,0,59,0,15,0,61,0,122,0,15,0,145,0,120,0,102,0,26,0,17,0,14,0,122,0,3,0,25,0,14,0,122,0,32,0,145,0,120,0,74,0,24,0,24,0,24,0,27,0,122,0,3,0,16,0,145,0,120,0,18,0,122,0,100,0,25,0,121,0,14,0,122,0,3,0,92,0,120,0,14,0,122,0,32,0,27,0,122,0,3,0,92,0,120,0,102,0,44,0,66,0,3,0,92,0,59,0,3,0,120,0,102,0,30,0,30,0,23,0,27,0,122,0,3,0,16,0,145,0,120,0,18,0,122,0,100,0,25,0,121,0,14,0,122,0,3,0,15,0,120,0,61,0,122,0,64,0,59,0,26,0,121,0,21,0,122,0,3,0,92,0,120,0,102,0,44,0,66,0,3,0,17,0,18,0,122,0,23,0,145,0,120,0,74,0,26,0,16,0,145,0,59,0,2,1,0,74,0,26,0,17,0,92,0,120,0,18,0,122,0,83,0,21,0,3,0,28,0,120,0,33,0,122,0,30,0,30,0,83,0,59,0,3,0,35,0,92,0,120,0,74,0,32,0,32,0,121,0,14,0,122,0,23,0,14,0,122,0,92,0,121,0,59,0,3,0,31,0,59,0,25,0,120,0,18,0,122,0,32,0,3,0,20,0,120,0,33,0,26,0,120,0,59,0,3,0,31,0,120,0,102,0,23,0,26,0,18,0,122,0,3,0,15,0,145,0,120,0,102,0,18,0,122,0,3,0,28,0,120,0,102,0,26,0,74,0,3,0,31,0,120,0,14,0,122,0,17,0,145,0,59,0,92,0,121,0,59,0,83,0,3,0,121,0,59,0,35,0,59,0,24,0,121,0,27,0,122,0,23,0,59,0,26,0,121,0,59,0,23,0,59,0,30,0,30,0,32,0,120,0,14,0,122,0,24,0,18,0,122,0,3,0,64,0,120,0,102,0,25,0,74,0,26,0,3,0,25,0,120,0,14,0,122,0,32,0,145,0,74,0,3,0,15,0,59,0,26,0,120,0,18,0,122,0,23,0,27,0,122,0,3,0,120,0,14,0,122,0,17,0,145,0,14,0,122,0,3,0,15,0,145,0,120,0,14,0,122,0,66,0,3,0,25,0,120,0,14,0,122,0,32,0,92,0,59,0,3,0,17,0,120,0,18,0,122,0,23,0,145,0,26,0,59,0,3,0,31,0,59,0,23,0,120,0,74,0,26,0,16,0,145,0,59,0,2],"phonemes":["ɪ","n","d","ɾ","ˈ","e","ː","ɳ","i"," ","w","ˈ","a","ː"," ","ˈ","ɪ","n","d","ɾ","ə","d","ʰ","ˌ","ə","n","u","ʂ"," ","p","ɾ","ə","k","ˈ","a","ː","ʃ"," ","ɾ","ə"," ","ɾ","ˌ","ə","ŋ","ɡ","ə","b","ˈ","a","ː","ʈ"," ","ʊ","t","p","ˈ","ʌ","n","n","ˌ","ə"," ","b","ʰ","ə","ˈ","e","ː","k","o","ː"," ","j","ˈ","ʌ","s","t","o","ː"," ","ɡ","ʰ","ˈ","ʌ","ʈ","ə","n","ˌ","a","ː"," ","h","o","ː"," ","ɟ","ˈ","ʌ","s","ə","m","ˌ","a","ː"," ","ɾ","ə","ŋ","ɡ","ˈ","ɪ","ː","n"," ","p","ɾ","ə","k","ˈ","a","ː","ʃ","ə","k","ˌ","o","ː"," ","ˈ","e","ː","ʊ","ʈ","ˌ","a","ː"," ","ˌ","ə","r","r","d","ʰ","ə","w","ɾ","ˈ","ɪ","t"," ","a","ː","k","ˈ","a","ː","ʃ","ə","m","ˌ","a","ː"," ","d","e","ː","k","ʰ","ˈ","ɪ","n","c","ʰ","ə","ɟ","ˈ","ʌ","b"," ","s","ˈ","u","ː","r","r","j","ə","k","ˌ","o","ː"," ","p","ɾ","ə","k","ˈ","a","ː","ʃ"," ","p","ɾ","ˈ","ɪ","t","ʰ","w","ˈ","ɪ","ː","k","o","ː"," ","w","ˌ","a","ː","j","u","m","ˈ","ʌ","ɳ","ɖ","ə","l","ˌ","ə","m","a","ː"," ","b","ʰ","ə","ˈ","e","ː","k","o","ː"," ","p","a","ː","n","ˈ","ɪ","ː","k","o","ː"," ","t","ʰ","ˈ","o","ː","p","a","ː"," ","m","ˈ","a","ː","t","ʰ","ɪ"," ","p","ˈ","ʌ","r","r","c","ʰ","ə",",","p","a","ː","n","ˈ","ɪ","ː","k","o","ː"," ","t","ʰ","o","ː","p","ˈ","a","ː","l","e","ː"," ","p","ɾ","ˌ","ə","k","a","ː","ʃ","ə","l","ˈ","a","ː","i"," ","p","ˌ","ə","ɾ","a","ː","w","ˈ","ʌ","r","r","t","ə","n",",","a","ː","w","ˈ","ʌ","r","r","t","ə","n"," ","ɾ","ə"," ","ɖ","ɪ","s","p","ˈ","ʌ","r","r","s","ə","n"," ","ɡ","ˈ","ʌ","r","r","d","ə","c","ʰ","ˌ","ə","p","ʰ","ˌ","ə","l","ə","s","w","ɾ","ˈ","u","p"," ","a","ː","k","ˈ","a","ː","ʃ","ə","m","ˌ","a","ː"," ","ˈ","e","ː","ʊ","ʈ","ˌ","a","ː"," ","s","ˌ","ə","p","t","ə","ɾ","ˈ","ʌ","ŋ","ɡ","i"," ","ˌ","ə","r","r","d","ʰ","ə","w","ɾ","ˈ","ɪ","t","a","ː","k","ˌ","a","ː","ɾ","ə"," ","p","ɾ","ˌ","ə","k","a","ː","ʃ","ˈ","ɪ","ː","j","ə"," ","a","ː","k","ɾ","ˈ","ɪ","t","ɪ"," ","ʊ","t","p","ˈ","ʌ","n","n","ˌ","ə"," ","h","ˈ","u","n","c","ʰ","ə","j","ˈ","o","ː"," ","a","ː","k","ɾ","ˈ","ɪ","t","ɪ","l","ˌ","a","ː","i"," ","n","ˈ","ɛ","ː"," ","ɪ","n","d","ɾ","ˈ","e","ː","ɳ","i"," ","b","ʰ","ə","n","ˈ","ɪ","n","c","ʰ","ə","ɪ","n","d","ɾ","ˈ","e","ː","ɳ","i"," ","d","ˈ","e","ː","k","ʰ","ɪ","n","ˌ","u","k","o","ː"," ","k","ˈ","a","ː","ɾ","ə","ɳ"," ","w","ˌ","a","ː","j","u","m","ˈ","ʌ","ɳ","ɖ","ə","l","ˌ","ə","m","a","ː"," ","p","a","ː","n","ˈ","ɪ","ː","k","a","ː"," ","k","ˈ","ʌ","ɳ","ə","h","ˌ","ə","ɾ","u"," ","h","ˈ","u","n","u","ʲ","ˌ","u"," ","n","ˈ","ɛ","ː"," ","h","o","ː","w","ˈ","ʌ","r","r","ʂ","a","ː",",","ɟ","ʰ","ˌ","ə","ɾ","ə","n","a","ː","b","ˈ","a","ː","ʈ"," ","ˌ","ʊ","c","ʰ","ɪ","ʈ","ʈ","ˌ","ɪ","ˈ","e","ː","k","o","ː"," ","p","ˈ","a","ː","n","i",",","ʃ","ˈ","ɪ","ː","t",",","k","ˈ","u","h","ɪ","ɾ","ˌ","o","ː"," ","ˈ","a","ː","d","ɪ","k","ˌ","o","ː"," ","ɪ","n","d","ɾ","ˈ","e","ː","ɳ","i"," ","d","ˈ","e","ː","k","ʰ","ɪ","n","ˌ","e","ː"," ","p","ɾ","ˌ","ə","k","ɾ","ɪ","j","ˈ","a","ː","m","a","ː"," ","m","ˌ","ə","h","ə","t","t","w","p","ˈ","u","ː","r","r","ɳ","ə"," ","b","ʰ","ˈ","u","ː","m","ɪ","k","ˌ","a","ː"," ","h","ˈ","u","n","c","ʰ","ə","ˌ","ɪ","n","d","ɾ","e","ː","ɳ","ˈ","ɪ","ː","m","a","ː"," ","s","ˈ","a","ː","t"," ","ɾ","ˈ","ʌ","ŋ","ɡ","ə","h","ˌ","ə","ɾ","u"," ","ɾ","ˈ","a","ː","t","o","ː",",","s","ˈ","u","n","t","ə","l","ˌ","a","ː",",","p","ə","h","ˈ","e","ː","n","l","o","ː",",","h","ˈ","ʌ","ɾ","ɪ","j","ˌ","o","ː",",","a","ː","k","ˈ","a","ː","ʃ","e","ː"," ","n","ˈ","ɪ","l","o","ː",",","ɡ","ˈ","a","ː","ɖ","ʰ","a","ː"," ","n","ˈ","ɪ","l","o","ː"," ","ɾ","ə"," ","b","ˈ","ɛ","ː","ɟ","ə","n","ˌ","i","ː"," ","ɾ","ˈ","ʌ","ŋ","ɡ"," ","k","ɾ","ˌ","ə","m","ɛ","ː","ʃ","ˈ","ʌ","̃","ɡ"," ","d","e","ː","k","ʰ","ˈ","ɪ","n","c","ʰ","ə","j","ˈ","ʌ","s","ə","m","ˌ","a","ː"," ","s","ˌ","ə","b","ɛ","ː","b","ʰ","ˈ","ʌ","n","d","a","ː"," ","m","a","ː","t","ʰ","ˈ","ɪ","l","l","l","o","ː"," ","c","ʰ","ˈ","e","ː","ʊ","m","ˌ","a","ː"," ","ɾ","ˈ","a","ː","t","o","ː"," ","ɾ","ˈ","ʌ","ŋ","ɡ"," ","ɾ","ə"," ","ˈ","ʌ","r","r","k","o","ː"," ","c","ʰ","ˈ","e","ː","ʊ","m","ˌ","a","ː"," ","b","ˈ","ɛ","ː","ɟ","ə","n","ˌ","i","ː"," ","ɾ","ˈ","ʌ","ŋ","ɡ"," ","d","e","ː","k","ʰ","ˈ","ɪ","n","c","ʰ","ə","ɪ","n","d","ɾ","ˈ","e","ː","ɳ","i"," ","p","ˈ","u","ː","r","r","ɳ","ə"," ","w","ɾ","ˈ","ɪ","t","t","ˌ","a","ː","k","a","ː","ɾ","ˌ","ə"," ","s","ə","m","ˈ","e","ː","t"," ","h","ˈ","u","n","ˈ","ə"," ","s","ˈ","ʌ","k","n","e","ː"," ","b","ʰ","ˈ","ʌ","e","ː"," ","p","ˈ","ʌ","n","ɪ"," ","s","ˈ","a","ː","d","ʰ","ə","ɾ","ˌ","ə","ɳ"," ","ˌ","ə","w","ə","l","ˌ","o","ː","k","ə","n","ˌ","ə","k","ə","r","r","t","ˈ","a","ː","l","e","ː"," ","ɟ","ˈ","ʌ","m","ɪ","n"," ","m","ˈ","a","ː","t","ʰ","ɪ"," ","b","ə","n","ˈ","e","ː","k","o","ː"," ","ˈ","a","ː","d","ʰ","a","ː"," ","b","ʰ","ˈ","a","ː","ɡ"," ","m","ˈ","a","ː","t","ɾ","ə"," ","d","ˈ","e","ː","k","ʰ","n","ə"," ","s","ə","k","ˈ","ɪ","n","c","ʰ","ə"],"processed_text":"इन्द्रेणी वा इन्द्रधनुष प्रकाश र रंगबाट उत्पन्न भएको यस्तो घटना हो जसमा रंगीन प्रकाशको एउटा अर्धवृत आकाशमा देखिन्छ। जब सूर्यको प्रकाश पृथ्वीको वायुमण्डलमा भएको पानीको थोपा माथि पर्छ, पानीको थोपाले प्रकाशलाई परावर्तन, आवर्तन र डिस्पर्सन गर्दछ। फलस्वरुप आकाशमा एउटा सप्तरङ्गी अर्धवृताकार प्रकाशीय आकृति उत्पन्न हुन्छ। यो आकृतिलाई नै इन्द्रेणी भनिन्छ। इन्द्रेणी देखिनुको कारण वायुमण्डलमा पानीका कणहरु हुनु नै हो। वर्षा, झरनाबाट उछिट्टिएको पानी, शीत, कुहिरो आदिको इन्द्रेणी देखिने प्रक्रियामा महत्त्वपूर्ण भूमिका हुन्छ। इन्द्रेणीमा सात रंगहरु रातो, सुन्तला, पहेंलो, हरियो, आकाशे निलो, गाढा निलो र बैजनी रंग क्रमैसँग देखिन्छ। यसमा सबैभन्दा माथिल्लो छेउमा रातो रंग र अर्को छेउमा बैजनी रंग देखिन्छ। इन्द्रेणी पूर्ण वृत्ताकार समेत हुन सक्ने भए पनि साधरण अवलोकनकर्ताले जमिन माथि बनेको आधा भाग मात्र देख्न सकिन्छ ।","text":"इन्द्रेणी वा इन्द्रधनुष प्रकाश र रंगबाट उत्पन्न भएको यस्तो घटना हो जसमा रंगीन प्रकाशको एउटा अर्धवृत आकाशमा देखिन्छ। जब सूर्यको प्रकाश पृथ्वीको वायुमण्डलमा भएको पानीको थोपा माथि पर्छ, पानीको थोपाले प्रकाशलाई परावर्तन, आवर्तन र डिस्पर्सन गर्दछ। फलस्वरुप आकाशमा एउटा सप्तरङ्गी अर्धवृताकार प्रकाशीय आकृति उत्पन्न हुन्छ। यो आकृतिलाई नै इन्द्रेणी भनिन्छ। इन्द्रेणी देखिनुको कारण वायुमण्डलमा पानीका कणहरु हुनु नै हो। वर्षा, झरनाबाट उछिट्टिएको पानी, शीत, कुहिरो आदिको इन्द्रेणी देखिने प्रक्रियामा महत्त्वपूर्ण भूमिका हुन्छ। इन्द्रेणीमा सात रंगहरु रातो, सुन्तला, पहेंलो, हरियो, आकाशे निलो, गाढा निलो र बैजनी रंग क्रमैसँग देखिन्छ। यसमा सबैभन्दा माथिल्लो छेउमा रातो रंग र अर्को छेउमा बैजनी रंग देखिन्छ। इन्द्रेणी पूर्ण वृत्ताकार समेत हुन सक्ने भए पनि साधरण अवलोकनकर्ताले जमिन माथि बनेको आधा भाग मात्र देख्न सकिन्छ ।"} +{"phoneme_ids":[1,0,74,0,26,0,17,0,92,0,120,0,18,0,122,0,83,0,21,0,3,0,17,0,120,0,18,0,122,0,23,0,145,0,74,0,26,0,121,0,33,0,23,0,27,0,122,0,3,0,23,0,120,0,14,0,122,0,92,0,59,0,83,0,3,0,35,0,121,0,14,0,122,0,22,0,33,0,25,0,120,0,102,0,83,0,56,0,59,0,24,0,121,0,59,0,25,0,14,0,122,0,3,0,28,0,14,0,122,0,26,0,120,0,74,0,122,0,23,0,14,0,122,0,3,0,23,0,120,0,102,0,83,0,59,0,20,0,121,0,59,0,92,0,33,0,3,0,20,0,120,0,33,0,26,0,33,0,119,0,121,0,33,0,3,0,26,0,120,0,61,0,122,0,3,0,20,0,27,0,122,0,2,1,0,35,0,120,0,102,0,30,0,30,0,95,0,14,0,122,0,8,0,64,0,145,0,121,0,59,0,92,0,59,0,26,0,14,0,122,0,15,0,120,0,14,0,122,0,98,0,3,0,121,0,100,0,16,0,145,0,74,0,98,0,98,0,121,0,74,0,120,0,18,0,122,0,23,0,27,0,122,0,3,0,28,0,120,0,14,0,122,0,26,0,21,0,8,0,96,0,120,0,74,0,122,0,32,0,8,0,23,0,120,0,33,0,20,0,74,0,92,0,121,0,27,0,122,0,3,0,120,0,14,0,122,0,17,0,74,0,23,0,121,0,27,0,122,0,3,0,74,0,26,0,17,0,92,0,120,0,18,0,122,0,83,0,21,0,3,0,17,0,120,0,18,0,122,0,23,0,145,0,74,0,26,0,121,0,18,0,122,0,3,0,28,0,92,0,121,0,59,0,23,0,92,0,74,0,22,0,120,0,14,0,122,0,25,0,14,0,122,0,3,0,25,0,121,0,59,0,20,0,59,0,32,0,32,0,35,0,28,0,120,0,33,0,122,0,30,0,30,0,83,0,59,0,3,0,15,0,145,0,120,0,33,0,122,0,25,0,74,0,23,0,121,0,14,0,122,0,3,0,20,0,120,0,33,0,26,0,16,0,145,0,59,0,2],"phonemes":["ɪ","n","d","ɾ","ˈ","e","ː","ɳ","i"," ","d","ˈ","e","ː","k","ʰ","ɪ","n","ˌ","u","k","o","ː"," ","k","ˈ","a","ː","ɾ","ə","ɳ"," ","w","ˌ","a","ː","j","u","m","ˈ","ʌ","ɳ","ɖ","ə","l","ˌ","ə","m","a","ː"," ","p","a","ː","n","ˈ","ɪ","ː","k","a","ː"," ","k","ˈ","ʌ","ɳ","ə","h","ˌ","ə","ɾ","u"," ","h","ˈ","u","n","u","ʲ","ˌ","u"," ","n","ˈ","ɛ","ː"," ","h","o","ː","w","ˈ","ʌ","r","r","ʂ","a","ː",",","ɟ","ʰ","ˌ","ə","ɾ","ə","n","a","ː","b","ˈ","a","ː","ʈ"," ","ˌ","ʊ","c","ʰ","ɪ","ʈ","ʈ","ˌ","ɪ","ˈ","e","ː","k","o","ː"," ","p","ˈ","a","ː","n","i",",","ʃ","ˈ","ɪ","ː","t",",","k","ˈ","u","h","ɪ","ɾ","ˌ","o","ː"," ","ˈ","a","ː","d","ɪ","k","ˌ","o","ː"," ","ɪ","n","d","ɾ","ˈ","e","ː","ɳ","i"," ","d","ˈ","e","ː","k","ʰ","ɪ","n","ˌ","e","ː"," ","p","ɾ","ˌ","ə","k","ɾ","ɪ","j","ˈ","a","ː","m","a","ː"," ","m","ˌ","ə","h","ə","t","t","w","p","ˈ","u","ː","r","r","ɳ","ə"," ","b","ʰ","ˈ","u","ː","m","ɪ","k","ˌ","a","ː"," ","h","ˈ","u","n","c","ʰ","ə"],"processed_text":"इन्द्रेणी देखिनुको कारण वायुमण्डलमा पानीका कणहरु हुनु नै हो। वर्षा, झरनाबाट उछिट्टिएको पानी, शीत, कुहिरो आदिको इन्द्रेणी देखिने प्रक्रियामा महत्त्वपूर्ण भूमिका हुन्छ।","text":"इन्द्रेणी देखिनुको कारण वायुमण्डलमा पानीका कणहरु हुनु नै हो। वर्षा, झरनाबाट उछिट्टिएको पानी, शीत, कुहिरो आदिको इन्द्रेणी देखिने प्रक्रियामा महत्त्वपूर्ण भूमिका हुन्छ।"} +{"phoneme_ids":[1,0,121,0,74,0,26,0,17,0,92,0,18,0,122,0,83,0,120,0,74,0,122,0,25,0,14,0,122,0,3,0,31,0,120,0,14,0,122,0,32,0,3,0,92,0,120,0,102,0,44,0,66,0,59,0,20,0,121,0,59,0,92,0,33,0,3,0,92,0,120,0,14,0,122,0,32,0,27,0,122,0,8,0,31,0,120,0,33,0,26,0,32,0,59,0,24,0,121,0,14,0,122,0,8,0,28,0,59,0,20,0,120,0,18,0,122,0,26,0,24,0,27,0,122,0,8,0,20,0,120,0,102,0,92,0,74,0,22,0,121,0,27,0,122,0,8,0,14,0,122,0,23,0,120,0,14,0,122,0,96,0,18,0,122,0,3,0,26,0,120,0,74,0,24,0,27,0,122,0,8,0,66,0,120,0,14,0,122,0,56,0,145,0,14,0,122,0,3,0,26,0,120,0,74,0,24,0,27,0,122,0,3,0,92,0,59,0,3,0,15,0,120,0,61,0,122,0,64,0,59,0,26,0,121,0,21,0,122,0,3,0,92,0,120,0,102,0,44,0,66,0,3,0,23,0,92,0,121,0,59,0,25,0,61,0,122,0,96,0,120,0,102,0,141,0,66,0,3,0,17,0,18,0,122,0,23,0,145,0,120,0,74,0,26,0,16,0,145,0,59,0,2,1,0,22,0,120,0,102,0,31,0,59,0,25,0,121,0,14,0,122,0,3,0,31,0,121,0,59,0,15,0,61,0,122,0,15,0,145,0,120,0,102,0,26,0,17,0,14,0,122,0,3,0,25,0,14,0,122,0,32,0,145,0,120,0,74,0,24,0,24,0,24,0,27,0,122,0,3,0,16,0,145,0,120,0,18,0,122,0,100,0,25,0,121,0,14,0,122,0,3,0,92,0,120,0,14,0,122,0,32,0,27,0,122,0,3,0,92,0,120,0,102,0,44,0,66,0,3,0,92,0,59,0,3,0,120,0,102,0,30,0,30,0,23,0,27,0,122,0,3,0,16,0,145,0,120,0,18,0,122,0,100,0,25,0,121,0,14,0,122,0,3,0,15,0,120,0,61,0,122,0,64,0,59,0,26,0,121,0,21,0,122,0,3,0,92,0,120,0,102,0,44,0,66,0,3,0,17,0,18,0,122,0,23,0,145,0,120,0,74,0,26,0,16,0,145,0,59,0,2],"phonemes":["ˌ","ɪ","n","d","ɾ","e","ː","ɳ","ˈ","ɪ","ː","m","a","ː"," ","s","ˈ","a","ː","t"," ","ɾ","ˈ","ʌ","ŋ","ɡ","ə","h","ˌ","ə","ɾ","u"," ","ɾ","ˈ","a","ː","t","o","ː",",","s","ˈ","u","n","t","ə","l","ˌ","a","ː",",","p","ə","h","ˈ","e","ː","n","l","o","ː",",","h","ˈ","ʌ","ɾ","ɪ","j","ˌ","o","ː",",","a","ː","k","ˈ","a","ː","ʃ","e","ː"," ","n","ˈ","ɪ","l","o","ː",",","ɡ","ˈ","a","ː","ɖ","ʰ","a","ː"," ","n","ˈ","ɪ","l","o","ː"," ","ɾ","ə"," ","b","ˈ","ɛ","ː","ɟ","ə","n","ˌ","i","ː"," ","ɾ","ˈ","ʌ","ŋ","ɡ"," ","k","ɾ","ˌ","ə","m","ɛ","ː","ʃ","ˈ","ʌ","̃","ɡ"," ","d","e","ː","k","ʰ","ˈ","ɪ","n","c","ʰ","ə","j","ˈ","ʌ","s","ə","m","ˌ","a","ː"," ","s","ˌ","ə","b","ɛ","ː","b","ʰ","ˈ","ʌ","n","d","a","ː"," ","m","a","ː","t","ʰ","ˈ","ɪ","l","l","l","o","ː"," ","c","ʰ","ˈ","e","ː","ʊ","m","ˌ","a","ː"," ","ɾ","ˈ","a","ː","t","o","ː"," ","ɾ","ˈ","ʌ","ŋ","ɡ"," ","ɾ","ə"," ","ˈ","ʌ","r","r","k","o","ː"," ","c","ʰ","ˈ","e","ː","ʊ","m","ˌ","a","ː"," ","b","ˈ","ɛ","ː","ɟ","ə","n","ˌ","i","ː"," ","ɾ","ˈ","ʌ","ŋ","ɡ"," ","d","e","ː","k","ʰ","ˈ","ɪ","n","c","ʰ","ə"],"processed_text":"इन्द्रेणीमा सात रंगहरु रातो, सुन्तला, पहेंलो, हरियो, आकाशे निलो, गाढा निलो र बैजनी रंग क्रमैसँग देखिन्छ। यसमा सबैभन्दा माथिल्लो छेउमा रातो रंग र अर्को छेउमा बैजनी रंग देखिन्छ।","text":"इन्द्रेणीमा सात रंगहरु रातो, सुन्तला, पहेंलो, हरियो, आकाशे निलो, गाढा निलो र बैजनी रंग क्रमैसँग देखिन्छ। यसमा सबैभन्दा माथिल्लो छेउमा रातो रंग र अर्को छेउमा बैजनी रंग देखिन्छ।"} +{"phoneme_ids":[1,0,74,0,26,0,17,0,92,0,120,0,18,0,122,0,83,0,21,0,3,0,28,0,120,0,33,0,122,0,30,0,30,0,83,0,59,0,3,0,35,0,92,0,120,0,74,0,32,0,32,0,121,0,14,0,122,0,23,0,14,0,122,0,92,0,121,0,59,0,3,0,31,0,59,0,25,0,120,0,18,0,122,0,32,0,3,0,20,0,120,0,33,0,26,0,120,0,59,0,3,0,31,0,120,0,102,0,23,0,26,0,18,0,122,0,3,0,15,0,145,0,120,0,102,0,18,0,122,0,3,0,28,0,120,0,102,0,26,0,74,0,3,0,31,0,120,0,14,0,122,0,17,0,145,0,59,0,92,0,121,0,59,0,83,0,3,0,121,0,59,0,35,0,59,0,24,0,121,0,27,0,122,0,23,0,59,0,26,0,121,0,59,0,23,0,59,0,30,0,30,0,32,0,120,0,14,0,122,0,24,0,18,0,122,0,3,0,64,0,120,0,102,0,25,0,74,0,26,0,3,0,25,0,120,0,14,0,122,0,32,0,145,0,74,0,3,0,15,0,59,0,26,0,120,0,18,0,122,0,23,0,27,0,122,0,3,0,120,0,14,0,122,0,17,0,145,0,14,0,122,0,3,0,15,0,145,0,120,0,14,0,122,0,66,0,3,0,25,0,120,0,14,0,122,0,32,0,92,0,59,0,3,0,17,0,120,0,18,0,122,0,23,0,145,0,26,0,59,0,3,0,31,0,59,0,23,0,120,0,74,0,26,0,16,0,145,0,59,0,2],"phonemes":["ɪ","n","d","ɾ","ˈ","e","ː","ɳ","i"," ","p","ˈ","u","ː","r","r","ɳ","ə"," ","w","ɾ","ˈ","ɪ","t","t","ˌ","a","ː","k","a","ː","ɾ","ˌ","ə"," ","s","ə","m","ˈ","e","ː","t"," ","h","ˈ","u","n","ˈ","ə"," ","s","ˈ","ʌ","k","n","e","ː"," ","b","ʰ","ˈ","ʌ","e","ː"," ","p","ˈ","ʌ","n","ɪ"," ","s","ˈ","a","ː","d","ʰ","ə","ɾ","ˌ","ə","ɳ"," ","ˌ","ə","w","ə","l","ˌ","o","ː","k","ə","n","ˌ","ə","k","ə","r","r","t","ˈ","a","ː","l","e","ː"," ","ɟ","ˈ","ʌ","m","ɪ","n"," ","m","ˈ","a","ː","t","ʰ","ɪ"," ","b","ə","n","ˈ","e","ː","k","o","ː"," ","ˈ","a","ː","d","ʰ","a","ː"," ","b","ʰ","ˈ","a","ː","ɡ"," ","m","ˈ","a","ː","t","ɾ","ə"," ","d","ˈ","e","ː","k","ʰ","n","ə"," ","s","ə","k","ˈ","ɪ","n","c","ʰ","ə"],"processed_text":"इन्द्रेणी पूर्ण वृत्ताकार समेत हुन सक्ने भए पनि साधरण अवलोकनकर्ताले जमिन माथि बनेको आधा भाग मात्र देख्न सकिन्छ ।","text":"इन्द्रेणी पूर्ण वृत्ताकार समेत हुन सक्ने भए पनि साधरण अवलोकनकर्ताले जमिन माथि बनेको आधा भाग मात्र देख्न सकिन्छ ।"} diff --git a/piper/piper/etc/test_sentences/test_nl.jsonl b/piper/piper/etc/test_sentences/test_nl.jsonl new file mode 100644 index 0000000..91a6f42 --- /dev/null +++ b/piper/piper/etc/test_sentences/test_nl.jsonl @@ -0,0 +1,6 @@ +{"phoneme_ids":[1,0,59,0,26,0,3,0,30,0,121,0,18,0,122,0,68,0,59,0,26,0,15,0,120,0,27,0,122,0,36,0,3,0,74,0,31,0,3,0,59,0,26,0,3,0,68,0,120,0,61,0,23,0,24,0,42,0,122,0,30,0,17,0,59,0,3,0,31,0,121,0,74,0,30,0,23,0,61,0,24,0,15,0,120,0,27,0,122,0,36,0,3,0,17,0,21,0,3,0,14,0,122,0,26,0,3,0,17,0,59,0,3,0,20,0,120,0,18,0,122,0,25,0,59,0,24,0,3,0,101,0,121,0,14,0,122,0,30,0,68,0,59,0,26,0,120,0,27,0,122,0,25,0,59,0,26,0,3,0,23,0,51,0,26,0,3,0,101,0,121,0,54,0,30,0,17,0,59,0,26,0,3,0,51,0,24,0,31,0,3,0,17,0,59,0,8,0,24,0,120,0,14,0,122,0,36,0,31,0,32,0,14,0,122,0,26,0,17,0,59,0,8,0,38,0,120,0,54,0,26,0,3,0,32,0,120,0,18,0,122,0,68,0,59,0,26,0,3,0,59,0,26,0,3,0,26,0,120,0,18,0,122,0,34,0,59,0,24,0,3,0,34,0,51,0,26,0,3,0,101,0,120,0,14,0,122,0,32,0,59,0,30,0,17,0,30,0,121,0,85,0,28,0,61,0,24,0,32,0,119,0,59,0,31,0,3,0,14,0,122,0,26,0,3,0,31,0,36,0,120,0,61,0,74,0,26,0,32,0,3,0,61,0,26,0,3,0,17,0,59,0,3,0,38,0,120,0,54,0,26,0,3,0,38,0,74,0,36,0,3,0,120,0,51,0,36,0,32,0,59,0,30,0,3,0,17,0,59,0,3,0,101,0,120,0,14,0,122,0,30,0,26,0,18,0,122,0,25,0,59,0,30,0,3,0,15,0,59,0,34,0,120,0,74,0,26,0,32,0,10,0,2],"phonemes":["ə","n"," ","r","ˌ","e","ː","ɣ","ə","n","b","ˈ","o","ː","x"," ","ɪ","s"," ","ə","n"," ","ɣ","ˈ","ɛ","k","l","ø","ː","r","d","ə"," ","s","ˌ","ɪ","r","k","ɛ","l","b","ˈ","o","ː","x"," ","d","i"," ","a","ː","n"," ","d","ə"," ","h","ˈ","e","ː","m","ə","l"," ","ʋ","ˌ","a","ː","r","ɣ","ə","n","ˈ","o","ː","m","ə","n"," ","k","ɑ","n"," ","ʋ","ˌ","ɔ","r","d","ə","n"," ","ɑ","l","s"," ","d","ə",",","l","ˈ","a","ː","x","s","t","a","ː","n","d","ə",",","z","ˈ","ɔ","n"," ","t","ˈ","e","ː","ɣ","ə","n"," ","ə","n"," ","n","ˈ","e","ː","v","ə","l"," ","v","ɑ","n"," ","ʋ","ˈ","a","ː","t","ə","r","d","r","ˌ","ɵ","p","ɛ","l","t","ʲ","ə","s"," ","a","ː","n"," ","s","x","ˈ","ɛ","ɪ","n","t"," ","ɛ","n"," ","d","ə"," ","z","ˈ","ɔ","n"," ","z","ɪ","x"," ","ˈ","ɑ","x","t","ə","r"," ","d","ə"," ","ʋ","ˈ","a","ː","r","n","e","ː","m","ə","r"," ","b","ə","v","ˈ","ɪ","n","t","."],"processed_text":"Een regenboog is een gekleurde cirkelboog die aan de hemel waargenomen kan worden als de, laagstaande, zon tegen een nevel van waterdruppeltjes aan schijnt en de zon zich achter de waarnemer bevindt.","text":"Een regenboog is een gekleurde cirkelboog die aan de hemel waargenomen kan worden als de, laagstaande, zon tegen een nevel van waterdruppeltjes aan schijnt en de zon zich achter de waarnemer bevindt."} +{"phoneme_ids":[1,0,20,0,59,0,32,0,3,0,74,0,31,0,3,0,59,0,26,0,3,0,120,0,54,0,28,0,32,0,21,0,31,0,3,0,120,0,61,0,19,0,61,0,23,0,32,0,3,0,17,0,51,0,32,0,3,0,101,0,54,0,30,0,32,0,3,0,34,0,59,0,30,0,120,0,54,0,122,0,30,0,38,0,14,0,122,0,23,0,32,0,3,0,17,0,27,0,122,0,30,0,3,0,17,0,59,0,3,0,15,0,30,0,120,0,18,0,122,0,23,0,74,0,44,0,3,0,61,0,26,0,3,0,101,0,120,0,74,0,122,0,30,0,31,0,28,0,121,0,21,0,68,0,59,0,24,0,121,0,74,0,44,0,3,0,34,0,51,0,26,0,3,0,24,0,120,0,74,0,36,0,32,0,3,0,74,0,26,0,3,0,17,0,59,0,3,0,101,0,120,0,14,0,122,0,32,0,59,0,30,0,17,0,30,0,121,0,85,0,28,0,59,0,24,0,31,0,10,0,2],"phonemes":["h","ə","t"," ","ɪ","s"," ","ə","n"," ","ˈ","ɔ","p","t","i","s"," ","ˈ","ɛ","f","ɛ","k","t"," ","d","ɑ","t"," ","ʋ","ɔ","r","t"," ","v","ə","r","ˈ","ɔ","ː","r","z","a","ː","k","t"," ","d","o","ː","r"," ","d","ə"," ","b","r","ˈ","e","ː","k","ɪ","ŋ"," ","ɛ","n"," ","ʋ","ˈ","ɪ","ː","r","s","p","ˌ","i","ɣ","ə","l","ˌ","ɪ","ŋ"," ","v","ɑ","n"," ","l","ˈ","ɪ","x","t"," ","ɪ","n"," ","d","ə"," ","ʋ","ˈ","a","ː","t","ə","r","d","r","ˌ","ɵ","p","ə","l","s","."],"processed_text":"Het is een optisch effect dat wordt veroorzaakt door de breking en weerspiegeling van licht in de waterdruppels.","text":"Het is een optisch effect dat wordt veroorzaakt door de breking en weerspiegeling van licht in de waterdruppels."} +{"phoneme_ids":[1,0,20,0,59,0,32,0,3,0,25,0,120,0,74,0,17,0,61,0,24,0,28,0,121,0,85,0,26,0,32,0,3,0,34,0,51,0,26,0,3,0,17,0,59,0,3,0,15,0,120,0,27,0,122,0,36,0,3,0,31,0,32,0,120,0,14,0,122,0,32,0,3,0,68,0,59,0,38,0,120,0,21,0,26,0,3,0,34,0,51,0,26,0,120,0,45,0,37,0,3,0,32,0,59,0,3,0,101,0,120,0,14,0,122,0,30,0,26,0,18,0,122,0,25,0,59,0,30,0,3,0,24,0,120,0,61,0,74,0,26,0,30,0,61,0,36,0,3,0,32,0,120,0,18,0,122,0,68,0,59,0,26,0,121,0,27,0,122,0,34,0,59,0,30,0,3,0,17,0,59,0,3,0,38,0,120,0,54,0,26,0,8,0,61,0,26,0,3,0,15,0,59,0,34,0,120,0,74,0,26,0,32,0,3,0,38,0,74,0,36,0,3,0,17,0,85,0,31,0,3,0,120,0,51,0,24,0,32,0,61,0,74,0,32,0,3,0,120,0,54,0,26,0,17,0,59,0,30,0,3,0,17,0,59,0,3,0,20,0,121,0,27,0,122,0,30,0,21,0,38,0,120,0,54,0,26,0,10,0,2],"phonemes":["h","ə","t"," ","m","ˈ","ɪ","d","ɛ","l","p","ˌ","ɵ","n","t"," ","v","ɑ","n"," ","d","ə"," ","b","ˈ","o","ː","x"," ","s","t","ˈ","a","ː","t"," ","ɣ","ə","z","ˈ","i","n"," ","v","ɑ","n","ˈ","œ","y"," ","t","ə"," ","ʋ","ˈ","a","ː","r","n","e","ː","m","ə","r"," ","l","ˈ","ɛ","ɪ","n","r","ɛ","x"," ","t","ˈ","e","ː","ɣ","ə","n","ˌ","o","ː","v","ə","r"," ","d","ə"," ","z","ˈ","ɔ","n",",","ɛ","n"," ","b","ə","v","ˈ","ɪ","n","t"," ","z","ɪ","x"," ","d","ɵ","s"," ","ˈ","ɑ","l","t","ɛ","ɪ","t"," ","ˈ","ɔ","n","d","ə","r"," ","d","ə"," ","h","ˌ","o","ː","r","i","z","ˈ","ɔ","n","."],"processed_text":"Het middelpunt van de boog staat gezien vanuit de waarnemer lijnrecht tegenover de zon, en bevindt zich dus altijd onder de horizon.","text":"Het middelpunt van de boog staat gezien vanuit de waarnemer lijnrecht tegenover de zon, en bevindt zich dus altijd onder de horizon."} +{"phoneme_ids":[1,0,101,0,120,0,14,0,122,0,30,0,26,0,18,0,122,0,25,0,59,0,30,0,3,0,61,0,26,0,3,0,15,0,120,0,27,0,122,0,36,0,3,0,34,0,120,0,54,0,30,0,25,0,59,0,26,0,3,0,31,0,120,0,14,0,122,0,25,0,59,0,26,0,3,0,59,0,26,0,3,0,17,0,61,0,44,0,23,0,15,0,120,0,18,0,122,0,24,0,17,0,59,0,68,0,59,0,3,0,23,0,120,0,18,0,122,0,68,0,59,0,24,0,3,0,25,0,61,0,3,0,32,0,59,0,3,0,101,0,120,0,14,0,122,0,30,0,26,0,18,0,122,0,25,0,59,0,30,0,3,0,54,0,28,0,3,0,17,0,59,0,3,0,28,0,120,0,85,0,26,0,32,0,3,0,34,0,51,0,26,0,3,0,17,0,59,0,3,0,23,0,120,0,18,0,122,0,68,0,59,0,24,0,3,0,61,0,26,0,3,0,17,0,59,0,3,0,30,0,121,0,18,0,122,0,68,0,59,0,26,0,15,0,120,0,27,0,122,0,36,0,3,0,24,0,120,0,51,0,44,0,31,0,3,0,17,0,59,0,3,0,15,0,120,0,27,0,122,0,68,0,30,0,51,0,26,0,32,0,3,0,34,0,51,0,26,0,3,0,20,0,59,0,32,0,3,0,68,0,30,0,120,0,54,0,26,0,17,0,34,0,24,0,51,0,23,0,3,0,34,0,51,0,26,0,3,0,17,0,59,0,3,0,23,0,120,0,18,0,122,0,68,0,59,0,24,0,10,0,2],"phonemes":["ʋ","ˈ","a","ː","r","n","e","ː","m","ə","r"," ","ɛ","n"," ","b","ˈ","o","ː","x"," ","v","ˈ","ɔ","r","m","ə","n"," ","s","ˈ","a","ː","m","ə","n"," ","ə","n"," ","d","ɛ","ŋ","k","b","ˈ","e","ː","l","d","ə","ɣ","ə"," ","k","ˈ","e","ː","ɣ","ə","l"," ","m","ɛ"," ","t","ə"," ","ʋ","ˈ","a","ː","r","n","e","ː","m","ə","r"," ","ɔ","p"," ","d","ə"," ","p","ˈ","ɵ","n","t"," ","v","ɑ","n"," ","d","ə"," ","k","ˈ","e","ː","ɣ","ə","l"," ","ɛ","n"," ","d","ə"," ","r","ˌ","e","ː","ɣ","ə","n","b","ˈ","o","ː","x"," ","l","ˈ","ɑ","ŋ","s"," ","d","ə"," ","b","ˈ","o","ː","ɣ","r","ɑ","n","t"," ","v","ɑ","n"," ","h","ə","t"," ","ɣ","r","ˈ","ɔ","n","d","v","l","ɑ","k"," ","v","ɑ","n"," ","d","ə"," ","k","ˈ","e","ː","ɣ","ə","l","."],"processed_text":"Waarnemer en boog vormen samen een denkbeeldige kegel met de waarnemer op de punt van de kegel en de regenboog langs de boogrand van het grondvlak van de kegel.","text":"Waarnemer en boog vormen samen een denkbeeldige kegel met de waarnemer op de punt van de kegel en de regenboog langs de boogrand van het grondvlak van de kegel."} +{"phoneme_ids":[1,0,17,0,59,0,3,0,15,0,120,0,27,0,122,0,36,0,3,0,20,0,18,0,122,0,19,0,32,0,3,0,15,0,120,0,74,0,26,0,59,0,26,0,3,0,17,0,59,0,3,0,23,0,120,0,18,0,122,0,68,0,59,0,24,0,3,0,59,0,26,0,3,0,20,0,120,0,51,0,24,0,34,0,59,0,3,0,32,0,54,0,28,0,20,0,120,0,33,0,23,0,3,0,34,0,51,0,26,0,3,0,121,0,54,0,26,0,68,0,59,0,34,0,120,0,74,0,122,0,30,0,3,0,32,0,101,0,120,0,18,0,122,0,61,0,26,0,19,0,121,0,74,0,122,0,30,0,32,0,59,0,36,0,3,0,68,0,30,0,120,0,14,0,122,0,17,0,59,0,26,0,12,0,17,0,59,0,3,0,15,0,30,0,120,0,18,0,122,0,32,0,59,0,3,0,34,0,51,0,26,0,3,0,17,0,59,0,3,0,23,0,24,0,120,0,42,0,122,0,30,0,59,0,26,0,15,0,121,0,51,0,26,0,32,0,3,0,34,0,51,0,26,0,3,0,30,0,120,0,27,0,122,0,17,0,3,0,32,0,54,0,32,0,3,0,34,0,121,0,21,0,27,0,122,0,24,0,120,0,61,0,32,0,3,0,74,0,3,0,31,0,120,0,74,0,30,0,23,0,14,0,122,0,3,0,32,0,101,0,120,0,18,0,122,0,3,0,68,0,30,0,120,0,14,0,122,0,17,0,59,0,26,0,10,0,2],"phonemes":["d","ə"," ","b","ˈ","o","ː","x"," ","h","e","ː","f","t"," ","b","ˈ","ɪ","n","ə","n"," ","d","ə"," ","k","ˈ","e","ː","ɣ","ə","l"," ","ə","n"," ","h","ˈ","ɑ","l","v","ə"," ","t","ɔ","p","h","ˈ","u","k"," ","v","ɑ","n"," ","ˌ","ɔ","n","ɣ","ə","v","ˈ","ɪ","ː","r"," ","t","ʋ","ˈ","e","ː","ɛ","n","f","ˌ","ɪ","ː","r","t","ə","x"," ","ɣ","r","ˈ","a","ː","d","ə","n",";","d","ə"," ","b","r","ˈ","e","ː","t","ə"," ","v","ɑ","n"," ","d","ə"," ","k","l","ˈ","ø","ː","r","ə","n","b","ˌ","ɑ","n","t"," ","v","ɑ","n"," ","r","ˈ","o","ː","d"," ","t","ɔ","t"," ","v","ˌ","i","o","ː","l","ˈ","ɛ","t"," ","ɪ"," ","s","ˈ","ɪ","r","k","a","ː"," ","t","ʋ","ˈ","e","ː"," ","ɣ","r","ˈ","a","ː","d","ə","n","."],"processed_text":"De boog heeft binnen de kegel een halve tophoek van ongeveer 42 graden; de breedte van de kleurenband van rood tot violet is circa 2 graden.","text":"De boog heeft binnen de kegel een halve tophoek van ongeveer 42 graden; de breedte van de kleurenband van rood tot violet is circa 2 graden."} +{"phoneme_ids":[1,0,28,0,120,0,14,0,122,0,31,0,3,0,101,0,120,0,61,0,74,0,38,0,59,0,3,0,24,0,120,0,74,0,26,0,23,0,31,0,3,0,15,0,59,0,38,0,120,0,51,0,36,0,3,0,34,0,30,0,120,0,27,0,122,0,25,0,3,0,20,0,59,0,32,0,3,0,19,0,120,0,74,0,23,0,31,0,59,0,3,0,120,0,14,0,122,0,23,0,34,0,14,0,122,0,17,0,121,0,85,0,23,0,32,0,10,0,2],"phonemes":["p","ˈ","a","ː","s"," ","ʋ","ˈ","ɛ","ɪ","z","ə"," ","l","ˈ","ɪ","n","k","s"," ","b","ə","z","ˈ","ɑ","x"," ","v","r","ˈ","o","ː","m"," ","h","ə","t"," ","f","ˈ","ɪ","k","s","ə"," ","ˈ","a","ː","k","v","a","ː","d","ˌ","ɵ","k","t","."],"processed_text":"Pa’s wijze lynx bezag vroom het fikse aquaduct.","text":"Pa’s wijze lynx bezag vroom het fikse aquaduct."} diff --git a/piper/piper/etc/test_sentences/test_pl.jsonl b/piper/piper/etc/test_sentences/test_pl.jsonl new file mode 100644 index 0000000..49a0aa6 --- /dev/null +++ b/piper/piper/etc/test_sentences/test_pl.jsonl @@ -0,0 +1,6 @@ +{"text": "Tęcza, zjawisko optyczne i meteorologiczne, występujące w postaci charakterystycznego wielobarwnego łuku powstającego w wyniku rozszczepienia światła widzialnego, zwykle promieniowania słonecznego, załamującego się i odbijającego wewnątrz licznych kropli wody mających kształt zbliżony do kulistego.", "phonemes": ["t", "ˈ", "ɛ", "n", "t", "ʃ", "a", ",", " ", "z", "j", "a", "v", "ˈ", "i", "s", "k", "ɔ", "ː", " ", "ɔ", "p", "t", "ˈ", "ɨ", "t", "ʃ", "n", "ɛ", " ", "i", " ", "m", "ˌ", "ɛ", "t", "ɛ", "ˌ", "ɔ", "r", "ɔ", "l", "ɔ", "ɡ", "ʲ", "ˈ", "i", "t", "ʃ", "n", "ɛ", ",", " ", "v", "ˌ", "ɨ", "s", "t", "ɛ", "m", "p", "u", "j", "ˈ", "ɔ", "n", "t", "s", "ɛ", " ", "f", " ", "p", "ɔ", "s", "t", "ˈ", "a", "t", "ɕ", "i", " ", "x", "ˌ", "a", "r", "a", "k", "t", "ˌ", "ɛ", "r", "ɨ", "s", "t", "ɨ", "t", "ʃ", "n", "ˈ", "ɛ", "ɡ", "ɔ", " ", "v", "ʲ", "ˌ", "ɛ", "l", "ɔ", "b", "a", "r", "v", "n", "ˈ", "ɛ", "ɡ", "ɔ", " ", "w", "ˈ", "u", "k", "u", " ", "p", "ˌ", "ɔ", "f", "s", "t", "a", "j", "ɔ", "n", "t", "s", "ˈ", "ɛ", "ɡ", "ɔ", " ", "w", " ", "v", "ɨ", "ɲ", "ˈ", "i", "k", "u", " ", "r", "ˌ", "ɔ", "s", "ʃ", "t", "ʃ", "ɛ", "p", "ʲ", "ˈ", "ɛ", "ɲ", "ʲ", "a", " ", "ɕ", "f", "ʲ", "ˈ", "a", "t", "w", "a", " ", "v", "ˌ", "i", "d", "ʑ", "a", "l", "n", "ˈ", "ɛ", "ɡ", "ɔ", ",", " ", "z", "v", "ˈ", "ɨ", "k", "l", "ɛ", " ", "p", "r", "ˌ", "ɔ", "m", "j", "ɛ", "ɲ", "ʲ", "ɔ", "v", "ˈ", "a", "ɲ", "ʲ", "a", " ", "s", "w", "ˌ", "ɔ", "n", "ɛ", "t", "ʃ", "n", "ˈ", "ɛ", "ɡ", "ɔ", ",", " ", "z", "ˌ", "a", "w", "a", "m", "ˌ", "u", "j", "ɔ", "n", "t", "s", "ˈ", "ɛ", "ɡ", "ɔ", " ", "ɕ", "ɛ", " ", "i", " ", "ˌ", "ɔ", "d", "b", "ʲ", "i", "j", "ˌ", "a", "j", "ɔ", "n", "t", "s", "ˈ", "ɛ", "ɡ", "ɔ", " ", "v", "ˈ", "ɛ", "v", "n", "ɔ", "n", "t", "ʃ", " ", "l", "ˈ", "i", "t", "ʃ", "n", "ɨ", "x", " ", "k", "r", "ˈ", "ɔ", "p", "l", "i", " ", "v", "ˈ", "ɔ", "d", "ɨ", " ", "m", "a", "j", "ˈ", "ɔ", "n", "t", "s", "ɨ", "x", " ", "k", "ʃ", "t", "ˈ", "a", "w", "d", " ", "z", "b", "l", "i", "ʒ", "ˈ", "ɔ", "n", "ɨ", " ", "d", "ɔ", " ", "k", "ˌ", "u", "l", "i", "s", "t", "ˈ", "ɛ", "ɡ", "ɔ", "."], "phoneme_ids": [1, 0, 32, 0, 120, 0, 61, 0, 26, 0, 32, 0, 96, 0, 14, 0, 8, 0, 3, 0, 38, 0, 22, 0, 14, 0, 34, 0, 120, 0, 21, 0, 31, 0, 23, 0, 54, 0, 122, 0, 3, 0, 54, 0, 28, 0, 32, 0, 120, 0, 73, 0, 32, 0, 96, 0, 26, 0, 61, 0, 3, 0, 21, 0, 3, 0, 25, 0, 121, 0, 61, 0, 32, 0, 61, 0, 121, 0, 54, 0, 30, 0, 54, 0, 24, 0, 54, 0, 66, 0, 119, 0, 120, 0, 21, 0, 32, 0, 96, 0, 26, 0, 61, 0, 8, 0, 3, 0, 34, 0, 121, 0, 73, 0, 31, 0, 32, 0, 61, 0, 25, 0, 28, 0, 33, 0, 22, 0, 120, 0, 54, 0, 26, 0, 32, 0, 31, 0, 61, 0, 3, 0, 19, 0, 3, 0, 28, 0, 54, 0, 31, 0, 32, 0, 120, 0, 14, 0, 32, 0, 55, 0, 21, 0, 3, 0, 36, 0, 121, 0, 14, 0, 30, 0, 14, 0, 23, 0, 32, 0, 121, 0, 61, 0, 30, 0, 73, 0, 31, 0, 32, 0, 73, 0, 32, 0, 96, 0, 26, 0, 120, 0, 61, 0, 66, 0, 54, 0, 3, 0, 34, 0, 119, 0, 121, 0, 61, 0, 24, 0, 54, 0, 15, 0, 14, 0, 30, 0, 34, 0, 26, 0, 120, 0, 61, 0, 66, 0, 54, 0, 3, 0, 35, 0, 120, 0, 33, 0, 23, 0, 33, 0, 3, 0, 28, 0, 121, 0, 54, 0, 19, 0, 31, 0, 32, 0, 14, 0, 22, 0, 54, 0, 26, 0, 32, 0, 31, 0, 120, 0, 61, 0, 66, 0, 54, 0, 3, 0, 35, 0, 3, 0, 34, 0, 73, 0, 82, 0, 120, 0, 21, 0, 23, 0, 33, 0, 3, 0, 30, 0, 121, 0, 54, 0, 31, 0, 96, 0, 32, 0, 96, 0, 61, 0, 28, 0, 119, 0, 120, 0, 61, 0, 82, 0, 119, 0, 14, 0, 3, 0, 55, 0, 19, 0, 119, 0, 120, 0, 14, 0, 32, 0, 35, 0, 14, 0, 3, 0, 34, 0, 121, 0, 21, 0, 17, 0, 107, 0, 14, 0, 24, 0, 26, 0, 120, 0, 61, 0, 66, 0, 54, 0, 8, 0, 3, 0, 38, 0, 34, 0, 120, 0, 73, 0, 23, 0, 24, 0, 61, 0, 3, 0, 28, 0, 30, 0, 121, 0, 54, 0, 25, 0, 22, 0, 61, 0, 82, 0, 119, 0, 54, 0, 34, 0, 120, 0, 14, 0, 82, 0, 119, 0, 14, 0, 3, 0, 31, 0, 35, 0, 121, 0, 54, 0, 26, 0, 61, 0, 32, 0, 96, 0, 26, 0, 120, 0, 61, 0, 66, 0, 54, 0, 8, 0, 3, 0, 38, 0, 121, 0, 14, 0, 35, 0, 14, 0, 25, 0, 121, 0, 33, 0, 22, 0, 54, 0, 26, 0, 32, 0, 31, 0, 120, 0, 61, 0, 66, 0, 54, 0, 3, 0, 55, 0, 61, 0, 3, 0, 21, 0, 3, 0, 121, 0, 54, 0, 17, 0, 15, 0, 119, 0, 21, 0, 22, 0, 121, 0, 14, 0, 22, 0, 54, 0, 26, 0, 32, 0, 31, 0, 120, 0, 61, 0, 66, 0, 54, 0, 3, 0, 34, 0, 120, 0, 61, 0, 34, 0, 26, 0, 54, 0, 26, 0, 32, 0, 96, 0, 3, 0, 24, 0, 120, 0, 21, 0, 32, 0, 96, 0, 26, 0, 73, 0, 36, 0, 3, 0, 23, 0, 30, 0, 120, 0, 54, 0, 28, 0, 24, 0, 21, 0, 3, 0, 34, 0, 120, 0, 54, 0, 17, 0, 73, 0, 3, 0, 25, 0, 14, 0, 22, 0, 120, 0, 54, 0, 26, 0, 32, 0, 31, 0, 73, 0, 36, 0, 3, 0, 23, 0, 96, 0, 32, 0, 120, 0, 14, 0, 35, 0, 17, 0, 3, 0, 38, 0, 15, 0, 24, 0, 21, 0, 108, 0, 120, 0, 54, 0, 26, 0, 73, 0, 3, 0, 17, 0, 54, 0, 3, 0, 23, 0, 121, 0, 33, 0, 24, 0, 21, 0, 31, 0, 32, 0, 120, 0, 61, 0, 66, 0, 54, 0, 10, 0, 2]} +{"text": "Rozszczepienie światła jest wynikiem zjawiska dyspersji, powodującego różnice w kącie załamania światła o różnej długości fali przy przejściu z powietrza do wody i z wody do powietrza.", "phonemes": ["r", "ˌ", "ɔ", "s", "ʃ", "t", "ʃ", "ɛ", "p", "ʲ", "ˈ", "ɛ", "ɲ", "ʲ", "ɛ", " ", "ɕ", "f", "ʲ", "ˈ", "a", "t", "w", "a", " ", "j", "ɛ", "z", "d", " ", "v", "ɨ", "ɲ", "ˈ", "i", "k", "ʲ", "ɛ", "m", " ", "z", "j", "a", "v", "ˈ", "i", "s", "k", "a", " ", "d", "ɨ", "s", "p", "ˈ", "ɛ", "r", "s", "j", "i", ",", " ", "p", "ˌ", "ɔ", "v", "ɔ", "d", "ˌ", "u", "j", "ɔ", "n", "t", "s", "ˈ", "ɛ", "ɡ", "ɔ", " ", "r", "u", "ʒ", "ɲ", "ˈ", "i", "t", "s", "ɛ", " ", "f", " ", "k", "ˈ", "ɔ", "ɲ", "t", "ɕ", "ɛ", " ", "z", "ˌ", "a", "w", "a", "m", "ˈ", "a", "ɲ", "ʲ", "a", " ", "ɕ", "f", "ʲ", "ˈ", "a", "t", "w", "a", " ", "ɔ", " ", "r", "ˈ", "u", "ʒ", "n", "ɛ", "j", " ", "d", "w", "u", "ɡ", "ˈ", "ɔ", "ɕ", "t", "ɕ", "i", " ", "f", "ˈ", "a", "l", "i", " ", "p", "ʃ", "ɨ", " ", "p", "ʃ", "ˈ", "ɛ", "j", "ɕ", "t", "ɕ", "u", " ", "s", " ", "p", "ɔ", "v", "ʲ", "ˈ", "ɛ", "t", "ʃ", "a", " ", "d", "ɔ", " ", "v", "ˈ", "ɔ", "d", "ɨ", " ", "i", " ", "z", " ", "v", "ˈ", "ɔ", "d", "ɨ", " ", "d", "ɔ", " ", "p", "ɔ", "v", "ʲ", "ˈ", "ɛ", "t", "ʃ", "a", "."], "phoneme_ids": [1, 0, 30, 0, 121, 0, 54, 0, 31, 0, 96, 0, 32, 0, 96, 0, 61, 0, 28, 0, 119, 0, 120, 0, 61, 0, 82, 0, 119, 0, 61, 0, 3, 0, 55, 0, 19, 0, 119, 0, 120, 0, 14, 0, 32, 0, 35, 0, 14, 0, 3, 0, 22, 0, 61, 0, 38, 0, 17, 0, 3, 0, 34, 0, 73, 0, 82, 0, 120, 0, 21, 0, 23, 0, 119, 0, 61, 0, 25, 0, 3, 0, 38, 0, 22, 0, 14, 0, 34, 0, 120, 0, 21, 0, 31, 0, 23, 0, 14, 0, 3, 0, 17, 0, 73, 0, 31, 0, 28, 0, 120, 0, 61, 0, 30, 0, 31, 0, 22, 0, 21, 0, 8, 0, 3, 0, 28, 0, 121, 0, 54, 0, 34, 0, 54, 0, 17, 0, 121, 0, 33, 0, 22, 0, 54, 0, 26, 0, 32, 0, 31, 0, 120, 0, 61, 0, 66, 0, 54, 0, 3, 0, 30, 0, 33, 0, 108, 0, 82, 0, 120, 0, 21, 0, 32, 0, 31, 0, 61, 0, 3, 0, 19, 0, 3, 0, 23, 0, 120, 0, 54, 0, 82, 0, 32, 0, 55, 0, 61, 0, 3, 0, 38, 0, 121, 0, 14, 0, 35, 0, 14, 0, 25, 0, 120, 0, 14, 0, 82, 0, 119, 0, 14, 0, 3, 0, 55, 0, 19, 0, 119, 0, 120, 0, 14, 0, 32, 0, 35, 0, 14, 0, 3, 0, 54, 0, 3, 0, 30, 0, 120, 0, 33, 0, 108, 0, 26, 0, 61, 0, 22, 0, 3, 0, 17, 0, 35, 0, 33, 0, 66, 0, 120, 0, 54, 0, 55, 0, 32, 0, 55, 0, 21, 0, 3, 0, 19, 0, 120, 0, 14, 0, 24, 0, 21, 0, 3, 0, 28, 0, 96, 0, 73, 0, 3, 0, 28, 0, 96, 0, 120, 0, 61, 0, 22, 0, 55, 0, 32, 0, 55, 0, 33, 0, 3, 0, 31, 0, 3, 0, 28, 0, 54, 0, 34, 0, 119, 0, 120, 0, 61, 0, 32, 0, 96, 0, 14, 0, 3, 0, 17, 0, 54, 0, 3, 0, 34, 0, 120, 0, 54, 0, 17, 0, 73, 0, 3, 0, 21, 0, 3, 0, 38, 0, 3, 0, 34, 0, 120, 0, 54, 0, 17, 0, 73, 0, 3, 0, 17, 0, 54, 0, 3, 0, 28, 0, 54, 0, 34, 0, 119, 0, 120, 0, 61, 0, 32, 0, 96, 0, 14, 0, 10, 0, 2]} +{"text": "Jeżu klątw, spłódź Finom część gry hańb.", "phonemes": ["j", "ˈ", "ɛ", "ʒ", "u", " ", "k", "l", "ˈ", "ɔ", "n", "t", "f", ",", " ", "s", "p", "w", "ˈ", "u", "t", "ɕ", " ", "f", "ˈ", "i", "n", "ɔ", "m", " ", "t", "ʃ", "ˈ", "ɛ", "ɲ", "ʑ", "d", "ʑ", " ", "ɡ", "r", "ˈ", "ɨ", " ", "x", "ˈ", "a", "ɲ", "p", "."], "phoneme_ids": [1, 0, 22, 0, 120, 0, 61, 0, 108, 0, 33, 0, 3, 0, 23, 0, 24, 0, 120, 0, 54, 0, 26, 0, 32, 0, 19, 0, 8, 0, 3, 0, 31, 0, 28, 0, 35, 0, 120, 0, 33, 0, 32, 0, 55, 0, 3, 0, 19, 0, 120, 0, 21, 0, 26, 0, 54, 0, 25, 0, 3, 0, 32, 0, 96, 0, 120, 0, 61, 0, 82, 0, 107, 0, 17, 0, 107, 0, 3, 0, 66, 0, 30, 0, 120, 0, 73, 0, 3, 0, 36, 0, 120, 0, 14, 0, 82, 0, 28, 0, 10, 0, 2]} +{"text": "Pójdźże, kiń tę chmurność w głąb flaszy.", "phonemes": ["p", "ˈ", "u", "j", "d", "ʑ", "ʒ", "ɛ", ",", " ", "k", "ˈ", "i", "ɲ", " ", "t", "ˈ", "ɛ", " ", "x", "m", "ˈ", "u", "r", "n", "ɔ", "ʑ", "d", "ʑ", " ", "w", " ", "ɡ", "w", "ˈ", "ɔ", "m", "p", " ", "f", "l", "ˈ", "a", "ʃ", "ɨ", "."], "phoneme_ids": [1, 0, 28, 0, 120, 0, 33, 0, 22, 0, 17, 0, 107, 0, 108, 0, 61, 0, 8, 0, 3, 0, 23, 0, 120, 0, 21, 0, 82, 0, 3, 0, 32, 0, 120, 0, 61, 0, 3, 0, 36, 0, 25, 0, 120, 0, 33, 0, 30, 0, 26, 0, 54, 0, 107, 0, 17, 0, 107, 0, 3, 0, 35, 0, 3, 0, 66, 0, 35, 0, 120, 0, 54, 0, 25, 0, 28, 0, 3, 0, 19, 0, 24, 0, 120, 0, 14, 0, 96, 0, 73, 0, 10, 0, 2]} +{"text": "Mężny bądź, chroń pułk twój i sześć flag.", "phonemes": ["m", "ˈ", "ɛ", "̃", "ʒ", "n", "ɨ", " ", "b", "ˈ", "ɔ", "ɲ", "t", "ɕ", ",", " ", "x", "r", "ˈ", "ɔ", "ɲ", " ", "p", "ˈ", "u", "w", "k", " ", "t", "f", "ˈ", "u", "j", " ", "i", " ", "ʃ", "ˈ", "ɛ", "ɕ", "t", "ɕ", " ", "f", "l", "ˈ", "a", "k", "."], "phoneme_ids": [1, 0, 25, 0, 120, 0, 61, 0, 141, 0, 108, 0, 26, 0, 73, 0, 3, 0, 15, 0, 120, 0, 54, 0, 82, 0, 32, 0, 55, 0, 8, 0, 3, 0, 36, 0, 30, 0, 120, 0, 54, 0, 82, 0, 3, 0, 28, 0, 120, 0, 33, 0, 35, 0, 23, 0, 3, 0, 32, 0, 19, 0, 120, 0, 33, 0, 22, 0, 3, 0, 21, 0, 3, 0, 96, 0, 120, 0, 61, 0, 55, 0, 32, 0, 55, 0, 3, 0, 19, 0, 24, 0, 120, 0, 14, 0, 23, 0, 10, 0, 2]} +{"text": "Filmuj rzeź żądań, pość, gnęb chłystków.", "phonemes": ["f", "ˈ", "i", "l", "m", "u", "j", " ", "ʒ", "ˈ", "ɛ", "ʑ", " ", "ʒ", "ˈ", "ɔ", "n", "d", "a", "ɲ", ",", " ", "p", "ˈ", "ɔ", "ɕ", "t", "ɕ", ",", " ", "ɡ", "n", "ˈ", "ɛ", "m", "p", " ", "x", "w", "ˈ", "ɨ", "s", "t", "k", "u", "f", "."], "phoneme_ids": [1, 0, 19, 0, 120, 0, 21, 0, 24, 0, 25, 0, 33, 0, 22, 0, 3, 0, 108, 0, 120, 0, 61, 0, 107, 0, 3, 0, 108, 0, 120, 0, 54, 0, 26, 0, 17, 0, 14, 0, 82, 0, 8, 0, 3, 0, 28, 0, 120, 0, 54, 0, 55, 0, 32, 0, 55, 0, 8, 0, 3, 0, 66, 0, 26, 0, 120, 0, 61, 0, 25, 0, 28, 0, 3, 0, 36, 0, 35, 0, 120, 0, 73, 0, 31, 0, 32, 0, 23, 0, 33, 0, 19, 0, 10, 0, 2]} diff --git a/piper/piper/etc/test_sentences/test_pt-br.jsonl b/piper/piper/etc/test_sentences/test_pt-br.jsonl new file mode 100644 index 0000000..14b4f66 --- /dev/null +++ b/piper/piper/etc/test_sentences/test_pt-br.jsonl @@ -0,0 +1,8 @@ +{"text": "Um arco-íris, também popularmente denominado arco-da-velha, é um fenômeno óptico e meteorológico que separa a luz do sol em seu espectro contínuo quando o sol brilha sobre gotículas de água suspensas no ar.", "phonemes": ["u", "̃", "ŋ", " ", "ˈ", "a", "ɾ", "ə", "k", "ʊ", "ˈ", "i", "ɾ", "i", "s", ",", " ", "t", "ɐ", "̃", "m", "b", "ˈ", "e", "ɪ", "ŋ", " ", "p", "ˌ", "o", "p", "u", "l", "a", "ɾ", "ə", "m", "ˈ", "e", "ɪ", "ŋ", "t", "ʃ", "y", " ", "d", "ˌ", "e", "n", "o", "m", "i", "n", "ˈ", "a", "d", "w", " ", "ˈ", "a", "ɾ", "ə", "k", "ʊ", "d", "a", "v", "ˈ", "ɛ", "l", "j", "æ", ",", " ", "ɛ", " ", "u", "̃", "ŋ", " ", "f", "ˌ", "e", "n", "ˈ", "o", "m", "e", "n", "w", " ", "ˈ", "ɔ", "p", "t", "ʃ", "i", "k", "w", " ", "i", " ", "m", "ˌ", "e", "t", "e", "ˌ", "o", "ɾ", "o", "l", "ˈ", "ɔ", "ʒ", "i", "k", "ʊ", " ", "k", "y", " ", "s", "ˌ", "e", "p", "ˈ", "a", "ɾ", "æ", " ", "a", " ", "l", "ˈ", "u", "z", " ", "d", "ʊ", " ", "s", "ˈ", "ɔ", "l", " ", "ˈ", "e", "ɪ", "ŋ", " ", "s", "e", "ʊ", " ", "ˌ", "e", "s", "p", "ˈ", "ɛ", "k", "t", "r", "ʊ", " ", "k", "ˌ", "o", "ŋ", "t", "ʃ", "ˈ", "i", "n", "u", "ʊ", " ", "k", "w", "ˈ", "ɐ", "̃", "ŋ", "d", "w", " ", "ʊ", " ", "s", "ˈ", "ɔ", "l", " ", "b", "r", "ˈ", "i", "l", "j", "æ", " ", "s", "ˈ", "o", "b", "r", "y", " ", "ɡ", "ˌ", "o", "t", "ʃ", "ˈ", "i", "k", "u", "l", "æ", "z", " ", "d", "ʒ", "j", " ", "ˈ", "a", "ɡ", "w", "æ", " ", "s", "ˌ", "u", "s", "p", "ˈ", "e", "ɪ", "ŋ", "s", "æ", "z", " ", "n", "ʊ", " ", "ˈ", "a", "r", "."], "phoneme_ids": [1, 0, 33, 0, 141, 0, 44, 0, 3, 0, 120, 0, 14, 0, 92, 0, 59, 0, 23, 0, 100, 0, 120, 0, 21, 0, 92, 0, 21, 0, 31, 0, 8, 0, 3, 0, 32, 0, 50, 0, 141, 0, 25, 0, 15, 0, 120, 0, 18, 0, 74, 0, 44, 0, 3, 0, 28, 0, 121, 0, 27, 0, 28, 0, 33, 0, 24, 0, 14, 0, 92, 0, 59, 0, 25, 0, 120, 0, 18, 0, 74, 0, 44, 0, 32, 0, 96, 0, 37, 0, 3, 0, 17, 0, 121, 0, 18, 0, 26, 0, 27, 0, 25, 0, 21, 0, 26, 0, 120, 0, 14, 0, 17, 0, 35, 0, 3, 0, 120, 0, 14, 0, 92, 0, 59, 0, 23, 0, 100, 0, 17, 0, 14, 0, 34, 0, 120, 0, 61, 0, 24, 0, 22, 0, 39, 0, 8, 0, 3, 0, 61, 0, 3, 0, 33, 0, 141, 0, 44, 0, 3, 0, 19, 0, 121, 0, 18, 0, 26, 0, 120, 0, 27, 0, 25, 0, 18, 0, 26, 0, 35, 0, 3, 0, 120, 0, 54, 0, 28, 0, 32, 0, 96, 0, 21, 0, 23, 0, 35, 0, 3, 0, 21, 0, 3, 0, 25, 0, 121, 0, 18, 0, 32, 0, 18, 0, 121, 0, 27, 0, 92, 0, 27, 0, 24, 0, 120, 0, 54, 0, 108, 0, 21, 0, 23, 0, 100, 0, 3, 0, 23, 0, 37, 0, 3, 0, 31, 0, 121, 0, 18, 0, 28, 0, 120, 0, 14, 0, 92, 0, 39, 0, 3, 0, 14, 0, 3, 0, 24, 0, 120, 0, 33, 0, 38, 0, 3, 0, 17, 0, 100, 0, 3, 0, 31, 0, 120, 0, 54, 0, 24, 0, 3, 0, 120, 0, 18, 0, 74, 0, 44, 0, 3, 0, 31, 0, 18, 0, 100, 0, 3, 0, 121, 0, 18, 0, 31, 0, 28, 0, 120, 0, 61, 0, 23, 0, 32, 0, 30, 0, 100, 0, 3, 0, 23, 0, 121, 0, 27, 0, 44, 0, 32, 0, 96, 0, 120, 0, 21, 0, 26, 0, 33, 0, 100, 0, 3, 0, 23, 0, 35, 0, 120, 0, 50, 0, 141, 0, 44, 0, 17, 0, 35, 0, 3, 0, 100, 0, 3, 0, 31, 0, 120, 0, 54, 0, 24, 0, 3, 0, 15, 0, 30, 0, 120, 0, 21, 0, 24, 0, 22, 0, 39, 0, 3, 0, 31, 0, 120, 0, 27, 0, 15, 0, 30, 0, 37, 0, 3, 0, 66, 0, 121, 0, 27, 0, 32, 0, 96, 0, 120, 0, 21, 0, 23, 0, 33, 0, 24, 0, 39, 0, 38, 0, 3, 0, 17, 0, 108, 0, 22, 0, 3, 0, 120, 0, 14, 0, 66, 0, 35, 0, 39, 0, 3, 0, 31, 0, 121, 0, 33, 0, 31, 0, 28, 0, 120, 0, 18, 0, 74, 0, 44, 0, 31, 0, 39, 0, 38, 0, 3, 0, 26, 0, 100, 0, 3, 0, 120, 0, 14, 0, 30, 0, 10, 0, 2]} +{"text": "É um arco multicolorido com o vermelho em seu exterior e o violeta em seu interior.", "phonemes": ["ɛ", " ", "u", "̃", "ŋ", " ", "ˈ", "a", "ɾ", "ə", "k", "ʊ", " ", "m", "ˌ", "u", "w", "t", "ʃ", "i", "k", "ˌ", "o", "l", "o", "ɾ", "ˈ", "i", "d", "ʊ", " ", "k", "o", "ŋ", " ", "ʊ", " ", "v", "ˌ", "e", "ɾ", "ə", "m", "ˈ", "e", "l", "j", "w", " ", "ˈ", "e", "ɪ", "ŋ", " ", "s", "e", "ʊ", " ", "ˌ", "e", "s", "t", "e", "ɾ", "i", "ˈ", "o", "ɾ", " ", "i", " ", "ʊ", " ", "v", "ˌ", "i", "o", "l", "ˈ", "e", "t", "æ", " ", "ˈ", "e", "ɪ", "ŋ", " ", "s", "e", "ʊ", " ", "ˌ", "i", "ŋ", "t", "e", "ɾ", "i", "ˈ", "o", "r", "."], "phoneme_ids": [1, 0, 61, 0, 3, 0, 33, 0, 141, 0, 44, 0, 3, 0, 120, 0, 14, 0, 92, 0, 59, 0, 23, 0, 100, 0, 3, 0, 25, 0, 121, 0, 33, 0, 35, 0, 32, 0, 96, 0, 21, 0, 23, 0, 121, 0, 27, 0, 24, 0, 27, 0, 92, 0, 120, 0, 21, 0, 17, 0, 100, 0, 3, 0, 23, 0, 27, 0, 44, 0, 3, 0, 100, 0, 3, 0, 34, 0, 121, 0, 18, 0, 92, 0, 59, 0, 25, 0, 120, 0, 18, 0, 24, 0, 22, 0, 35, 0, 3, 0, 120, 0, 18, 0, 74, 0, 44, 0, 3, 0, 31, 0, 18, 0, 100, 0, 3, 0, 121, 0, 18, 0, 31, 0, 32, 0, 18, 0, 92, 0, 21, 0, 120, 0, 27, 0, 92, 0, 3, 0, 21, 0, 3, 0, 100, 0, 3, 0, 34, 0, 121, 0, 21, 0, 27, 0, 24, 0, 120, 0, 18, 0, 32, 0, 39, 0, 3, 0, 120, 0, 18, 0, 74, 0, 44, 0, 3, 0, 31, 0, 18, 0, 100, 0, 3, 0, 121, 0, 21, 0, 44, 0, 32, 0, 18, 0, 92, 0, 21, 0, 120, 0, 27, 0, 30, 0, 10, 0, 2]} +{"text": "Por ser um espectro de dispersão da luz branca, o arco-íris contém uma quantidade infinita de cores sem qualquer delimitação entre elas.", "phonemes": ["p", "o", "r", " ", "s", "e", "ɾ", " ", "u", "̃", "ŋ", " ", "ˌ", "e", "s", "p", "ˈ", "ɛ", "k", "t", "r", "ʊ", " ", "d", "ʒ", "y", " ", "d", "ʒ", "ˌ", "i", "s", "p", "e", "ɾ", "ə", "s", "ˈ", "ɐ", "̃", "ʊ", "̃", " ", "d", "a", " ", "l", "ˈ", "u", "z", " ", "b", "r", "ˈ", "ɐ", "̃", "ŋ", "k", "æ", ",", " ", "u", " ", "ˈ", "a", "ɾ", "ə", "k", "ʊ", "ˈ", "i", "ɾ", "i", "s", " ", "k", "o", "ŋ", "t", "ˈ", "e", "ɪ", "ŋ", " ", "ˌ", "u", "m", "æ", " ", "k", "w", "ˌ", "ɐ", "̃", "ŋ", "t", "ʃ", "i", "d", "ˈ", "a", "d", "ʒ", "j", " ", "ˌ", "i", "ŋ", "f", "i", "n", "ˈ", "i", "t", "æ", " ", "d", "ʒ", "y", " ", "k", "ˈ", "o", "ɾ", "y", "s", " ", "s", "ˈ", "e", "ɪ", "ŋ", " ", "k", "w", "a", "ʊ", "k", "ˌ", "ɛ", "r", " ", "d", "ˌ", "e", "l", "i", "m", "ˌ", "i", "t", "a", "s", "ˈ", "ɐ", "̃", "ʊ", "̃", " ", "ˈ", "e", "ɪ", "ŋ", "t", "r", "i", " ", "ˈ", "ɛ", "l", "æ", "s", "."], "phoneme_ids": [1, 0, 28, 0, 27, 0, 30, 0, 3, 0, 31, 0, 18, 0, 92, 0, 3, 0, 33, 0, 141, 0, 44, 0, 3, 0, 121, 0, 18, 0, 31, 0, 28, 0, 120, 0, 61, 0, 23, 0, 32, 0, 30, 0, 100, 0, 3, 0, 17, 0, 108, 0, 37, 0, 3, 0, 17, 0, 108, 0, 121, 0, 21, 0, 31, 0, 28, 0, 18, 0, 92, 0, 59, 0, 31, 0, 120, 0, 50, 0, 141, 0, 100, 0, 141, 0, 3, 0, 17, 0, 14, 0, 3, 0, 24, 0, 120, 0, 33, 0, 38, 0, 3, 0, 15, 0, 30, 0, 120, 0, 50, 0, 141, 0, 44, 0, 23, 0, 39, 0, 8, 0, 3, 0, 33, 0, 3, 0, 120, 0, 14, 0, 92, 0, 59, 0, 23, 0, 100, 0, 120, 0, 21, 0, 92, 0, 21, 0, 31, 0, 3, 0, 23, 0, 27, 0, 44, 0, 32, 0, 120, 0, 18, 0, 74, 0, 44, 0, 3, 0, 121, 0, 33, 0, 25, 0, 39, 0, 3, 0, 23, 0, 35, 0, 121, 0, 50, 0, 141, 0, 44, 0, 32, 0, 96, 0, 21, 0, 17, 0, 120, 0, 14, 0, 17, 0, 108, 0, 22, 0, 3, 0, 121, 0, 21, 0, 44, 0, 19, 0, 21, 0, 26, 0, 120, 0, 21, 0, 32, 0, 39, 0, 3, 0, 17, 0, 108, 0, 37, 0, 3, 0, 23, 0, 120, 0, 27, 0, 92, 0, 37, 0, 31, 0, 3, 0, 31, 0, 120, 0, 18, 0, 74, 0, 44, 0, 3, 0, 23, 0, 35, 0, 14, 0, 100, 0, 23, 0, 121, 0, 61, 0, 30, 0, 3, 0, 17, 0, 121, 0, 18, 0, 24, 0, 21, 0, 25, 0, 121, 0, 21, 0, 32, 0, 14, 0, 31, 0, 120, 0, 50, 0, 141, 0, 100, 0, 141, 0, 3, 0, 120, 0, 18, 0, 74, 0, 44, 0, 32, 0, 30, 0, 21, 0, 3, 0, 120, 0, 61, 0, 24, 0, 39, 0, 31, 0, 10, 0, 2]} +{"text": "Devido à necessidade humana de classificação dos fenômenos da natureza, a capacidade finita de distinção de cores pela visão humana e por questões didáticas, o arco-íris é mais conhecido por uma simplificação criada culturalmente que resume o espectro em sete cores na seguinte ordem: vermelho, laranja, amarelo, verde, azul, anil e violeta.", "phonemes": ["d", "ˌ", "e", "v", "ˈ", "i", "d", "w", " ", "ˌ", "a", "ː", " ", "n", "ˌ", "e", "s", "e", "s", "i", "d", "ˈ", "a", "d", "ʒ", "y", " ", "ˌ", "u", "m", "ˈ", "ɐ", "̃", "n", "æ", " ", "d", "ʒ", "y", " ", "k", "l", "ˌ", "a", "s", "i", "f", "ˌ", "i", "k", "a", "s", "ˈ", "ɐ", "̃", "ʊ", "̃", " ", "d", "ʊ", "s", " ", "f", "ˌ", "e", "n", "ˈ", "o", "m", "e", "n", "ʊ", "z", " ", "d", "a", " ", "n", "ˌ", "a", "t", "u", "ɾ", "ˈ", "e", "z", "æ", ",", " ", "a", " ", "k", "ˌ", "a", "p", "a", "s", "i", "d", "ˈ", "a", "d", "ʒ", "y", " ", "f", "ˌ", "i", "n", "ˈ", "i", "t", "æ", " ", "d", "ʒ", "y", " ", "d", "ʒ", "ˌ", "i", "s", "t", "ʃ", "i", "ŋ", "s", "ˈ", "ɐ", "̃", "ʊ", "̃", " ", "d", "ʒ", "y", " ", "k", "ˈ", "o", "ɾ", "y", "s", " ", "p", "ˈ", "e", "l", "æ", " ", "v", "i", "z", "ˈ", "ɐ", "̃", "ʊ", "̃", " ", "ˌ", "u", "m", "ˈ", "ɐ", "̃", "n", "æ", " ", "i", " ", "p", "o", "r", " ", "k", "e", "s", "t", "ˈ", "o", "̃", "j", "z", " ", "d", "ʒ", "ˌ", "i", "d", "ˈ", "a", "t", "ʃ", "i", "k", "æ", "s", ",", " ", "u", " ", "ˈ", "a", "ɾ", "ə", "k", "ʊ", "ˈ", "i", "ɾ", "i", "z", " ", "ɛ", " ", "m", "ˈ", "a", "ɪ", "s", " ", "k", "ˌ", "o", "ɲ", "e", "s", "ˈ", "i", "d", "ʊ", " ", "p", "o", "ɾ", " ", "ˌ", "u", "m", "æ", " ", "s", "ˌ", "i", "m", "p", "l", "i", "f", "ˌ", "i", "k", "a", "s", "ˈ", "ɐ", "̃", "ʊ", "̃", " ", "k", "r", "ˌ", "i", "ˈ", "a", "d", "æ", " ", "k", "ˌ", "u", "w", "t", "u", "ɾ", "a", "ʊ", "m", "ˈ", "e", "ɪ", "ŋ", "t", "ʃ", "y", " ", "k", "y", " ", "x", "ˌ", "e", "z", "ˈ", "u", "m", "j", " ", "u", " ", "ˌ", "e", "s", "p", "ˈ", "ɛ", "k", "t", "r", "w", " ", "ˈ", "e", "ɪ", "ŋ", " ", "s", "ˈ", "ɛ", "t", "ʃ", "y", " ", "k", "ˈ", "o", "ɾ", "y", "z", " ", "n", "a", " ", "s", "ˌ", "e", "ɡ", "ˈ", "i", "ŋ", "t", "ʃ", "j", " ", "ˈ", "ɔ", "ɾ", "ə", "d", "e", "ɪ", "ŋ", ":", " ", "v", "ˌ", "e", "ɾ", "ə", "m", "ˈ", "e", "l", "j", "ʊ", ",", " ", "l", "ˌ", "a", "ɾ", "ˈ", "ɐ", "̃", "ŋ", "ʒ", "æ", ",", " ", "ˌ", "æ", "m", "a", "ɾ", "ˈ", "ɛ", "l", "ʊ", ",", " ", "v", "ˈ", "e", "ɾ", "ə", "d", "ʒ", "y", ",", " ", "a", "z", "ˈ", "u", "w", ",", " ", "ɐ", "̃", "n", "ˈ", "i", "ʊ", " ", "i", " ", "v", "ˌ", "i", "o", "l", "ˈ", "e", "t", "æ", "."], "phoneme_ids": [1, 0, 17, 0, 121, 0, 18, 0, 34, 0, 120, 0, 21, 0, 17, 0, 35, 0, 3, 0, 121, 0, 14, 0, 122, 0, 3, 0, 26, 0, 121, 0, 18, 0, 31, 0, 18, 0, 31, 0, 21, 0, 17, 0, 120, 0, 14, 0, 17, 0, 108, 0, 37, 0, 3, 0, 121, 0, 33, 0, 25, 0, 120, 0, 50, 0, 141, 0, 26, 0, 39, 0, 3, 0, 17, 0, 108, 0, 37, 0, 3, 0, 23, 0, 24, 0, 121, 0, 14, 0, 31, 0, 21, 0, 19, 0, 121, 0, 21, 0, 23, 0, 14, 0, 31, 0, 120, 0, 50, 0, 141, 0, 100, 0, 141, 0, 3, 0, 17, 0, 100, 0, 31, 0, 3, 0, 19, 0, 121, 0, 18, 0, 26, 0, 120, 0, 27, 0, 25, 0, 18, 0, 26, 0, 100, 0, 38, 0, 3, 0, 17, 0, 14, 0, 3, 0, 26, 0, 121, 0, 14, 0, 32, 0, 33, 0, 92, 0, 120, 0, 18, 0, 38, 0, 39, 0, 8, 0, 3, 0, 14, 0, 3, 0, 23, 0, 121, 0, 14, 0, 28, 0, 14, 0, 31, 0, 21, 0, 17, 0, 120, 0, 14, 0, 17, 0, 108, 0, 37, 0, 3, 0, 19, 0, 121, 0, 21, 0, 26, 0, 120, 0, 21, 0, 32, 0, 39, 0, 3, 0, 17, 0, 108, 0, 37, 0, 3, 0, 17, 0, 108, 0, 121, 0, 21, 0, 31, 0, 32, 0, 96, 0, 21, 0, 44, 0, 31, 0, 120, 0, 50, 0, 141, 0, 100, 0, 141, 0, 3, 0, 17, 0, 108, 0, 37, 0, 3, 0, 23, 0, 120, 0, 27, 0, 92, 0, 37, 0, 31, 0, 3, 0, 28, 0, 120, 0, 18, 0, 24, 0, 39, 0, 3, 0, 34, 0, 21, 0, 38, 0, 120, 0, 50, 0, 141, 0, 100, 0, 141, 0, 3, 0, 121, 0, 33, 0, 25, 0, 120, 0, 50, 0, 141, 0, 26, 0, 39, 0, 3, 0, 21, 0, 3, 0, 28, 0, 27, 0, 30, 0, 3, 0, 23, 0, 18, 0, 31, 0, 32, 0, 120, 0, 27, 0, 141, 0, 22, 0, 38, 0, 3, 0, 17, 0, 108, 0, 121, 0, 21, 0, 17, 0, 120, 0, 14, 0, 32, 0, 96, 0, 21, 0, 23, 0, 39, 0, 31, 0, 8, 0, 3, 0, 33, 0, 3, 0, 120, 0, 14, 0, 92, 0, 59, 0, 23, 0, 100, 0, 120, 0, 21, 0, 92, 0, 21, 0, 38, 0, 3, 0, 61, 0, 3, 0, 25, 0, 120, 0, 14, 0, 74, 0, 31, 0, 3, 0, 23, 0, 121, 0, 27, 0, 82, 0, 18, 0, 31, 0, 120, 0, 21, 0, 17, 0, 100, 0, 3, 0, 28, 0, 27, 0, 92, 0, 3, 0, 121, 0, 33, 0, 25, 0, 39, 0, 3, 0, 31, 0, 121, 0, 21, 0, 25, 0, 28, 0, 24, 0, 21, 0, 19, 0, 121, 0, 21, 0, 23, 0, 14, 0, 31, 0, 120, 0, 50, 0, 141, 0, 100, 0, 141, 0, 3, 0, 23, 0, 30, 0, 121, 0, 21, 0, 120, 0, 14, 0, 17, 0, 39, 0, 3, 0, 23, 0, 121, 0, 33, 0, 35, 0, 32, 0, 33, 0, 92, 0, 14, 0, 100, 0, 25, 0, 120, 0, 18, 0, 74, 0, 44, 0, 32, 0, 96, 0, 37, 0, 3, 0, 23, 0, 37, 0, 3, 0, 36, 0, 121, 0, 18, 0, 38, 0, 120, 0, 33, 0, 25, 0, 22, 0, 3, 0, 33, 0, 3, 0, 121, 0, 18, 0, 31, 0, 28, 0, 120, 0, 61, 0, 23, 0, 32, 0, 30, 0, 35, 0, 3, 0, 120, 0, 18, 0, 74, 0, 44, 0, 3, 0, 31, 0, 120, 0, 61, 0, 32, 0, 96, 0, 37, 0, 3, 0, 23, 0, 120, 0, 27, 0, 92, 0, 37, 0, 38, 0, 3, 0, 26, 0, 14, 0, 3, 0, 31, 0, 121, 0, 18, 0, 66, 0, 120, 0, 21, 0, 44, 0, 32, 0, 96, 0, 22, 0, 3, 0, 120, 0, 54, 0, 92, 0, 59, 0, 17, 0, 18, 0, 74, 0, 44, 0, 11, 0, 3, 0, 34, 0, 121, 0, 18, 0, 92, 0, 59, 0, 25, 0, 120, 0, 18, 0, 24, 0, 22, 0, 100, 0, 8, 0, 3, 0, 24, 0, 121, 0, 14, 0, 92, 0, 120, 0, 50, 0, 141, 0, 44, 0, 108, 0, 39, 0, 8, 0, 3, 0, 121, 0, 39, 0, 25, 0, 14, 0, 92, 0, 120, 0, 61, 0, 24, 0, 100, 0, 8, 0, 3, 0, 34, 0, 120, 0, 18, 0, 92, 0, 59, 0, 17, 0, 108, 0, 37, 0, 8, 0, 3, 0, 14, 0, 38, 0, 120, 0, 33, 0, 35, 0, 8, 0, 3, 0, 50, 0, 141, 0, 26, 0, 120, 0, 21, 0, 100, 0, 3, 0, 21, 0, 3, 0, 34, 0, 121, 0, 21, 0, 27, 0, 24, 0, 120, 0, 18, 0, 32, 0, 39, 0, 10, 0, 2]} +{"text": "Tal simplificação foi proposta primeiramente por Isaac Newton, que decidiu nomear apenas cinco cores e depois adicionou mais duas apenas para fazer analogia com as sete notas musicais, os sete dias da semana e os sete objetos do sistema solar conhecidos à época.", "phonemes": ["t", "ˈ", "a", "ʊ", " ", "s", "ˌ", "i", "m", "p", "l", "i", "f", "ˌ", "i", "k", "a", "s", "ˈ", "ɐ", "̃", "ʊ", "̃", " ", "f", "o", "ɪ", " ", "p", "r", "ˌ", "o", "p", "ˈ", "ɔ", "s", "t", "æ", " ", "p", "r", "ˌ", "i", "m", "e", "ɪ", "ɾ", "æ", "m", "ˈ", "e", "ɪ", "ŋ", "t", "ʃ", "y", " ", "p", "o", "ɾ", " ", "i", "z", "ˈ", "a", "k", " ", "n", "ˈ", "ɪ", "u", "t", "o", "ŋ", ",", " ", "k", "y", " ", "d", "ˌ", "e", "s", "i", "d", "ʒ", "ˈ", "i", "ʊ", " ", "n", "ˌ", "o", "m", "e", "ˈ", "a", "ɾ", " ", "ˌ", "a", "p", "ˈ", "e", "n", "æ", "s", " ", "s", "ˈ", "i", "ŋ", "k", "ʊ", " ", "k", "ˈ", "o", "ɾ", "y", "z", " ", "i", " ", "d", "e", "p", "ˈ", "o", "ɪ", "z", " ", "ˌ", "a", "d", "ʒ", "i", "s", "ˌ", "i", "o", "n", "ˈ", "o", "w", " ", "m", "ˈ", "a", "ɪ", "z", " ", "d", "ˈ", "u", "æ", "z", " ", "ˌ", "a", "p", "ˈ", "e", "n", "æ", "s", " ", "p", "ˌ", "a", "ɾ", "æ", " ", "f", "a", "z", "ˌ", "e", "ɾ", " ", "ˌ", "æ", "n", "a", "l", "o", "ʒ", "ˈ", "i", "æ", " ", "k", "o", "ŋ", " ", "a", "s", " ", "s", "ˈ", "ɛ", "t", "ʃ", "y", " ", "n", "ˈ", "ɔ", "t", "æ", "z", " ", "m", "ˌ", "u", "z", "i", "k", "ˈ", "a", "ɪ", "s", ",", " ", "ʊ", "s", " ", "s", "ˈ", "ɛ", "t", "ʃ", "y", " ", "d", "ʒ", "ˈ", "i", "æ", "z", " ", "d", "a", " ", "s", "ˌ", "e", "m", "ˈ", "ɐ", "̃", "n", "æ", " ", "i", " ", "ʊ", "s", " ", "s", "ˈ", "ɛ", "t", "ʃ", "j", " ", "ˌ", "o", "b", "ʒ", "ˈ", "ɛ", "t", "ʊ", "z", " ", "d", "ʊ", " ", "s", "ˌ", "i", "s", "t", "ˈ", "e", "m", "æ", " ", "s", "o", "l", "ˈ", "a", "r", " ", "k", "ˌ", "o", "ɲ", "e", "s", "ˈ", "i", "d", "ʊ", "z", " ", "ˌ", "a", "ː", " ", "ˈ", "ɛ", "p", "o", "k", "æ", "."], "phoneme_ids": [1, 0, 32, 0, 120, 0, 14, 0, 100, 0, 3, 0, 31, 0, 121, 0, 21, 0, 25, 0, 28, 0, 24, 0, 21, 0, 19, 0, 121, 0, 21, 0, 23, 0, 14, 0, 31, 0, 120, 0, 50, 0, 141, 0, 100, 0, 141, 0, 3, 0, 19, 0, 27, 0, 74, 0, 3, 0, 28, 0, 30, 0, 121, 0, 27, 0, 28, 0, 120, 0, 54, 0, 31, 0, 32, 0, 39, 0, 3, 0, 28, 0, 30, 0, 121, 0, 21, 0, 25, 0, 18, 0, 74, 0, 92, 0, 39, 0, 25, 0, 120, 0, 18, 0, 74, 0, 44, 0, 32, 0, 96, 0, 37, 0, 3, 0, 28, 0, 27, 0, 92, 0, 3, 0, 21, 0, 38, 0, 120, 0, 14, 0, 23, 0, 3, 0, 26, 0, 120, 0, 74, 0, 33, 0, 32, 0, 27, 0, 44, 0, 8, 0, 3, 0, 23, 0, 37, 0, 3, 0, 17, 0, 121, 0, 18, 0, 31, 0, 21, 0, 17, 0, 108, 0, 120, 0, 21, 0, 100, 0, 3, 0, 26, 0, 121, 0, 27, 0, 25, 0, 18, 0, 120, 0, 14, 0, 92, 0, 3, 0, 121, 0, 14, 0, 28, 0, 120, 0, 18, 0, 26, 0, 39, 0, 31, 0, 3, 0, 31, 0, 120, 0, 21, 0, 44, 0, 23, 0, 100, 0, 3, 0, 23, 0, 120, 0, 27, 0, 92, 0, 37, 0, 38, 0, 3, 0, 21, 0, 3, 0, 17, 0, 18, 0, 28, 0, 120, 0, 27, 0, 74, 0, 38, 0, 3, 0, 121, 0, 14, 0, 17, 0, 108, 0, 21, 0, 31, 0, 121, 0, 21, 0, 27, 0, 26, 0, 120, 0, 27, 0, 35, 0, 3, 0, 25, 0, 120, 0, 14, 0, 74, 0, 38, 0, 3, 0, 17, 0, 120, 0, 33, 0, 39, 0, 38, 0, 3, 0, 121, 0, 14, 0, 28, 0, 120, 0, 18, 0, 26, 0, 39, 0, 31, 0, 3, 0, 28, 0, 121, 0, 14, 0, 92, 0, 39, 0, 3, 0, 19, 0, 14, 0, 38, 0, 121, 0, 18, 0, 92, 0, 3, 0, 121, 0, 39, 0, 26, 0, 14, 0, 24, 0, 27, 0, 108, 0, 120, 0, 21, 0, 39, 0, 3, 0, 23, 0, 27, 0, 44, 0, 3, 0, 14, 0, 31, 0, 3, 0, 31, 0, 120, 0, 61, 0, 32, 0, 96, 0, 37, 0, 3, 0, 26, 0, 120, 0, 54, 0, 32, 0, 39, 0, 38, 0, 3, 0, 25, 0, 121, 0, 33, 0, 38, 0, 21, 0, 23, 0, 120, 0, 14, 0, 74, 0, 31, 0, 8, 0, 3, 0, 100, 0, 31, 0, 3, 0, 31, 0, 120, 0, 61, 0, 32, 0, 96, 0, 37, 0, 3, 0, 17, 0, 108, 0, 120, 0, 21, 0, 39, 0, 38, 0, 3, 0, 17, 0, 14, 0, 3, 0, 31, 0, 121, 0, 18, 0, 25, 0, 120, 0, 50, 0, 141, 0, 26, 0, 39, 0, 3, 0, 21, 0, 3, 0, 100, 0, 31, 0, 3, 0, 31, 0, 120, 0, 61, 0, 32, 0, 96, 0, 22, 0, 3, 0, 121, 0, 27, 0, 15, 0, 108, 0, 120, 0, 61, 0, 32, 0, 100, 0, 38, 0, 3, 0, 17, 0, 100, 0, 3, 0, 31, 0, 121, 0, 21, 0, 31, 0, 32, 0, 120, 0, 18, 0, 25, 0, 39, 0, 3, 0, 31, 0, 27, 0, 24, 0, 120, 0, 14, 0, 30, 0, 3, 0, 23, 0, 121, 0, 27, 0, 82, 0, 18, 0, 31, 0, 120, 0, 21, 0, 17, 0, 100, 0, 38, 0, 3, 0, 121, 0, 14, 0, 122, 0, 3, 0, 120, 0, 61, 0, 28, 0, 27, 0, 23, 0, 39, 0, 10, 0, 2]} +{"text": "Para informações sobre o espectro de cores do arco-íris, veja também o artigo sobre cores.", "phonemes": ["p", "ˌ", "a", "ɾ", "æ", " ", "ˌ", "i", "ŋ", "f", "o", "ɾ", "ə", "m", "a", "s", "ˈ", "o", "̃", "j", "s", " ", "s", "ˈ", "o", "b", "r", "i", " ", "u", " ", "ˌ", "e", "s", "p", "ˈ", "ɛ", "k", "t", "r", "ʊ", " ", "d", "ʒ", "y", " ", "k", "ˈ", "o", "ɾ", "y", "z", " ", "d", "ʊ", " ", "ˈ", "a", "ɾ", "ə", "k", "ʊ", "ˈ", "i", "ɾ", "i", "s", ",", " ", "v", "ˈ", "e", "ʒ", "æ", " ", "t", "ɐ", "̃", "m", "b", "ˈ", "e", "ɪ", "ŋ", " ", "u", " ", "ˌ", "a", "ɾ", "ə", "t", "ʃ", "ˈ", "i", "ɡ", "ʊ", " ", "s", "ˈ", "o", "b", "r", "y", " ", "k", "ˈ", "o", "ɾ", "y", "s", "."], "phoneme_ids": [1, 0, 28, 0, 121, 0, 14, 0, 92, 0, 39, 0, 3, 0, 121, 0, 21, 0, 44, 0, 19, 0, 27, 0, 92, 0, 59, 0, 25, 0, 14, 0, 31, 0, 120, 0, 27, 0, 141, 0, 22, 0, 31, 0, 3, 0, 31, 0, 120, 0, 27, 0, 15, 0, 30, 0, 21, 0, 3, 0, 33, 0, 3, 0, 121, 0, 18, 0, 31, 0, 28, 0, 120, 0, 61, 0, 23, 0, 32, 0, 30, 0, 100, 0, 3, 0, 17, 0, 108, 0, 37, 0, 3, 0, 23, 0, 120, 0, 27, 0, 92, 0, 37, 0, 38, 0, 3, 0, 17, 0, 100, 0, 3, 0, 120, 0, 14, 0, 92, 0, 59, 0, 23, 0, 100, 0, 120, 0, 21, 0, 92, 0, 21, 0, 31, 0, 8, 0, 3, 0, 34, 0, 120, 0, 18, 0, 108, 0, 39, 0, 3, 0, 32, 0, 50, 0, 141, 0, 25, 0, 15, 0, 120, 0, 18, 0, 74, 0, 44, 0, 3, 0, 33, 0, 3, 0, 121, 0, 14, 0, 92, 0, 59, 0, 32, 0, 96, 0, 120, 0, 21, 0, 66, 0, 100, 0, 3, 0, 31, 0, 120, 0, 27, 0, 15, 0, 30, 0, 37, 0, 3, 0, 23, 0, 120, 0, 27, 0, 92, 0, 37, 0, 31, 0, 10, 0, 2]} +{"text": "Luís argüia à Júlia que «brações, fé, chá, óxido, pôr, zângão» eram palavras do português.", "phonemes": ["l", "w", "ˈ", "i", "z", " ", "ˌ", "a", "ɾ", "ə", "ɡ", "u", "ˈ", "i", " ", "ˌ", "a", "ː", " ", "ʒ", "ˈ", "u", "l", "j", "æ", " ", "k", "y", " ", "b", "r", "a", "s", "ˈ", "o", "̃", "j", "s", ",", " ", "f", "ˈ", "ɛ", ",", " ", "ʃ", "ˈ", "a", ",", " ", "ˈ", "ɔ", "k", "s", "i", "d", "ʊ", ",", " ", "p", "ˈ", "o", "r", ",", " ", "z", "ˈ", "ɐ", "̃", "ŋ", "ɡ", "ɐ", "̃", "ʊ", "̃", " ", "ˌ", "ɛ", "ɾ", "ɐ", "̃", "ʊ", "̃", " ", "p", "ˌ", "a", "l", "ˈ", "a", "v", "r", "æ", "z", " ", "d", "ʊ", " ", "p", "ˌ", "o", "ɾ", "ə", "t", "u", "ɡ", "ˈ", "e", "s", "."], "phoneme_ids": [1, 0, 24, 0, 35, 0, 120, 0, 21, 0, 38, 0, 3, 0, 121, 0, 14, 0, 92, 0, 59, 0, 66, 0, 33, 0, 120, 0, 21, 0, 3, 0, 121, 0, 14, 0, 122, 0, 3, 0, 108, 0, 120, 0, 33, 0, 24, 0, 22, 0, 39, 0, 3, 0, 23, 0, 37, 0, 3, 0, 15, 0, 30, 0, 14, 0, 31, 0, 120, 0, 27, 0, 141, 0, 22, 0, 31, 0, 8, 0, 3, 0, 19, 0, 120, 0, 61, 0, 8, 0, 3, 0, 96, 0, 120, 0, 14, 0, 8, 0, 3, 0, 120, 0, 54, 0, 23, 0, 31, 0, 21, 0, 17, 0, 100, 0, 8, 0, 3, 0, 28, 0, 120, 0, 27, 0, 30, 0, 8, 0, 3, 0, 38, 0, 120, 0, 50, 0, 141, 0, 44, 0, 66, 0, 50, 0, 141, 0, 100, 0, 141, 0, 3, 0, 121, 0, 61, 0, 92, 0, 50, 0, 141, 0, 100, 0, 141, 0, 3, 0, 28, 0, 121, 0, 14, 0, 24, 0, 120, 0, 14, 0, 34, 0, 30, 0, 39, 0, 38, 0, 3, 0, 17, 0, 100, 0, 3, 0, 28, 0, 121, 0, 27, 0, 92, 0, 59, 0, 32, 0, 33, 0, 66, 0, 120, 0, 18, 0, 31, 0, 10, 0, 2]} +{"text": "À noite, vovô Kowalsky vê o ímã cair no pé do pingüim queixoso e vovó põe açúcar no chá de tâmaras do jabuti feliz.", "phonemes": ["ˌ", "a", "ː", " ", "n", "ˈ", "o", "ɪ", "t", "ʃ", "y", ",", " ", "v", "o", "v", "ˈ", "o", " ", "k", "ˌ", "o", "w", "ˈ", "a", "ʊ", "s", "k", "i", " ", "v", "ˈ", "e", " ", "u", " ", "ˈ", "i", "m", "ɐ", "̃", " ", "k", "a", "ˈ", "i", "r", " ", "n", "ʊ", " ", "p", "ˈ", "ɛ", " ", "d", "ʊ", " ", "p", "ˌ", "i", "ŋ", "ɡ", "u", "ˈ", "i", "ŋ", " ", "k", "ˌ", "e", "ɪ", "ʃ", "ˈ", "o", "z", "w", " ", "i", " ", "v", "o", "v", "ˈ", "ɔ", " ", "p", "ˈ", "o", "̃", "j", " ", "ˌ", "a", "s", "ˈ", "u", "k", "a", "r", " ", "n", "ʊ", " ", "ʃ", "ˈ", "a", " ", "d", "ʒ", "y", " ", "t", "ˈ", "ɐ", "̃", "m", "æ", "ɾ", "æ", "z", " ", "d", "ʊ", " ", "ʒ", "ˌ", "a", "b", "u", "t", "ʃ", "ˈ", "i", " ", "f", "e", "l", "ˈ", "i", "s", "."], "phoneme_ids": [1, 0, 121, 0, 14, 0, 122, 0, 3, 0, 26, 0, 120, 0, 27, 0, 74, 0, 32, 0, 96, 0, 37, 0, 8, 0, 3, 0, 34, 0, 27, 0, 34, 0, 120, 0, 27, 0, 3, 0, 23, 0, 121, 0, 27, 0, 35, 0, 120, 0, 14, 0, 100, 0, 31, 0, 23, 0, 21, 0, 3, 0, 34, 0, 120, 0, 18, 0, 3, 0, 33, 0, 3, 0, 120, 0, 21, 0, 25, 0, 50, 0, 141, 0, 3, 0, 23, 0, 14, 0, 120, 0, 21, 0, 30, 0, 3, 0, 26, 0, 100, 0, 3, 0, 28, 0, 120, 0, 61, 0, 3, 0, 17, 0, 100, 0, 3, 0, 28, 0, 121, 0, 21, 0, 44, 0, 66, 0, 33, 0, 120, 0, 21, 0, 44, 0, 3, 0, 23, 0, 121, 0, 18, 0, 74, 0, 96, 0, 120, 0, 27, 0, 38, 0, 35, 0, 3, 0, 21, 0, 3, 0, 34, 0, 27, 0, 34, 0, 120, 0, 54, 0, 3, 0, 28, 0, 120, 0, 27, 0, 141, 0, 22, 0, 3, 0, 121, 0, 14, 0, 31, 0, 120, 0, 33, 0, 23, 0, 14, 0, 30, 0, 3, 0, 26, 0, 100, 0, 3, 0, 96, 0, 120, 0, 14, 0, 3, 0, 17, 0, 108, 0, 37, 0, 3, 0, 32, 0, 120, 0, 50, 0, 141, 0, 25, 0, 39, 0, 92, 0, 39, 0, 38, 0, 3, 0, 17, 0, 100, 0, 3, 0, 108, 0, 121, 0, 14, 0, 15, 0, 33, 0, 32, 0, 96, 0, 120, 0, 21, 0, 3, 0, 19, 0, 18, 0, 24, 0, 120, 0, 21, 0, 31, 0, 10, 0, 2]} diff --git a/piper/piper/etc/test_sentences/test_pt.jsonl b/piper/piper/etc/test_sentences/test_pt.jsonl new file mode 100644 index 0000000..1604a00 --- /dev/null +++ b/piper/piper/etc/test_sentences/test_pt.jsonl @@ -0,0 +1,8 @@ +{"phoneme_ids":[1,0,33,0,141,0,44,0,3,0,120,0,14,0,92,0,59,0,23,0,100,0,120,0,21,0,92,0,21,0,96,0,8,0,3,0,32,0,50,0,141,0,25,0,15,0,120,0,18,0,74,0,44,0,3,0,28,0,121,0,33,0,28,0,33,0,24,0,50,0,92,0,59,0,25,0,120,0,18,0,74,0,44,0,32,0,73,0,3,0,17,0,121,0,73,0,26,0,33,0,25,0,21,0,26,0,120,0,14,0,17,0,35,0,3,0,120,0,14,0,92,0,59,0,23,0,100,0,17,0,50,0,34,0,120,0,61,0,104,0,50,0,8,0,3,0,61,0,3,0,33,0,141,0,44,0,3,0,19,0,121,0,18,0,26,0,120,0,27,0,25,0,73,0,26,0,35,0,3,0,120,0,54,0,28,0,32,0,21,0,23,0,35,0,3,0,21,0,3,0,25,0,73,0,32,0,121,0,21,0,33,0,92,0,33,0,24,0,120,0,54,0,108,0,21,0,23,0,100,0,3,0,23,0,73,0,3,0,31,0,121,0,18,0,28,0,120,0,14,0,92,0,50,0,3,0,50,0,3,0,24,0,120,0,33,0,108,0,3,0,17,0,100,0,3,0,31,0,120,0,54,0,24,0,3,0,120,0,18,0,74,0,44,0,3,0,31,0,18,0,100,0,3,0,96,0,28,0,120,0,61,0,32,0,88,0,100,0,3,0,23,0,121,0,33,0,44,0,32,0,120,0,21,0,26,0,33,0,100,0,3,0,23,0,35,0,120,0,50,0,141,0,44,0,17,0,35,0,3,0,100,0,3,0,31,0,120,0,54,0,24,0,3,0,15,0,88,0,120,0,21,0,104,0,50,0,3,0,31,0,120,0,27,0,15,0,88,0,73,0,3,0,66,0,121,0,33,0,32,0,120,0,21,0,23,0,33,0,24,0,50,0,108,0,3,0,17,0,73,0,3,0,120,0,14,0,66,0,35,0,50,0,3,0,31,0,121,0,33,0,96,0,28,0,120,0,18,0,74,0,44,0,31,0,50,0,108,0,3,0,26,0,100,0,3,0,120,0,14,0,88,0,10,0,2],"phonemes":["u","̃","ŋ"," ","ˈ","a","ɾ","ə","k","ʊ","ˈ","i","ɾ","i","ʃ",","," ","t","ɐ","̃","m","b","ˈ","e","ɪ","ŋ"," ","p","ˌ","u","p","u","l","ɐ","ɾ","ə","m","ˈ","e","ɪ","ŋ","t","ɨ"," ","d","ˌ","ɨ","n","u","m","i","n","ˈ","a","d","w"," ","ˈ","a","ɾ","ə","k","ʊ","d","ɐ","v","ˈ","ɛ","ʎ","ɐ",","," ","ɛ"," ","u","̃","ŋ"," ","f","ˌ","e","n","ˈ","o","m","ɨ","n","w"," ","ˈ","ɔ","p","t","i","k","w"," ","i"," ","m","ɨ","t","ˌ","i","u","ɾ","u","l","ˈ","ɔ","ʒ","i","k","ʊ"," ","k","ɨ"," ","s","ˌ","e","p","ˈ","a","ɾ","ɐ"," ","ɐ"," ","l","ˈ","u","ʒ"," ","d","ʊ"," ","s","ˈ","ɔ","l"," ","ˈ","e","ɪ","ŋ"," ","s","e","ʊ"," ","ʃ","p","ˈ","ɛ","t","ɹ","ʊ"," ","k","ˌ","u","ŋ","t","ˈ","i","n","u","ʊ"," ","k","w","ˈ","ɐ","̃","ŋ","d","w"," ","ʊ"," ","s","ˈ","ɔ","l"," ","b","ɹ","ˈ","i","ʎ","ɐ"," ","s","ˈ","o","b","ɹ","ɨ"," ","ɡ","ˌ","u","t","ˈ","i","k","u","l","ɐ","ʒ"," ","d","ɨ"," ","ˈ","a","ɡ","w","ɐ"," ","s","ˌ","u","ʃ","p","ˈ","e","ɪ","ŋ","s","ɐ","ʒ"," ","n","ʊ"," ","ˈ","a","ɹ","."],"processed_text":"Um arco-íris, também popularmente denominado arco-da-velha, é um fenômeno óptico e meteorológico que separa a luz do sol em seu espectro contínuo quando o sol brilha sobre gotículas de água suspensas no ar.","text":"Um arco-íris, também popularmente denominado arco-da-velha, é um fenômeno óptico e meteorológico que separa a luz do sol em seu espectro contínuo quando o sol brilha sobre gotículas de água suspensas no ar."} +{"phoneme_ids":[1,0,61,0,3,0,33,0,141,0,44,0,3,0,120,0,14,0,92,0,59,0,23,0,100,0,3,0,25,0,121,0,33,0,35,0,32,0,21,0,23,0,121,0,33,0,24,0,33,0,92,0,120,0,21,0,17,0,100,0,3,0,23,0,120,0,27,0,25,0,3,0,100,0,3,0,34,0,121,0,18,0,92,0,59,0,25,0,120,0,18,0,104,0,35,0,3,0,120,0,18,0,74,0,44,0,3,0,31,0,18,0,100,0,3,0,121,0,18,0,96,0,32,0,73,0,92,0,21,0,120,0,27,0,88,0,3,0,21,0,3,0,100,0,3,0,34,0,121,0,21,0,33,0,24,0,120,0,18,0,32,0,50,0,3,0,120,0,18,0,74,0,44,0,3,0,31,0,18,0,100,0,3,0,121,0,21,0,44,0,32,0,73,0,92,0,21,0,120,0,27,0,88,0,10,0,2],"phonemes":["ɛ"," ","u","̃","ŋ"," ","ˈ","a","ɾ","ə","k","ʊ"," ","m","ˌ","u","w","t","i","k","ˌ","u","l","u","ɾ","ˈ","i","d","ʊ"," ","k","ˈ","o","m"," ","ʊ"," ","v","ˌ","e","ɾ","ə","m","ˈ","e","ʎ","w"," ","ˈ","e","ɪ","ŋ"," ","s","e","ʊ"," ","ˌ","e","ʃ","t","ɨ","ɾ","i","ˈ","o","ɹ"," ","i"," ","ʊ"," ","v","ˌ","i","u","l","ˈ","e","t","ɐ"," ","ˈ","e","ɪ","ŋ"," ","s","e","ʊ"," ","ˌ","i","ŋ","t","ɨ","ɾ","i","ˈ","o","ɹ","."],"processed_text":"É um arco multicolorido com o vermelho em seu exterior e o violeta em seu interior.","text":"É um arco multicolorido com o vermelho em seu exterior e o violeta em seu interior."} +{"phoneme_ids":[1,0,28,0,33,0,88,0,3,0,31,0,73,0,88,0,3,0,33,0,141,0,44,0,3,0,96,0,28,0,120,0,61,0,32,0,88,0,100,0,3,0,17,0,73,0,3,0,17,0,121,0,21,0,96,0,28,0,73,0,92,0,59,0,31,0,120,0,50,0,141,0,100,0,141,0,3,0,17,0,50,0,3,0,24,0,120,0,33,0,108,0,3,0,15,0,88,0,120,0,50,0,141,0,44,0,23,0,50,0,8,0,3,0,33,0,3,0,120,0,14,0,92,0,59,0,23,0,100,0,120,0,21,0,92,0,21,0,96,0,3,0,23,0,33,0,44,0,32,0,120,0,18,0,74,0,44,0,3,0,121,0,33,0,25,0,50,0,3,0,23,0,35,0,121,0,50,0,141,0,44,0,32,0,21,0,17,0,120,0,14,0,17,0,3,0,121,0,21,0,44,0,19,0,21,0,26,0,120,0,21,0,32,0,50,0,3,0,17,0,73,0,3,0,23,0,120,0,27,0,92,0,73,0,96,0,3,0,31,0,120,0,18,0,74,0,44,0,3,0,23,0,35,0,121,0,51,0,24,0,23,0,121,0,61,0,88,0,3,0,17,0,121,0,73,0,24,0,21,0,25,0,121,0,21,0,32,0,50,0,31,0,120,0,50,0,141,0,100,0,141,0,3,0,120,0,18,0,74,0,44,0,32,0,88,0,73,0,3,0,120,0,18,0,24,0,50,0,96,0,10,0,2],"phonemes":["p","u","ɹ"," ","s","ɨ","ɹ"," ","u","̃","ŋ"," ","ʃ","p","ˈ","ɛ","t","ɹ","ʊ"," ","d","ɨ"," ","d","ˌ","i","ʃ","p","ɨ","ɾ","ə","s","ˈ","ɐ","̃","ʊ","̃"," ","d","ɐ"," ","l","ˈ","u","ʒ"," ","b","ɹ","ˈ","ɐ","̃","ŋ","k","ɐ",","," ","u"," ","ˈ","a","ɾ","ə","k","ʊ","ˈ","i","ɾ","i","ʃ"," ","k","u","ŋ","t","ˈ","e","ɪ","ŋ"," ","ˌ","u","m","ɐ"," ","k","w","ˌ","ɐ","̃","ŋ","t","i","d","ˈ","a","d"," ","ˌ","i","ŋ","f","i","n","ˈ","i","t","ɐ"," ","d","ɨ"," ","k","ˈ","o","ɾ","ɨ","ʃ"," ","s","ˈ","e","ɪ","ŋ"," ","k","w","ˌ","ɑ","l","k","ˌ","ɛ","ɹ"," ","d","ˌ","ɨ","l","i","m","ˌ","i","t","ɐ","s","ˈ","ɐ","̃","ʊ","̃"," ","ˈ","e","ɪ","ŋ","t","ɹ","ɨ"," ","ˈ","e","l","ɐ","ʃ","."],"processed_text":"Por ser um espectro de dispersão da luz branca, o arco-íris contém uma quantidade infinita de cores sem qualquer delimitação entre elas.","text":"Por ser um espectro de dispersão da luz branca, o arco-íris contém uma quantidade infinita de cores sem qualquer delimitação entre elas."} +{"phoneme_ids":[1,0,17,0,121,0,18,0,34,0,120,0,21,0,17,0,35,0,3,0,121,0,14,0,122,0,3,0,26,0,121,0,18,0,31,0,73,0,31,0,21,0,17,0,120,0,14,0,17,0,73,0,3,0,121,0,33,0,25,0,120,0,50,0,141,0,26,0,50,0,3,0,17,0,73,0,3,0,23,0,24,0,121,0,50,0,31,0,21,0,19,0,121,0,21,0,23,0,50,0,31,0,120,0,50,0,141,0,100,0,141,0,3,0,17,0,100,0,96,0,3,0,19,0,121,0,18,0,26,0,120,0,27,0,25,0,73,0,26,0,100,0,108,0,3,0,17,0,50,0,3,0,26,0,121,0,50,0,32,0,33,0,92,0,120,0,18,0,38,0,50,0,8,0,3,0,50,0,3,0,23,0,121,0,50,0,28,0,50,0,31,0,21,0,17,0,120,0,14,0,17,0,73,0,3,0,19,0,121,0,21,0,26,0,120,0,21,0,32,0,50,0,3,0,17,0,73,0,3,0,17,0,121,0,21,0,96,0,32,0,21,0,44,0,31,0,120,0,50,0,141,0,100,0,141,0,3,0,17,0,73,0,3,0,23,0,120,0,27,0,92,0,73,0,96,0,3,0,28,0,120,0,18,0,24,0,50,0,3,0,34,0,21,0,38,0,120,0,50,0,141,0,100,0,141,0,3,0,121,0,33,0,25,0,120,0,50,0,141,0,26,0,50,0,3,0,21,0,3,0,28,0,33,0,88,0,3,0,23,0,73,0,96,0,32,0,120,0,27,0,141,0,22,0,108,0,3,0,17,0,121,0,21,0,17,0,120,0,14,0,32,0,21,0,23,0,50,0,96,0,8,0,3,0,33,0,3,0,120,0,14,0,92,0,59,0,23,0,100,0,120,0,21,0,92,0,21,0,38,0,3,0,61,0,3,0,25,0,120,0,14,0,74,0,96,0,3,0,23,0,121,0,33,0,82,0,73,0,31,0,120,0,21,0,17,0,100,0,3,0,28,0,33,0,88,0,3,0,121,0,33,0,25,0,50,0,3,0,31,0,121,0,21,0,25,0,28,0,24,0,21,0,19,0,121,0,21,0,23,0,50,0,31,0,120,0,50,0,141,0,100,0,141,0,3,0,23,0,88,0,121,0,21,0,120,0,14,0,17,0,50,0,3,0,23,0,121,0,33,0,35,0,32,0,33,0,92,0,121,0,51,0,24,0,25,0,120,0,18,0,74,0,44,0,32,0,73,0,3,0,23,0,73,0,3,0,94,0,121,0,18,0,38,0,120,0,33,0,25,0,73,0,3,0,33,0,3,0,96,0,28,0,120,0,61,0,32,0,88,0,35,0,3,0,120,0,18,0,74,0,44,0,3,0,31,0,120,0,61,0,32,0,73,0,3,0,23,0,120,0,27,0,92,0,73,0,108,0,3,0,26,0,50,0,3,0,31,0,121,0,18,0,66,0,120,0,21,0,44,0,32,0,73,0,3,0,120,0,54,0,92,0,59,0,17,0,18,0,74,0,44,0,11,0,3,0,34,0,121,0,18,0,92,0,59,0,25,0,120,0,18,0,104,0,100,0,8,0,3,0,24,0,121,0,50,0,92,0,120,0,50,0,141,0,44,0,108,0,50,0,8,0,3,0,50,0,25,0,50,0,92,0,120,0,61,0,24,0,100,0,8,0,3,0,34,0,120,0,18,0,92,0,59,0,17,0,73,0,8,0,3,0,50,0,38,0,120,0,33,0,35,0,8,0,3,0,50,0,141,0,26,0,120,0,21,0,24,0,3,0,21,0,3,0,34,0,121,0,21,0,33,0,24,0,120,0,18,0,32,0,50,0,10,0,2],"phonemes":["d","ˌ","e","v","ˈ","i","d","w"," ","ˌ","a","ː"," ","n","ˌ","e","s","ɨ","s","i","d","ˈ","a","d","ɨ"," ","ˌ","u","m","ˈ","ɐ","̃","n","ɐ"," ","d","ɨ"," ","k","l","ˌ","ɐ","s","i","f","ˌ","i","k","ɐ","s","ˈ","ɐ","̃","ʊ","̃"," ","d","ʊ","ʃ"," ","f","ˌ","e","n","ˈ","o","m","ɨ","n","ʊ","ʒ"," ","d","ɐ"," ","n","ˌ","ɐ","t","u","ɾ","ˈ","e","z","ɐ",","," ","ɐ"," ","k","ˌ","ɐ","p","ɐ","s","i","d","ˈ","a","d","ɨ"," ","f","ˌ","i","n","ˈ","i","t","ɐ"," ","d","ɨ"," ","d","ˌ","i","ʃ","t","i","ŋ","s","ˈ","ɐ","̃","ʊ","̃"," ","d","ɨ"," ","k","ˈ","o","ɾ","ɨ","ʃ"," ","p","ˈ","e","l","ɐ"," ","v","i","z","ˈ","ɐ","̃","ʊ","̃"," ","ˌ","u","m","ˈ","ɐ","̃","n","ɐ"," ","i"," ","p","u","ɹ"," ","k","ɨ","ʃ","t","ˈ","o","̃","j","ʒ"," ","d","ˌ","i","d","ˈ","a","t","i","k","ɐ","ʃ",","," ","u"," ","ˈ","a","ɾ","ə","k","ʊ","ˈ","i","ɾ","i","z"," ","ɛ"," ","m","ˈ","a","ɪ","ʃ"," ","k","ˌ","u","ɲ","ɨ","s","ˈ","i","d","ʊ"," ","p","u","ɹ"," ","ˌ","u","m","ɐ"," ","s","ˌ","i","m","p","l","i","f","ˌ","i","k","ɐ","s","ˈ","ɐ","̃","ʊ","̃"," ","k","ɹ","ˌ","i","ˈ","a","d","ɐ"," ","k","ˌ","u","w","t","u","ɾ","ˌ","ɑ","l","m","ˈ","e","ɪ","ŋ","t","ɨ"," ","k","ɨ"," ","ʁ","ˌ","e","z","ˈ","u","m","ɨ"," ","u"," ","ʃ","p","ˈ","ɛ","t","ɹ","w"," ","ˈ","e","ɪ","ŋ"," ","s","ˈ","ɛ","t","ɨ"," ","k","ˈ","o","ɾ","ɨ","ʒ"," ","n","ɐ"," ","s","ˌ","e","ɡ","ˈ","i","ŋ","t","ɨ"," ","ˈ","ɔ","ɾ","ə","d","e","ɪ","ŋ",":"," ","v","ˌ","e","ɾ","ə","m","ˈ","e","ʎ","ʊ",","," ","l","ˌ","ɐ","ɾ","ˈ","ɐ","̃","ŋ","ʒ","ɐ",","," ","ɐ","m","ɐ","ɾ","ˈ","ɛ","l","ʊ",","," ","v","ˈ","e","ɾ","ə","d","ɨ",","," ","ɐ","z","ˈ","u","w",","," ","ɐ","̃","n","ˈ","i","l"," ","i"," ","v","ˌ","i","u","l","ˈ","e","t","ɐ","."],"processed_text":"Devido à necessidade humana de classificação dos fenômenos da natureza, a capacidade finita de distinção de cores pela visão humana e por questões didáticas, o arco-íris é mais conhecido por uma simplificação criada culturalmente que resume o espectro em sete cores na seguinte ordem: vermelho, laranja, amarelo, verde, azul, anil e violeta.","text":"Devido à necessidade humana de classificação dos fenômenos da natureza, a capacidade finita de distinção de cores pela visão humana e por questões didáticas, o arco-íris é mais conhecido por uma simplificação criada culturalmente que resume o espectro em sete cores na seguinte ordem: vermelho, laranja, amarelo, verde, azul, anil e violeta."} +{"phoneme_ids":[1,0,32,0,120,0,51,0,24,0,3,0,31,0,121,0,21,0,25,0,28,0,24,0,21,0,19,0,121,0,21,0,23,0,50,0,31,0,120,0,50,0,141,0,100,0,141,0,3,0,19,0,27,0,74,0,3,0,28,0,88,0,121,0,33,0,28,0,120,0,54,0,96,0,32,0,50,0,3,0,28,0,88,0,121,0,21,0,25,0,18,0,74,0,92,0,50,0,25,0,120,0,18,0,74,0,44,0,32,0,73,0,3,0,28,0,33,0,88,0,3,0,21,0,38,0,120,0,50,0,23,0,3,0,26,0,120,0,74,0,33,0,32,0,27,0,44,0,8,0,3,0,23,0,73,0,3,0,17,0,121,0,73,0,31,0,21,0,17,0,120,0,21,0,100,0,3,0,26,0,121,0,33,0,25,0,21,0,120,0,14,0,88,0,3,0,121,0,50,0,28,0,120,0,18,0,26,0,50,0,96,0,3,0,31,0,120,0,21,0,44,0,23,0,100,0,3,0,23,0,120,0,27,0,92,0,73,0,38,0,3,0,21,0,3,0,17,0,73,0,28,0,120,0,27,0,74,0,38,0,3,0,121,0,50,0,17,0,21,0,31,0,121,0,21,0,33,0,26,0,120,0,27,0,35,0,3,0,25,0,120,0,14,0,74,0,108,0,3,0,17,0,120,0,33,0,50,0,38,0,3,0,121,0,50,0,28,0,120,0,18,0,26,0,50,0,96,0,3,0,28,0,121,0,50,0,92,0,50,0,3,0,19,0,50,0,38,0,121,0,18,0,88,0,3,0,50,0,26,0,121,0,50,0,24,0,33,0,108,0,120,0,21,0,50,0,3,0,23,0,120,0,27,0,25,0,3,0,50,0,96,0,3,0,31,0,120,0,61,0,32,0,73,0,3,0,26,0,120,0,54,0,32,0,50,0,108,0,3,0,25,0,121,0,33,0,38,0,21,0,23,0,120,0,14,0,74,0,96,0,8,0,3,0,33,0,96,0,3,0,31,0,120,0,61,0,32,0,73,0,3,0,17,0,120,0,21,0,50,0,108,0,3,0,17,0,50,0,3,0,31,0,121,0,18,0,25,0,120,0,50,0,141,0,26,0,50,0,3,0,21,0,3,0,33,0,96,0,3,0,31,0,120,0,61,0,32,0,73,0,3,0,121,0,54,0,15,0,108,0,120,0,61,0,32,0,100,0,108,0,3,0,17,0,100,0,3,0,31,0,121,0,21,0,96,0,32,0,120,0,18,0,25,0,50,0,3,0,31,0,33,0,24,0,120,0,14,0,88,0,3,0,23,0,121,0,33,0,82,0,73,0,31,0,120,0,21,0,17,0,100,0,38,0,3,0,121,0,14,0,122,0,3,0,120,0,61,0,28,0,33,0,23,0,50,0,10,0,2],"phonemes":["t","ˈ","ɑ","l"," ","s","ˌ","i","m","p","l","i","f","ˌ","i","k","ɐ","s","ˈ","ɐ","̃","ʊ","̃"," ","f","o","ɪ"," ","p","ɹ","ˌ","u","p","ˈ","ɔ","ʃ","t","ɐ"," ","p","ɹ","ˌ","i","m","e","ɪ","ɾ","ɐ","m","ˈ","e","ɪ","ŋ","t","ɨ"," ","p","u","ɹ"," ","i","z","ˈ","ɐ","k"," ","n","ˈ","ɪ","u","t","o","ŋ",","," ","k","ɨ"," ","d","ˌ","ɨ","s","i","d","ˈ","i","ʊ"," ","n","ˌ","u","m","i","ˈ","a","ɹ"," ","ˌ","ɐ","p","ˈ","e","n","ɐ","ʃ"," ","s","ˈ","i","ŋ","k","ʊ"," ","k","ˈ","o","ɾ","ɨ","z"," ","i"," ","d","ɨ","p","ˈ","o","ɪ","z"," ","ˌ","ɐ","d","i","s","ˌ","i","u","n","ˈ","o","w"," ","m","ˈ","a","ɪ","ʒ"," ","d","ˈ","u","ɐ","z"," ","ˌ","ɐ","p","ˈ","e","n","ɐ","ʃ"," ","p","ˌ","ɐ","ɾ","ɐ"," ","f","ɐ","z","ˌ","e","ɹ"," ","ɐ","n","ˌ","ɐ","l","u","ʒ","ˈ","i","ɐ"," ","k","ˈ","o","m"," ","ɐ","ʃ"," ","s","ˈ","ɛ","t","ɨ"," ","n","ˈ","ɔ","t","ɐ","ʒ"," ","m","ˌ","u","z","i","k","ˈ","a","ɪ","ʃ",","," ","u","ʃ"," ","s","ˈ","ɛ","t","ɨ"," ","d","ˈ","i","ɐ","ʒ"," ","d","ɐ"," ","s","ˌ","e","m","ˈ","ɐ","̃","n","ɐ"," ","i"," ","u","ʃ"," ","s","ˈ","ɛ","t","ɨ"," ","ˌ","ɔ","b","ʒ","ˈ","ɛ","t","ʊ","ʒ"," ","d","ʊ"," ","s","ˌ","i","ʃ","t","ˈ","e","m","ɐ"," ","s","u","l","ˈ","a","ɹ"," ","k","ˌ","u","ɲ","ɨ","s","ˈ","i","d","ʊ","z"," ","ˌ","a","ː"," ","ˈ","ɛ","p","u","k","ɐ","."],"processed_text":"Tal simplificação foi proposta primeiramente por Isaac Newton, que decidiu nomear apenas cinco cores e depois adicionou mais duas apenas para fazer analogia com as sete notas musicais, os sete dias da semana e os sete objetos do sistema solar conhecidos à época.","text":"Tal simplificação foi proposta primeiramente por Isaac Newton, que decidiu nomear apenas cinco cores e depois adicionou mais duas apenas para fazer analogia com as sete notas musicais, os sete dias da semana e os sete objetos do sistema solar conhecidos à época."} +{"phoneme_ids":[1,0,28,0,121,0,50,0,92,0,50,0,3,0,121,0,21,0,44,0,19,0,33,0,92,0,59,0,25,0,50,0,31,0,120,0,27,0,141,0,22,0,96,0,3,0,31,0,120,0,27,0,15,0,88,0,73,0,3,0,33,0,3,0,96,0,28,0,120,0,61,0,32,0,88,0,100,0,3,0,17,0,73,0,3,0,23,0,120,0,27,0,92,0,73,0,108,0,3,0,17,0,100,0,3,0,120,0,14,0,92,0,59,0,23,0,100,0,120,0,21,0,92,0,21,0,96,0,8,0,3,0,34,0,120,0,18,0,108,0,50,0,3,0,32,0,50,0,141,0,25,0,15,0,120,0,18,0,74,0,44,0,3,0,33,0,3,0,121,0,50,0,92,0,59,0,32,0,120,0,21,0,66,0,100,0,3,0,31,0,120,0,27,0,15,0,88,0,73,0,3,0,23,0,120,0,27,0,92,0,73,0,96,0,10,0,2],"phonemes":["p","ˌ","ɐ","ɾ","ɐ"," ","ˌ","i","ŋ","f","u","ɾ","ə","m","ɐ","s","ˈ","o","̃","j","ʃ"," ","s","ˈ","o","b","ɹ","ɨ"," ","u"," ","ʃ","p","ˈ","ɛ","t","ɹ","ʊ"," ","d","ɨ"," ","k","ˈ","o","ɾ","ɨ","ʒ"," ","d","ʊ"," ","ˈ","a","ɾ","ə","k","ʊ","ˈ","i","ɾ","i","ʃ",","," ","v","ˈ","e","ʒ","ɐ"," ","t","ɐ","̃","m","b","ˈ","e","ɪ","ŋ"," ","u"," ","ˌ","ɐ","ɾ","ə","t","ˈ","i","ɡ","ʊ"," ","s","ˈ","o","b","ɹ","ɨ"," ","k","ˈ","o","ɾ","ɨ","ʃ","."],"processed_text":"Para informações sobre o espectro de cores do arco-íris, veja também o artigo sobre cores.","text":"Para informações sobre o espectro de cores do arco-íris, veja também o artigo sobre cores."} +{"phoneme_ids":[1,0,24,0,35,0,120,0,21,0,38,0,3,0,121,0,50,0,92,0,59,0,66,0,33,0,120,0,21,0,3,0,121,0,14,0,122,0,3,0,108,0,120,0,33,0,24,0,22,0,50,0,3,0,23,0,73,0,3,0,15,0,88,0,50,0,31,0,120,0,27,0,141,0,22,0,96,0,8,0,3,0,19,0,120,0,61,0,8,0,3,0,96,0,120,0,14,0,8,0,3,0,120,0,54,0,23,0,31,0,21,0,17,0,100,0,8,0,3,0,28,0,120,0,27,0,88,0,8,0,3,0,38,0,120,0,50,0,141,0,44,0,66,0,50,0,141,0,100,0,141,0,3,0,121,0,61,0,92,0,50,0,141,0,100,0,141,0,3,0,28,0,121,0,50,0,24,0,120,0,14,0,34,0,88,0,50,0,108,0,3,0,17,0,100,0,3,0,28,0,121,0,33,0,92,0,59,0,32,0,33,0,66,0,120,0,18,0,96,0,10,0,2],"phonemes":["l","w","ˈ","i","z"," ","ˌ","ɐ","ɾ","ə","ɡ","u","ˈ","i"," ","ˌ","a","ː"," ","ʒ","ˈ","u","l","j","ɐ"," ","k","ɨ"," ","b","ɹ","ɐ","s","ˈ","o","̃","j","ʃ",","," ","f","ˈ","ɛ",","," ","ʃ","ˈ","a",","," ","ˈ","ɔ","k","s","i","d","ʊ",","," ","p","ˈ","o","ɹ",","," ","z","ˈ","ɐ","̃","ŋ","ɡ","ɐ","̃","ʊ","̃"," ","ˌ","ɛ","ɾ","ɐ","̃","ʊ","̃"," ","p","ˌ","ɐ","l","ˈ","a","v","ɹ","ɐ","ʒ"," ","d","ʊ"," ","p","ˌ","u","ɾ","ə","t","u","ɡ","ˈ","e","ʃ","."],"processed_text":"Luís argüia à Júlia que «brações, fé, chá, óxido, pôr, zângão» eram palavras do português.","text":"Luís argüia à Júlia que «brações, fé, chá, óxido, pôr, zângão» eram palavras do português."} +{"phoneme_ids":[1,0,121,0,14,0,122,0,3,0,26,0,120,0,27,0,74,0,32,0,73,0,8,0,3,0,34,0,33,0,34,0,120,0,27,0,3,0,23,0,120,0,27,0,35,0,121,0,51,0,24,0,31,0,23,0,21,0,3,0,34,0,120,0,18,0,3,0,33,0,3,0,120,0,21,0,25,0,50,0,141,0,3,0,23,0,50,0,120,0,21,0,88,0,3,0,26,0,100,0,3,0,28,0,120,0,61,0,3,0,17,0,100,0,3,0,28,0,121,0,21,0,44,0,66,0,33,0,120,0,21,0,44,0,3,0,23,0,121,0,18,0,74,0,96,0,120,0,27,0,38,0,35,0,3,0,21,0,3,0,34,0,33,0,34,0,120,0,54,0,3,0,28,0,120,0,27,0,141,0,22,0,3,0,121,0,50,0,31,0,120,0,33,0,23,0,50,0,88,0,3,0,26,0,100,0,3,0,96,0,120,0,14,0,3,0,17,0,73,0,3,0,32,0,120,0,50,0,141,0,25,0,50,0,92,0,50,0,108,0,3,0,17,0,100,0,3,0,108,0,121,0,50,0,15,0,33,0,32,0,120,0,21,0,3,0,19,0,73,0,24,0,120,0,21,0,96,0,10,0,2],"phonemes":["ˌ","a","ː"," ","n","ˈ","o","ɪ","t","ɨ",","," ","v","u","v","ˈ","o"," ","k","ˈ","o","w","ˌ","ɑ","l","s","k","i"," ","v","ˈ","e"," ","u"," ","ˈ","i","m","ɐ","̃"," ","k","ɐ","ˈ","i","ɹ"," ","n","ʊ"," ","p","ˈ","ɛ"," ","d","ʊ"," ","p","ˌ","i","ŋ","ɡ","u","ˈ","i","ŋ"," ","k","ˌ","e","ɪ","ʃ","ˈ","o","z","w"," ","i"," ","v","u","v","ˈ","ɔ"," ","p","ˈ","o","̃","j"," ","ˌ","ɐ","s","ˈ","u","k","ɐ","ɹ"," ","n","ʊ"," ","ʃ","ˈ","a"," ","d","ɨ"," ","t","ˈ","ɐ","̃","m","ɐ","ɾ","ɐ","ʒ"," ","d","ʊ"," ","ʒ","ˌ","ɐ","b","u","t","ˈ","i"," ","f","ɨ","l","ˈ","i","ʃ","."],"processed_text":"À noite, vovô Kowalsky vê o ímã cair no pé do pingüim queixoso e vovó põe açúcar no chá de tâmaras do jabuti feliz.","text":"À noite, vovô Kowalsky vê o ímã cair no pé do pingüim queixoso e vovó põe açúcar no chá de tâmaras do jabuti feliz."} diff --git a/piper/piper/etc/test_sentences/test_ro.jsonl b/piper/piper/etc/test_sentences/test_ro.jsonl new file mode 100644 index 0000000..3d1d299 --- /dev/null +++ b/piper/piper/etc/test_sentences/test_ro.jsonl @@ -0,0 +1,4 @@ +{"phoneme_ids":[1,0,23,0,121,0,33,0,30,0,23,0,33,0,15,0,120,0,18,0,33,0,24,0,3,0,22,0,121,0,18,0,31,0,32,0,18,0,3,0,33,0,26,0,3,0,19,0,121,0,18,0,26,0,27,0,25,0,120,0,18,0,26,0,3,0,120,0,27,0,28,0,32,0,21,0,23,0,3,0,96,0,21,0,3,0,25,0,121,0,18,0,32,0,18,0,27,0,92,0,27,0,24,0,120,0,27,0,17,0,108,0,21,0,23,0,3,0,121,0,14,0,32,0,25,0,27,0,31,0,19,0,120,0,18,0,92,0,21,0,23,0,3,0,23,0,121,0,14,0,92,0,18,0,3,0,31,0,18,0,3,0,25,0,121,0,14,0,26,0,21,0,19,0,120,0,18,0,31,0,32,0,59,0,3,0,28,0,30,0,21,0,26,0,3,0,121,0,14,0,28,0,14,0,92,0,120,0,21,0,32,0,31,0,22,0,14,0,3,0,28,0,18,0,3,0,32,0,96,0,120,0,18,0,30,0,3,0,14,0,3,0,121,0,33,0,26,0,33,0,121,0,21,0,3,0,31,0,28,0,120,0,18,0,23,0,32,0,30,0,33,0,3,0,17,0,18,0,3,0,19,0,120,0,27,0,30,0,25,0,14,0,3,0,121,0,33,0,26,0,33,0,74,0,3,0,120,0,14,0,30,0,23,0,3,0,23,0,121,0,27,0,24,0,27,0,92,0,120,0,14,0,32,0,3,0,14,0,32,0,120,0,33,0,26,0,32,0,96,0,119,0,3,0,23,0,73,0,26,0,17,0,3,0,24,0,33,0,25,0,120,0,21,0,26,0,14,0,3,0,31,0,54,0,14,0,92,0,120,0,18,0,24,0,33,0,74,0,3,0,31,0,18,0,3,0,30,0,18,0,19,0,30,0,120,0,14,0,23,0,32,0,59,0,3,0,73,0,26,0,3,0,28,0,121,0,21,0,23,0,59,0,32,0,120,0,33,0,30,0,21,0,24,0,18,0,3,0,17,0,18,0,3,0,120,0,14,0,28,0,59,0,3,0,17,0,21,0,26,0,3,0,14,0,32,0,25,0,120,0,27,0,31,0,19,0,18,0,92,0,121,0,59,0,10,0,2],"phonemes":["k","ˌ","u","r","k","u","b","ˈ","e","u","l"," ","j","ˌ","e","s","t","e"," ","u","n"," ","f","ˌ","e","n","o","m","ˈ","e","n"," ","ˈ","o","p","t","i","k"," ","ʃ","i"," ","m","ˌ","e","t","e","o","ɾ","o","l","ˈ","o","d","ʒ","i","k"," ","ˌ","a","t","m","o","s","f","ˈ","e","ɾ","i","k"," ","k","ˌ","a","ɾ","e"," ","s","e"," ","m","ˌ","a","n","i","f","ˈ","e","s","t","ə"," ","p","r","i","n"," ","ˌ","a","p","a","ɾ","ˈ","i","t","s","j","a"," ","p","e"," ","t","ʃ","ˈ","e","r"," ","a"," ","ˌ","u","n","u","ˌ","i"," ","s","p","ˈ","e","k","t","r","u"," ","d","e"," ","f","ˈ","o","r","m","a"," ","ˌ","u","n","u","ɪ"," ","ˈ","a","r","k"," ","k","ˌ","o","l","o","ɾ","ˈ","a","t"," ","a","t","ˈ","u","n","t","ʃ","ʲ"," ","k","ɨ","n","d"," ","l","u","m","ˈ","i","n","a"," ","s","ɔ","a","ɾ","ˈ","e","l","u","ɪ"," ","s","e"," ","r","e","f","r","ˈ","a","k","t","ə"," ","ɨ","n"," ","p","ˌ","i","k","ə","t","ˈ","u","r","i","l","e"," ","d","e"," ","ˈ","a","p","ə"," ","d","i","n"," ","a","t","m","ˈ","o","s","f","e","ɾ","ˌ","ə","."],"processed_text":"Curcubeul este un fenomen optic și meteorologic atmosferic care se manifestă prin apariția pe cer a unui spectru de forma unui arc colorat atunci când lumina soarelui se refractă în picăturile de apă din atmosferă.","text":"Curcubeul este un fenomen optic și meteorologic atmosferic care se manifestă prin apariția pe cer a unui spectru de forma unui arc colorat atunci când lumina soarelui se refractă în picăturile de apă din atmosferă."} +{"phoneme_ids":[1,0,17,0,18,0,3,0,32,0,96,0,18,0,24,0,18,0,3,0,25,0,14,0,74,0,3,0,25,0,120,0,33,0,24,0,32,0,18,0,3,0,121,0,27,0,92,0,119,0,119,0,3,0,23,0,121,0,33,0,30,0,23,0,33,0,15,0,120,0,18,0,33,0,24,0,3,0,31,0,18,0,3,0,27,0,15,0,31,0,120,0,18,0,30,0,34,0,59,0,3,0,17,0,120,0,33,0,28,0,59,0,3,0,28,0,24,0,120,0,54,0,14,0,22,0,18,0,8,0,3,0,23,0,73,0,26,0,17,0,3,0,31,0,54,0,14,0,92,0,120,0,18,0,24,0,18,0,3,0,22,0,121,0,18,0,31,0,32,0,18,0,3,0,121,0,14,0,28,0,30,0,27,0,28,0,22,0,120,0,14,0,32,0,3,0,17,0,18,0,3,0,121,0,27,0,92,0,21,0,38,0,120,0,27,0,26,0,32,0,10,0,2],"phonemes":["d","e"," ","t","ʃ","e","l","e"," ","m","a","ɪ"," ","m","ˈ","u","l","t","e"," ","ˌ","o","ɾ","ʲ","ʲ"," ","k","ˌ","u","r","k","u","b","ˈ","e","u","l"," ","s","e"," ","o","b","s","ˈ","e","r","v","ə"," ","d","ˈ","u","p","ə"," ","p","l","ˈ","ɔ","a","j","e",","," ","k","ɨ","n","d"," ","s","ɔ","a","ɾ","ˈ","e","l","e"," ","j","ˌ","e","s","t","e"," ","ˌ","a","p","r","o","p","j","ˈ","a","t"," ","d","e"," ","ˌ","o","ɾ","i","z","ˈ","o","n","t","."],"processed_text":"De cele mai multe ori curcubeul se observă după ploaie, când soarele este apropiat de orizont.","text":"De cele mai multe ori curcubeul se observă după ploaie, când soarele este apropiat de orizont."} +{"phoneme_ids":[1,0,73,0,26,0,3,0,23,0,27,0,26,0,17,0,120,0,21,0,32,0,31,0,21,0,74,0,3,0,15,0,120,0,33,0,26,0,18,0,3,0,17,0,18,0,3,0,24,0,33,0,25,0,120,0,21,0,26,0,59,0,8,0,3,0,73,0,26,0,3,0,19,0,120,0,14,0,32,0,31,0,14,0,3,0,28,0,121,0,18,0,92,0,18,0,32,0,120,0,18,0,24,0,33,0,74,0,3,0,17,0,18,0,3,0,28,0,24,0,120,0,54,0,14,0,22,0,18,0,8,0,3,0,33,0,26,0,3,0,23,0,121,0,33,0,30,0,23,0,33,0,15,0,120,0,18,0,100,0,3,0,31,0,121,0,18,0,23,0,33,0,26,0,17,0,120,0,14,0,30,0,3,0,22,0,121,0,18,0,31,0,32,0,18,0,3,0,34,0,21,0,38,0,120,0,21,0,15,0,21,0,24,0,3,0,17,0,18,0,14,0,31,0,120,0,33,0,28,0,30,0,14,0,3,0,23,0,121,0,33,0,30,0,23,0,33,0,15,0,120,0,18,0,33,0,24,0,33,0,74,0,3,0,28,0,30,0,121,0,21,0,26,0,32,0,96,0,21,0,28,0,120,0,14,0,24,0,10,0,2],"phonemes":["ɨ","n"," ","k","o","n","d","ˈ","i","t","s","i","ɪ"," ","b","ˈ","u","n","e"," ","d","e"," ","l","u","m","ˈ","i","n","ə",","," ","ɨ","n"," ","f","ˈ","a","t","s","a"," ","p","ˌ","e","ɾ","e","t","ˈ","e","l","u","ɪ"," ","d","e"," ","p","l","ˈ","ɔ","a","j","e",","," ","u","n"," ","k","ˌ","u","r","k","u","b","ˈ","e","ʊ"," ","s","ˌ","e","k","u","n","d","ˈ","a","r"," ","j","ˌ","e","s","t","e"," ","v","i","z","ˈ","i","b","i","l"," ","d","e","a","s","ˈ","u","p","r","a"," ","k","ˌ","u","r","k","u","b","ˈ","e","u","l","u","ɪ"," ","p","r","ˌ","i","n","t","ʃ","i","p","ˈ","a","l","."],"processed_text":"În condiții bune de lumină, în fața peretelui de ploaie, un curcubeu secundar este vizibil deasupra curcubeului principal.","text":"În condiții bune de lumină, în fața peretelui de ploaie, un curcubeu secundar este vizibil deasupra curcubeului principal."} +{"phoneme_ids":[1,0,14,0,32,0,96,0,121,0,18,0,31,0,32,0,14,0,3,0,22,0,121,0,18,0,31,0,32,0,18,0,3,0,25,0,14,0,74,0,3,0,31,0,24,0,120,0,14,0,15,0,3,0,17,0,21,0,26,0,3,0,23,0,14,0,120,0,33,0,38,0,14,0,3,0,17,0,120,0,33,0,15,0,24,0,18,0,74,0,3,0,30,0,18,0,19,0,24,0,120,0,18,0,23,0,31,0,21,0,74,0,3,0,14,0,3,0,24,0,33,0,25,0,120,0,21,0,26,0,21,0,74,0,3,0,73,0,26,0,3,0,28,0,121,0,21,0,23,0,59,0,32,0,120,0,33,0,30,0,21,0,24,0,18,0,3,0,17,0,18,0,3,0,120,0,14,0,28,0,59,0,3,0,96,0,21,0,3,0,121,0,14,0,92,0,18,0,3,0,27,0,3,0,31,0,18,0,23,0,34,0,120,0,18,0,26,0,32,0,31,0,59,0,3,0,17,0,18,0,3,0,23,0,33,0,24,0,120,0,27,0,92,0,119,0,119,0,3,0,27,0,28,0,120,0,33,0,31,0,59,0,10,0,2],"phonemes":["a","t","ʃ","ˌ","e","s","t","a"," ","j","ˌ","e","s","t","e"," ","m","a","ɪ"," ","s","l","ˈ","a","b"," ","d","i","n"," ","k","a","ˈ","u","z","a"," ","d","ˈ","u","b","l","e","ɪ"," ","r","e","f","l","ˈ","e","k","s","i","ɪ"," ","a"," ","l","u","m","ˈ","i","n","i","ɪ"," ","ɨ","n"," ","p","ˌ","i","k","ə","t","ˈ","u","r","i","l","e"," ","d","e"," ","ˈ","a","p","ə"," ","ʃ","i"," ","ˌ","a","ɾ","e"," ","o"," ","s","e","k","v","ˈ","e","n","t","s","ə"," ","d","e"," ","k","u","l","ˈ","o","ɾ","ʲ","ʲ"," ","o","p","ˈ","u","s","ə","."],"processed_text":"Acesta este mai slab din cauza dublei reflexii a luminii în picăturile de apă și are o secvență de culori opusă.","text":"Acesta este mai slab din cauza dublei reflexii a luminii în picăturile de apă și are o secvență de culori opusă."} diff --git a/piper/piper/etc/test_sentences/test_ru.jsonl b/piper/piper/etc/test_sentences/test_ru.jsonl new file mode 100644 index 0000000..a9d47e3 --- /dev/null +++ b/piper/piper/etc/test_sentences/test_ru.jsonl @@ -0,0 +1,6 @@ +{"phoneme_ids":[1,0,30,0,120,0,51,0,17,0,33,0,66,0,14,0,8,0,14,0,32,0,25,0,102,0,31,0,19,0,119,0,120,0,18,0,30,0,26,0,102,0,22,0,74,0,8,0,102,0,28,0,32,0,119,0,120,0,21,0,32,0,96,0,119,0,21,0,31,0,23,0,102,0,22,0,74,0,3,0,74,0,3,0,25,0,119,0,21,0,32,0,119,0,21,0,102,0,30,0,102,0,77,0,102,0,66,0,119,0,120,0,21,0,32,0,96,0,119,0,21,0,31,0,23,0,102,0,22,0,74,0,3,0,22,0,14,0,34,0,77,0,119,0,120,0,18,0,26,0,119,0,21,0,22,0,74,0,8,0,26,0,102,0,15,0,77,0,119,0,33,0,150,0,17,0,120,0,51,0,22,0,21,0,25,0,102,0,22,0,74,0,3,0,28,0,30,0,119,0,74,0,3,0,102,0,31,0,34,0,119,0,21,0,55,0,120,0,18,0,26,0,119,0,21,0,74,0,3,0,120,0,22,0,14,0,30,0,23,0,119,0,21,0,25,0,3,0,74,0,31,0,32,0,120,0,27,0,32,0,96,0,119,0,26,0,119,0,21,0,23,0,102,0,25,0,3,0,31,0,34,0,119,0,120,0,18,0,32,0,14,0,3,0,25,0,26,0,120,0,27,0,108,0,37,0,31,0,32,0,34,0,14,0,3,0,34,0,102,0,17,0,119,0,14,0,26,0,120,0,37,0,36,0,3,0,23,0,120,0,51,0,28,0,119,0,21,0,77,0,10,0,2],"phonemes":["r","ˈ","ɑ","d","u","ɡ","a",",","a","t","m","ʌ","s","f","ʲ","ˈ","e","r","n","ʌ","j","ɪ",",","ʌ","p","t","ʲ","ˈ","i","t","ʃ","ʲ","i","s","k","ʌ","j","ɪ"," ","ɪ"," ","m","ʲ","i","t","ʲ","i","ʌ","r","ʌ","ɭ","ʌ","ɡ","ʲ","ˈ","i","t","ʃ","ʲ","i","s","k","ʌ","j","ɪ"," ","j","a","v","ɭ","ʲ","ˈ","e","n","ʲ","i","j","ɪ",",","n","ʌ","b","ɭ","ʲ","u","\"","d","ˈ","ɑ","j","i","m","ʌ","j","ɪ"," ","p","r","ʲ","ɪ"," ","ʌ","s","v","ʲ","i","ɕ","ˈ","e","n","ʲ","i","ɪ"," ","ˈ","j","a","r","k","ʲ","i","m"," ","ɪ","s","t","ˈ","o","t","ʃ","ʲ","n","ʲ","i","k","ʌ","m"," ","s","v","ʲ","ˈ","e","t","a"," ","m","n","ˈ","o","ʒ","y","s","t","v","a"," ","v","ʌ","d","ʲ","a","n","ˈ","y","x"," ","k","ˈ","ɑ","p","ʲ","i","ɭ","."],"processed_text":"Радуга, атмосферное, оптическое и метеорологическое явление, наблюдаемое при освещении ярким источником света множества водяных капель.","text":"Радуга, атмосферное, оптическое и метеорологическое явление, наблюдаемое при освещении ярким источником света множества водяных капель."} +{"phoneme_ids":[1,0,30,0,120,0,51,0,17,0,33,0,66,0,14,0,3,0,34,0,120,0,37,0,66,0,77,0,119,0,102,0,17,0,119,0,21,0,32,0,3,0,23,0,120,0,51,0,23,0,3,0,30,0,102,0,38,0,26,0,102,0,32,0,31,0,34,0,119,0,120,0,18,0,32,0,26,0,102,0,22,0,14,0,3,0,17,0,33,0,66,0,120,0,51,0,3,0,121,0,74,0,77,0,119,0,74,0,3,0,102,0,23,0,30,0,120,0,33,0,108,0,26,0,102,0,31,0,32,0,119,0,8,0,31,0,102,0,31,0,32,0,120,0,51,0,34,0,77,0,119,0,21,0,26,0,26,0,102,0,22,0,14,0,3,0,74,0,31,0,3,0,32,0,31,0,34,0,119,0,21,0,32,0,120,0,27,0,19,0,3,0,31,0,28,0,119,0,120,0,18,0,23,0,32,0,30,0,14,0,3,0,34,0,119,0,120,0,21,0,17,0,119,0,21,0,25,0,102,0,34,0,102,0,3,0,74,0,38,0,77,0,33,0,32,0,96,0,119,0,120,0,18,0,26,0,119,0,21,0,22,0,14,0,10,0,2],"phonemes":["r","ˈ","ɑ","d","u","ɡ","a"," ","v","ˈ","y","ɡ","ɭ","ʲ","ʌ","d","ʲ","i","t"," ","k","ˈ","ɑ","k"," ","r","ʌ","z","n","ʌ","t","s","v","ʲ","ˈ","e","t","n","ʌ","j","a"," ","d","u","ɡ","ˈ","ɑ"," ","ˌ","ɪ","ɭ","ʲ","ɪ"," ","ʌ","k","r","ˈ","u","ʒ","n","ʌ","s","t","ʲ",",","s","ʌ","s","t","ˈ","ɑ","v","ɭ","ʲ","i","n","n","ʌ","j","a"," ","ɪ","s"," ","t","s","v","ʲ","i","t","ˈ","o","f"," ","s","p","ʲ","ˈ","e","k","t","r","a"," ","v","ʲ","ˈ","i","d","ʲ","i","m","ʌ","v","ʌ"," ","ɪ","z","ɭ","u","t","ʃ","ʲ","ˈ","e","n","ʲ","i","j","a","."],"processed_text":"Радуга выглядит как разноцветная дуга или окружность, составленная из цветов спектра видимого излучения.","text":"Радуга выглядит как разноцветная дуга или окружность, составленная из цветов спектра видимого излучения."} +{"phoneme_ids":[1,0,120,0,61,0,32,0,102,0,3,0,32,0,119,0,120,0,18,0,3,0,31,0,119,0,120,0,18,0,25,0,119,0,3,0,32,0,31,0,34,0,119,0,21,0,32,0,120,0,27,0,19,0,8,0,23,0,102,0,32,0,120,0,27,0,30,0,37,0,22,0,74,0,3,0,28,0,30,0,119,0,120,0,21,0,26,0,119,0,102,0,32,0,102,0,3,0,34,0,37,0,17,0,119,0,21,0,77,0,119,0,120,0,51,0,32,0,119,0,3,0,34,0,3,0,30,0,120,0,51,0,17,0,33,0,66,0,119,0,21,0,3,0,34,0,3,0,30,0,120,0,33,0,31,0,31,0,23,0,102,0,22,0,3,0,23,0,33,0,77,0,32,0,120,0,33,0,30,0,119,0,21,0,8,0,26,0,27,0,3,0,31,0,77,0,119,0,120,0,18,0,17,0,33,0,22,0,21,0,32,0,3,0,74,0,25,0,119,0,120,0,18,0,32,0,119,0,3,0,34,0,34,0,119,0,21,0,17,0,120,0,33,0,8,0,96,0,32,0,27,0,3,0,26,0,59,0,3,0,31,0,120,0,51,0,25,0,102,0,25,0,3,0,17,0,119,0,120,0,18,0,77,0,119,0,21,0,3,0,31,0,28,0,119,0,120,0,18,0,23,0,32,0,30,0,3,0,26,0,119,0,21,0,28,0,30,0,119,0,21,0,30,0,120,0,37,0,34,0,119,0,21,0,26,0,8,0,74,0,3,0,22,0,74,0,34,0,120,0,27,0,3,0,32,0,31,0,34,0,119,0,120,0,18,0,32,0,14,0,3,0,28,0,77,0,120,0,51,0,34,0,26,0,102,0,3,0,28,0,119,0,21,0,30,0,119,0,21,0,36,0,120,0,27,0,17,0,119,0,102,0,32,0,3,0,17,0,30,0,120,0,33,0,23,0,3,0,34,0,3,0,17,0,30,0,120,0,33,0,66,0,14,0,3,0,32,0,96,0,119,0,120,0,18,0,30,0,119,0,21,0,31,0,3,0,25,0,26,0,120,0,27,0,108,0,37,0,31,0,32,0,34,0,102,0,3,0,28,0,30,0,102,0,25,0,119,0,21,0,108,0,120,0,33,0,32,0,102,0,32,0,96,0,119,0,26,0,37,0,36,0,3,0,102,0,32,0,119,0,32,0,119,0,120,0,18,0,26,0,23,0,102,0,19,0,10,0,2],"phonemes":["ˈ","ɛ","t","ʌ"," ","t","ʲ","ˈ","e"," ","s","ʲ","ˈ","e","m","ʲ"," ","t","s","v","ʲ","i","t","ˈ","o","f",",","k","ʌ","t","ˈ","o","r","y","j","ɪ"," ","p","r","ʲ","ˈ","i","n","ʲ","ʌ","t","ʌ"," ","v","y","d","ʲ","i","ɭ","ʲ","ˈ","ɑ","t","ʲ"," ","v"," ","r","ˈ","ɑ","d","u","ɡ","ʲ","i"," ","v"," ","r","ˈ","u","s","s","k","ʌ","j"," ","k","u","ɭ","t","ˈ","u","r","ʲ","i",",","n","o"," ","s","ɭ","ʲ","ˈ","e","d","u","j","i","t"," ","ɪ","m","ʲ","ˈ","e","t","ʲ"," ","v","v","ʲ","i","d","ˈ","u",",","ʃ","t","o"," ","n","ə"," ","s","ˈ","ɑ","m","ʌ","m"," ","d","ʲ","ˈ","e","ɭ","ʲ","i"," ","s","p","ʲ","ˈ","e","k","t","r"," ","n","ʲ","i","p","r","ʲ","i","r","ˈ","y","v","ʲ","i","n",",","ɪ"," ","j","ɪ","v","ˈ","o"," ","t","s","v","ʲ","ˈ","e","t","a"," ","p","ɭ","ˈ","ɑ","v","n","ʌ"," ","p","ʲ","i","r","ʲ","i","x","ˈ","o","d","ʲ","ʌ","t"," ","d","r","ˈ","u","k"," ","v"," ","d","r","ˈ","u","ɡ","a"," ","t","ʃ","ʲ","ˈ","e","r","ʲ","i","s"," ","m","n","ˈ","o","ʒ","y","s","t","v","ʌ"," ","p","r","ʌ","m","ʲ","i","ʒ","ˈ","u","t","ʌ","t","ʃ","ʲ","n","y","x"," ","ʌ","t","ʲ","t","ʲ","ˈ","e","n","k","ʌ","f","."],"processed_text":"Это те семь цветов, которые принято выделять в радуге в русской культуре, но следует иметь в виду, что на самом деле спектр непрерывен, и его цвета плавно переходят друг в друга через множество промежуточных оттенков.","text":"Это те семь цветов, которые принято выделять в радуге в русской культуре, но следует иметь в виду, что на самом деле спектр непрерывен, и его цвета плавно переходят друг в друга через множество промежуточных оттенков."} +{"phoneme_ids":[1,0,96,0,37,0,30,0,120,0,27,0,23,0,102,0,22,0,14,0,3,0,61,0,77,0,119,0,21,0,23,0,32,0,30,0,119,0,21,0,19,0,119,0,21,0,23,0,120,0,51,0,32,0,31,0,37,0,22,0,14,0,3,0,120,0,22,0,33,0,108,0,26,0,37,0,36,0,3,0,66,0,33,0,15,0,119,0,120,0,18,0,30,0,26,0,119,0,21,0,22,0,3,0,17,0,120,0,51,0,31,0,32,0,3,0,25,0,120,0,27,0,55,0,26,0,37,0,22,0,3,0,32,0,102,0,77,0,32,0,96,0,119,0,120,0,27,0,23,0,3,0,28,0,102,0,17,0,22,0,120,0,85,0,25,0,33,0,3,0,31,0,119,0,120,0,18,0,77,0,31,0,23,0,102,0,34,0,102,0,3,0,36,0,102,0,107,0,120,0,51,0,22,0,31,0,32,0,34,0,14,0,10,0,2],"phonemes":["ʃ","y","r","ˈ","o","k","ʌ","j","a"," ","ɛ","ɭ","ʲ","i","k","t","r","ʲ","i","f","ʲ","i","k","ˈ","ɑ","t","s","y","j","a"," ","ˈ","j","u","ʒ","n","y","x"," ","ɡ","u","b","ʲ","ˈ","e","r","n","ʲ","i","j"," ","d","ˈ","ɑ","s","t"," ","m","ˈ","o","ɕ","n","y","j"," ","t","ʌ","ɭ","t","ʃ","ʲ","ˈ","o","k"," ","p","ʌ","d","j","ˈ","ɵ","m","u"," ","s","ʲ","ˈ","e","ɭ","s","k","ʌ","v","ʌ"," ","x","ʌ","ʑ","ˈ","ɑ","j","s","t","v","a","."],"processed_text":"Широкая электрификация южных губерний даст мощный толчок подъёму сельского хозяйства.","text":"Широкая электрификация южных губерний даст мощный толчок подъёму сельского хозяйства."} +{"phoneme_ids":[1,0,30,0,102,0,38,0,22,0,22,0,14,0,30,0,119,0,120,0,18,0,26,0,26,0,37,0,22,0,3,0,32,0,96,0,119,0,32,0,119,0,120,0,18,0,32,0,31,0,3,0,61,0,66,0,102,0,21,0,31,0,119,0,32,0,119,0,120,0,21,0,32,0,96,0,119,0,26,0,102,0,3,0,15,0,22,0,120,0,85,0,32,0,3,0,28,0,119,0,14,0,32,0,119,0,22,0,120,0,22,0,33,0,3,0,108,0,37,0,30,0,17,0,119,0,120,0,51,0,25,0,119,0,74,0,3,0,96,0,120,0,33,0,31,0,32,0,30,0,102,0,34,0,102,0,3,0,19,0,119,0,21,0,36,0,32,0,102,0,34,0,120,0,51,0,77,0,55,0,21,0,23,0,14,0,10,0,2],"phonemes":["r","ʌ","z","j","j","a","r","ʲ","ˈ","e","n","n","y","j"," ","t","ʃ","ʲ","t","ʲ","ˈ","e","t","s"," ","ɛ","ɡ","ʌ","i","s","ʲ","t","ʲ","ˈ","i","t","ʃ","ʲ","n","ʌ"," ","b","j","ˈ","ɵ","t"," ","p","ʲ","a","t","ʲ","j","ˈ","j","u"," ","ʒ","y","r","d","ʲ","ˈ","ɑ","m","ʲ","ɪ"," ","ʃ","ˈ","u","s","t","r","ʌ","v","ʌ"," ","f","ʲ","i","x","t","ʌ","v","ˈ","ɑ","ɭ","ɕ","i","k","a","."],"processed_text":"Разъяренный чтец эгоистично бьёт пятью жердями шустрого фехтовальщика.","text":"Разъяренный чтец эгоистично бьёт пятью жердями шустрого фехтовальщика."} +{"phoneme_ids":[1,0,19,0,3,0,32,0,96,0,119,0,120,0,51,0,55,0,102,0,36,0,3,0,120,0,22,0,33,0,66,0,14,0,3,0,108,0,120,0,37,0,77,0,3,0,15,0,37,0,3,0,32,0,31,0,120,0,37,0,32,0,30,0,33,0,31,0,13,0,2,1,0,17,0,120,0,51,0,8,0,26,0,27,0,3,0,19,0,14,0,77,0,96,0,120,0,37,0,34,0,37,0,22,0,3,0,61,0,66,0,107,0,21,0,25,0,28,0,77,0,119,0,120,0,51,0,30,0,4,0,2],"phonemes":["f"," ","t","ʃ","ʲ","ˈ","ɑ","ɕ","ʌ","x"," ","ˈ","j","u","ɡ","a"," ","ʒ","ˈ","y","ɭ"," ","b","y"," ","t","s","ˈ","y","t","r","u","s","?","d","ˈ","ɑ",",","n","o"," ","f","a","ɭ","ʃ","ˈ","y","v","y","j"," ","ɛ","ɡ","ʑ","i","m","p","ɭ","ʲ","ˈ","ɑ","r","!"],"processed_text":"В чащах юга жил бы цитрус? Да, но фальшивый экземпляр!","text":"В чащах юга жил бы цитрус? Да, но фальшивый экземпляр!"} diff --git a/piper/piper/etc/test_sentences/test_sk.jsonl b/piper/piper/etc/test_sentences/test_sk.jsonl new file mode 100644 index 0000000..809ff84 --- /dev/null +++ b/piper/piper/etc/test_sentences/test_sk.jsonl @@ -0,0 +1,7 @@ +{"phoneme_ids":[1,0,17,0,120,0,33,0,122,0,20,0,14,0,3,0,22,0,18,0,3,0,120,0,27,0,28,0,32,0,21,0,32,0,31,0,23,0,21,0,122,0,3,0,120,0,33,0,122,0,23,0,14,0,38,0,3,0,34,0,38,0,82,0,120,0,21,0,23,0,14,0,22,0,121,0,33,0,122,0,32,0,31,0,21,0,3,0,34,0,3,0,120,0,14,0,32,0,25,0,27,0,31,0,19,0,121,0,18,0,122,0,30,0,18,0,3,0,38,0,120,0,18,0,25,0,18,0,10,0,2],"phonemes":["d","ˈ","u","ː","h","a"," ","j","e"," ","ˈ","o","p","t","i","t","s","k","i","ː"," ","ˈ","u","ː","k","a","z"," ","v","z","ɲ","ˈ","i","k","a","j","ˌ","u","ː","t","s","i"," ","v"," ","ˈ","a","t","m","o","s","f","ˌ","e","ː","r","e"," ","z","ˈ","e","m","e","."],"processed_text":"Dúha je optický úkaz vznikajúci v atmosfére Zeme.","text":"Dúha je optický úkaz vznikajúci v atmosfére Zeme."} +{"phoneme_ids":[1,0,34,0,38,0,82,0,120,0,21,0,23,0,3,0,17,0,120,0,33,0,122,0,20,0,21,0,3,0,22,0,18,0,3,0,31,0,28,0,120,0,33,0,27,0,31,0,121,0,27,0,15,0,18,0,26,0,21,0,122,0,3,0,17,0,120,0,21,0,31,0,28,0,18,0,30,0,38,0,121,0,21,0,27,0,100,0,3,0,31,0,120,0,24,0,144,0,82,0,18,0,32,0,96,0,26,0,121,0,18,0,122,0,20,0,27,0,3,0,31,0,34,0,120,0,18,0,32,0,24,0,14,0,3,0,28,0,30,0,120,0,18,0,36,0,14,0,122,0,17,0,107,0,121,0,14,0,22,0,33,0,122,0,32,0,31,0,121,0,18,0,20,0,27,0,3,0,23,0,34,0,120,0,14,0,28,0,23,0,27,0,100,0,10,0,2],"phonemes":["v","z","ɲ","ˈ","i","k"," ","d","ˈ","u","ː","h","i"," ","j","e"," ","s","p","ˈ","u","o","s","ˌ","o","b","e","n","i","ː"," ","d","ˈ","i","s","p","e","r","z","ˌ","i","o","ʊ"," ","s","ˈ","l","̩","ɲ","e","t","ʃ","n","ˌ","e","ː","h","o"," ","s","v","ˈ","e","t","l","a"," ","p","r","ˈ","e","x","a","ː","d","ʑ","ˌ","a","j","u","ː","t","s","ˌ","e","h","o"," ","k","v","ˈ","a","p","k","o","ʊ","."],"processed_text":"Vznik dúhy je spôsobený disperziou slnečného svetla prechádzajúceho kvapkou.","text":"Vznik dúhy je spôsobený disperziou slnečného svetla prechádzajúceho kvapkou."} +{"phoneme_ids":[1,0,28,0,30,0,120,0,18,0,32,0,28,0,27,0,23,0,24,0,121,0,14,0,17,0,27,0,25,0,3,0,28,0,30,0,120,0,18,0,3,0,34,0,38,0,82,0,120,0,21,0,23,0,3,0,17,0,120,0,33,0,122,0,20,0,21,0,3,0,22,0,18,0,3,0,28,0,30,0,120,0,21,0,122,0,32,0,27,0,25,0,26,0,27,0,31,0,32,0,119,0,3,0,34,0,120,0,27,0,17,0,26,0,21,0,122,0,36,0,3,0,23,0,34,0,120,0,14,0,28,0,21,0,18,0,23,0,3,0,34,0,3,0,120,0,14,0,32,0,25,0,27,0,31,0,19,0,121,0,18,0,122,0,30,0,18,0,3,0,14,0,3,0,31,0,120,0,24,0,144,0,44,0,23,0,14,0,8,0,3,0,23,0,32,0,120,0,27,0,30,0,18,0,122,0,20,0,27,0,3,0,31,0,34,0,120,0,18,0,32,0,24,0,27,0,3,0,32,0,31,0,120,0,18,0,31,0,3,0,23,0,34,0,120,0,14,0,28,0,23,0,21,0,3,0,25,0,120,0,33,0,27,0,108,0,18,0,3,0,28,0,30,0,120,0,18,0,36,0,14,0,122,0,17,0,107,0,14,0,32,0,119,0,10,0,2],"phonemes":["p","r","ˈ","e","t","p","o","k","l","ˌ","a","d","o","m"," ","p","r","ˈ","e"," ","v","z","ɲ","ˈ","i","k"," ","d","ˈ","u","ː","h","i"," ","j","e"," ","p","r","ˈ","i","ː","t","o","m","n","o","s","t","ʲ"," ","v","ˈ","o","d","n","i","ː","x"," ","k","v","ˈ","a","p","i","e","k"," ","v"," ","ˈ","a","t","m","o","s","f","ˌ","e","ː","r","e"," ","a"," ","s","ˈ","l","̩","ŋ","k","a",","," ","k","t","ˈ","o","r","e","ː","h","o"," ","s","v","ˈ","e","t","l","o"," ","t","s","ˈ","e","s"," ","k","v","ˈ","a","p","k","i"," ","m","ˈ","u","o","ʒ","e"," ","p","r","ˈ","e","x","a","ː","d","ʑ","a","t","ʲ","."],"processed_text":"Predpokladom pre vznik dúhy je prítomnosť vodných kvapiek v atmosfére a Slnka, ktorého svetlo cez kvapky môže prechádzať.","text":"Predpokladom pre vznik dúhy je prítomnosť vodných kvapiek v atmosfére a Slnka, ktorého svetlo cez kvapky môže prechádzať."} +{"phoneme_ids":[1,0,28,0,30,0,120,0,18,0,32,0,27,0,108,0,18,0,3,0,34,0,120,0,27,0,17,0,14,0,3,0,25,0,120,0,14,0,122,0,3,0,34,0,120,0,18,0,32,0,96,0,96,0,21,0,122,0,3,0,120,0,21,0,26,0,17,0,18,0,23,0,31,0,3,0,24,0,120,0,27,0,25,0,33,0,3,0,121,0,14,0,23,0,27,0,3,0,34,0,38,0,17,0,120,0,33,0,36,0,8,0,3,0,31,0,34,0,120,0,18,0,32,0,24,0,27,0,3,0,31,0,14,0,3,0,26,0,120,0,14,0,21,0,36,0,3,0,30,0,120,0,27,0,31,0,20,0,30,0,14,0,82,0,21,0,122,0,3,0,24,0,120,0,14,0,122,0,25,0,18,0,10,0,2],"phonemes":["p","r","ˈ","e","t","o","ʒ","e"," ","v","ˈ","o","d","a"," ","m","ˈ","a","ː"," ","v","ˈ","e","t","ʃ","ʃ","i","ː"," ","ˈ","i","n","d","e","k","s"," ","l","ˈ","o","m","u"," ","ˌ","a","k","o"," ","v","z","d","ˈ","u","x",","," ","s","v","ˈ","e","t","l","o"," ","s","a"," ","n","ˈ","a","i","x"," ","r","ˈ","o","s","h","r","a","ɲ","i","ː"," ","l","ˈ","a","ː","m","e","."],"processed_text":"Pretože voda má väčší index lomu ako vzduch, svetlo sa na ich rozhraní láme.","text":"Pretože voda má väčší index lomu ako vzduch, svetlo sa na ich rozhraní láme."} +{"phoneme_ids":[1,0,120,0,33,0,20,0,27,0,24,0,3,0,24,0,120,0,27,0,25,0,33,0,3,0,22,0,18,0,3,0,30,0,120,0,33,0,27,0,38,0,26,0,21,0,3,0,28,0,30,0,120,0,18,0,3,0,30,0,120,0,33,0,27,0,38,0,26,0,18,0,3,0,34,0,120,0,24,0,144,0,26,0,27,0,34,0,18,0,122,0,3,0,17,0,120,0,24,0,144,0,122,0,96,0,23,0,21,0,3,0,31,0,34,0,120,0,18,0,32,0,24,0,14,0,3,0,14,0,3,0,32,0,120,0,18,0,17,0,14,0,3,0,31,0,34,0,120,0,18,0,32,0,24,0,27,0,3,0,31,0,14,0,3,0,30,0,120,0,27,0,31,0,23,0,24,0,14,0,17,0,14,0,122,0,3,0,26,0,14,0,3,0,22,0,120,0,18,0,17,0,26,0,27,0,32,0,24,0,121,0,21,0,34,0,18,0,122,0,3,0,19,0,120,0,14,0,30,0,18,0,15,0,26,0,18,0,122,0,3,0,38,0,24,0,120,0,27,0,96,0,23,0,21,0,8,0,3,0,23,0,32,0,120,0,27,0,30,0,18,0,122,0,3,0,31,0,14,0,3,0,120,0,27,0,17,0,30,0,14,0,122,0,108,0,121,0,14,0,22,0,33,0,122,0,3,0,26,0,120,0,14,0,34,0,26,0,33,0,122,0,32,0,121,0,27,0,30,0,82,0,18,0,22,0,3,0,31,0,32,0,119,0,120,0,18,0,82,0,18,0,3,0,14,0,3,0,23,0,34,0,120,0,14,0,28,0,23,0,33,0,3,0,120,0,27,0,28,0,33,0,122,0,96,0,32,0,119,0,121,0,14,0,22,0,33,0,122,0,3,0,28,0,120,0,27,0,17,0,3,0,30,0,120,0,33,0,27,0,38,0,26,0,121,0,21,0,25,0,21,0,3,0,120,0,33,0,20,0,24,0,14,0,25,0,21,0,3,0,31,0,3,0,26,0,120,0,14,0,22,0,34,0,18,0,32,0,96,0,96,0,27,0,100,0,3,0,120,0,21,0,26,0,32,0,18,0,26,0,38,0,121,0,21,0,32,0,27,0,100,0,3,0,31,0,34,0,120,0,18,0,32,0,24,0,14,0,3,0,28,0,30,0,120,0,21,0,33,0,20,0,24,0,27,0,36,0,3,0,120,0,27,0,23,0,27,0,24,0,27,0,3,0,96,0,32,0,120,0,21,0,92,0,21,0,32,0,31,0,14,0,32,0,119,0,3,0,31,0,32,0,120,0,33,0,28,0,82,0,27,0,33,0,12,0,3,0,96,0,32,0,120,0,21,0,92,0,21,0,32,0,31,0,14,0,17,0,119,0,17,0,34,0,120,0,14,0,3,0,31,0,32,0,120,0,33,0,28,0,82,0,27,0,33,0,10,0,2],"phonemes":["ˈ","u","h","o","l"," ","l","ˈ","o","m","u"," ","j","e"," ","r","ˈ","u","o","z","n","i"," ","p","r","ˈ","e"," ","r","ˈ","u","o","z","n","e"," ","v","ˈ","l","̩","n","o","v","e","ː"," ","d","ˈ","l","̩","ː","ʃ","k","i"," ","s","v","ˈ","e","t","l","a"," ","a"," ","t","ˈ","e","d","a"," ","s","v","ˈ","e","t","l","o"," ","s","a"," ","r","ˈ","o","s","k","l","a","d","a","ː"," ","n","a"," ","j","ˈ","e","d","n","o","t","l","ˌ","i","v","e","ː"," ","f","ˈ","a","r","e","b","n","e","ː"," ","z","l","ˈ","o","ʃ","k","i",","," ","k","t","ˈ","o","r","e","ː"," ","s","a"," ","ˈ","o","d","r","a","ː","ʒ","ˌ","a","j","u","ː"," ","n","ˈ","a","v","n","u","ː","t","ˌ","o","r","ɲ","e","j"," ","s","t","ʲ","ˈ","e","ɲ","e"," ","a"," ","k","v","ˈ","a","p","k","u"," ","ˈ","o","p","u","ː","ʃ","t","ʲ","ˌ","a","j","u","ː"," ","p","ˈ","o","d"," ","r","ˈ","u","o","z","n","ˌ","i","m","i"," ","ˈ","u","h","l","a","m","i"," ","s"," ","n","ˈ","a","j","v","e","t","ʃ","ʃ","o","ʊ"," ","ˈ","i","n","t","e","n","z","ˌ","i","t","o","ʊ"," ","s","v","ˈ","e","t","l","a"," ","p","r","ˈ","i","u","h","l","o","x"," ","ˈ","o","k","o","l","o"," ","ʃ","t","ˈ","i","ɾ","i","t","s","a","t","ʲ"," ","s","t","ˈ","u","p","ɲ","o","u",";"," ","ʃ","t","ˈ","i","ɾ","i","t","s","a","d","ʲ","d","v","ˈ","a"," ","s","t","ˈ","u","p","ɲ","o","u","."],"processed_text":"Uhol lomu je rôzny pre rôzne vlnové dĺžky svetla a teda svetlo sa rozkladá na jednotlivé farebné zložky, ktoré sa odrážajú na vnútornej stene a kvapku opúšťajú pod rôznymi uhlami s najväčšou intenzitou svetla pri uhloch okolo 40° – 42°.","text":"Uhol lomu je rôzny pre rôzne vlnové dĺžky svetla a teda svetlo sa rozkladá na jednotlivé farebné zložky, ktoré sa odrážajú na vnútornej stene a kvapku opúšťajú pod rôznymi uhlami s najväčšou intenzitou svetla pri uhloch okolo 40° – 42°."} +{"phoneme_ids":[1,0,28,0,30,0,120,0,21,0,34,0,21,0,122,0,96,0,23,0,18,0,3,0,31,0,120,0,24,0,144,0,44,0,23,0,14,0,3,0,26,0,120,0,14,0,32,0,3,0,96,0,32,0,120,0,21,0,92,0,21,0,32,0,31,0,14,0,17,0,119,0,17,0,34,0,120,0,14,0,3,0,31,0,32,0,120,0,33,0,28,0,82,0,27,0,33,0,3,0,31,0,14,0,3,0,82,0,120,0,18,0,17,0,14,0,122,0,3,0,28,0,120,0,27,0,38,0,27,0,30,0,121,0,27,0,34,0,14,0,32,0,119,0,10,0,2],"phonemes":["p","r","ˈ","i","v","i","ː","ʃ","k","e"," ","s","ˈ","l","̩","ŋ","k","a"," ","n","ˈ","a","t"," ","ʃ","t","ˈ","i","ɾ","i","t","s","a","d","ʲ","d","v","ˈ","a"," ","s","t","ˈ","u","p","ɲ","o","u"," ","s","a"," ","ɲ","ˈ","e","d","a","ː"," ","p","ˈ","o","z","o","r","ˌ","o","v","a","t","ʲ","."],"processed_text":"Pri výške slnka nad 42° sa nedá pozorovať.","text":"Pri výške slnka nad 42° sa nedá pozorovať."} +{"phoneme_ids":[1,0,25,0,120,0,27,0,17,0,30,0,18,0,122,0,3,0,31,0,34,0,120,0,18,0,32,0,24,0,27,0,3,0,23,0,30,0,120,0,14,0,32,0,96,0,21,0,14,0,3,0,34,0,120,0,24,0,144,0,26,0,27,0,34,0,14,0,122,0,3,0,17,0,120,0,24,0,144,0,122,0,96,0,23,0,14,0,3,0,31,0,14,0,3,0,24,0,120,0,14,0,122,0,25,0,18,0,3,0,28,0,120,0,27,0,32,0,34,0,18,0,32,0,96,0,96,0,21,0,122,0,25,0,3,0,120,0,33,0,20,0,24,0,27,0,25,0,3,0,121,0,14,0,23,0,27,0,3,0,32,0,96,0,120,0,18,0,30,0,34,0,18,0,26,0,18,0,122,0,3,0,31,0,34,0,120,0,18,0,32,0,24,0,27,0,8,0,3,0,120,0,14,0,24,0,18,0,3,0,28,0,30,0,120,0,18,0,32,0,27,0,108,0,18,0,3,0,120,0,27,0,15,0,24,0,14,0,38,0,17,0,119,0,3,0,38,0,120,0,14,0,17,0,26,0,18,0,22,0,3,0,31,0,32,0,30,0,120,0,14,0,26,0,21,0,3,0,23,0,34,0,120,0,14,0,28,0,23,0,21,0,3,0,25,0,120,0,14,0,122,0,3,0,120,0,27,0,20,0,82,0,21,0,31,0,23,0,27,0,3,0,34,0,26,0,120,0,33,0,122,0,32,0,30,0,21,0,3,0,23,0,34,0,120,0,14,0,28,0,23,0,21,0,8,0,3,0,31,0,28,0,120,0,18,0,23,0,32,0,30,0,33,0,25,0,3,0,31,0,120,0,14,0,25,0,27,0,3,0,28,0,30,0,120,0,18,0,36,0,14,0,122,0,17,0,107,0,14,0,8,0,3,0,14,0,3,0,28,0,30,0,120,0,18,0,32,0,27,0,3,0,31,0,14,0,3,0,32,0,96,0,120,0,18,0,30,0,34,0,18,0,26,0,18,0,122,0,3,0,31,0,34,0,120,0,18,0,32,0,24,0,27,0,3,0,38,0,120,0,27,0,15,0,30,0,14,0,38,0,21,0,122,0,3,0,34,0,120,0,21,0,96,0,96,0,21,0,18,0,3,0,26,0,120,0,14,0,27,0,15,0,24,0,121,0,27,0,20,0,18,0,3,0,14,0,3,0,34,0,120,0,21,0,32,0,34,0,14,0,122,0,30,0,14,0,3,0,34,0,120,0,27,0,44,0,23,0,14,0,22,0,96,0,21,0,33,0,3,0,19,0,120,0,14,0,30,0,15,0,33,0,3,0,17,0,120,0,33,0,122,0,20,0,21,0,10,0,2],"phonemes":["m","ˈ","o","d","r","e","ː"," ","s","v","ˈ","e","t","l","o"," ","k","r","ˈ","a","t","ʃ","i","a"," ","v","ˈ","l","̩","n","o","v","a","ː"," ","d","ˈ","l","̩","ː","ʃ","k","a"," ","s","a"," ","l","ˈ","a","ː","m","e"," ","p","ˈ","o","t","v","e","t","ʃ","ʃ","i","ː","m"," ","ˈ","u","h","l","o","m"," ","ˌ","a","k","o"," ","t","ʃ","ˈ","e","r","v","e","n","e","ː"," ","s","v","ˈ","e","t","l","o",","," ","ˈ","a","l","e"," ","p","r","ˈ","e","t","o","ʒ","e"," ","ˈ","o","b","l","a","z","d","ʲ"," ","z","ˈ","a","d","n","e","j"," ","s","t","r","ˈ","a","n","i"," ","k","v","ˈ","a","p","k","i"," ","m","ˈ","a","ː"," ","ˈ","o","h","ɲ","i","s","k","o"," ","v","n","ˈ","u","ː","t","r","i"," ","k","v","ˈ","a","p","k","i",","," ","s","p","ˈ","e","k","t","r","u","m"," ","s","ˈ","a","m","o"," ","p","r","ˈ","e","x","a","ː","d","ʑ","a",","," ","a"," ","p","r","ˈ","e","t","o"," ","s","a"," ","t","ʃ","ˈ","e","r","v","e","n","e","ː"," ","s","v","ˈ","e","t","l","o"," ","z","ˈ","o","b","r","a","z","i","ː"," ","v","ˈ","i","ʃ","ʃ","i","e"," ","n","ˈ","a","o","b","l","ˌ","o","h","e"," ","a"," ","v","ˈ","i","t","v","a","ː","r","a"," ","v","ˈ","o","ŋ","k","a","j","ʃ","i","u"," ","f","ˈ","a","r","b","u"," ","d","ˈ","u","ː","h","i","."],"processed_text":"Modré svetlo kratšia vlnová dĺžka sa láme pod väčším uhlom ako červené svetlo, ale pretože oblasť zadnej strany kvapky má ohnisko vnútri kvapky, spektrum samo prechádza, a preto sa červené svetlo zobrazí vyššie na oblohe a vytvára vonkajšiu farbu dúhy.","text":"Modré svetlo kratšia vlnová dĺžka sa láme pod väčším uhlom ako červené svetlo, ale pretože oblasť zadnej strany kvapky má ohnisko vnútri kvapky, spektrum samo prechádza, a preto sa červené svetlo zobrazí vyššie na oblohe a vytvára vonkajšiu farbu dúhy."} diff --git a/piper/piper/etc/test_sentences/test_sr.jsonl b/piper/piper/etc/test_sentences/test_sr.jsonl new file mode 100644 index 0000000..e30e4c1 --- /dev/null +++ b/piper/piper/etc/test_sentences/test_sr.jsonl @@ -0,0 +1,8 @@ +{"phoneme_ids":[1,0,17,0,120,0,33,0,66,0,50,0,3,0,22,0,18,0,3,0,120,0,27,0,28,0,32,0,74,0,32,0,96,0,23,0,50,0,3,0,74,0,3,0,25,0,120,0,61,0,32,0,61,0,121,0,27,0,30,0,27,0,24,0,121,0,27,0,96,0,23,0,50,0,3,0,28,0,120,0,27,0,22,0,50,0,34,0,50,0,3,0,23,0,120,0,27,0,22,0,74,0,3,0,31,0,120,0,61,0,3,0,28,0,120,0,27,0,22,0,50,0,34,0,24,0,22,0,121,0,100,0,22,0,18,0,3,0,26,0,120,0,14,0,3,0,26,0,120,0,61,0,15,0,100,0,8,0,3,0,23,0,120,0,14,0,17,0,50,0,3,0,31,0,120,0,61,0,3,0,31,0,120,0,33,0,26,0,32,0,96,0,61,0,34,0,74,0,3,0,38,0,30,0,120,0,14,0,32,0,31,0,74,0,3,0,28,0,30,0,120,0,61,0,24,0,50,0,25,0,121,0,51,0,22,0,100,0,3,0,23,0,30,0,120,0,27,0,31,0,3,0,31,0,120,0,21,0,32,0,26,0,61,0,3,0,34,0,120,0,27,0,17,0,61,0,26,0,61,0,3,0,23,0,120,0,14,0,28,0,74,0,8,0,3,0,26,0,120,0,51,0,22,0,32,0,96,0,61,0,96,0,32,0,55,0,61,0,3,0,26,0,120,0,14,0,23,0,27,0,26,0,3,0,23,0,120,0,21,0,96,0,61,0,10,0,2],"phonemes":["d","ˈ","u","ɡ","ɐ"," ","j","e"," ","ˈ","o","p","t","ɪ","t","ʃ","k","ɐ"," ","ɪ"," ","m","ˈ","ɛ","t","ɛ","ˌ","o","r","o","l","ˌ","o","ʃ","k","ɐ"," ","p","ˈ","o","j","ɐ","v","ɐ"," ","k","ˈ","o","j","ɪ"," ","s","ˈ","ɛ"," ","p","ˈ","o","j","ɐ","v","l","j","ˌ","ʊ","j","e"," ","n","ˈ","a"," ","n","ˈ","ɛ","b","ʊ",","," ","k","ˈ","a","d","ɐ"," ","s","ˈ","ɛ"," ","s","ˈ","u","n","t","ʃ","ɛ","v","ɪ"," ","z","r","ˈ","a","t","s","ɪ"," ","p","r","ˈ","ɛ","l","ɐ","m","ˌ","ɑ","j","ʊ"," ","k","r","ˈ","o","s"," ","s","ˈ","i","t","n","ɛ"," ","v","ˈ","o","d","ɛ","n","ɛ"," ","k","ˈ","a","p","ɪ",","," ","n","ˈ","ɑ","j","t","ʃ","ɛ","ʃ","t","ɕ","ɛ"," ","n","ˈ","a","k","o","n"," ","k","ˈ","i","ʃ","ɛ","."],"processed_text":"Дуга је оптичка и метеоролошка појава који се појављује на небу, када се сунчеви зраци преламају кроз ситне водене капи, најчешће након кише.","text":"Дуга је оптичка и метеоролошка појава који се појављује на небу, када се сунчеви зраци преламају кроз ситне водене капи, најчешће након кише."} +{"phoneme_ids":[1,0,17,0,120,0,33,0,66,0,50,0,3,0,31,0,120,0,61,0,3,0,120,0,27,0,15,0,74,0,32,0,96,0,26,0,27,0,3,0,34,0,120,0,21,0,17,0,74,0,3,0,26,0,120,0,14,0,3,0,38,0,120,0,14,0,31,0,32,0,27,0,30,0,100,0,3,0,23,0,120,0,21,0,96,0,26,0,74,0,20,0,3,0,23,0,120,0,14,0,28,0,74,0,3,0,23,0,120,0,14,0,17,0,50,0,3,0,28,0,120,0,27,0,31,0,25,0,50,0,32,0,30,0,50,0,32,0,96,0,3,0,31,0,32,0,120,0,27,0,22,0,74,0,3,0,120,0,27,0,23,0,30,0,61,0,26,0,100,0,32,0,3,0,24,0,120,0,61,0,17,0,107,0,74,0,25,0,50,0,3,0,31,0,120,0,33,0,26,0,32,0,31,0,100,0,3,0,74,0,3,0,66,0,24,0,120,0,61,0,17,0,50,0,3,0,100,0,3,0,31,0,25,0,120,0,61,0,30,0,100,0,3,0,32,0,120,0,27,0,66,0,50,0,3,0,38,0,120,0,14,0,31,0,32,0,27,0,30,0,50,0,10,0,2],"phonemes":["d","ˈ","u","ɡ","ɐ"," ","s","ˈ","ɛ"," ","ˈ","o","b","ɪ","t","ʃ","n","o"," ","v","ˈ","i","d","ɪ"," ","n","ˈ","a"," ","z","ˈ","a","s","t","o","r","ʊ"," ","k","ˈ","i","ʃ","n","ɪ","h"," ","k","ˈ","a","p","ɪ"," ","k","ˈ","a","d","ɐ"," ","p","ˈ","o","s","m","ɐ","t","r","ɐ","t","ʃ"," ","s","t","ˈ","o","j","ɪ"," ","ˈ","o","k","r","ɛ","n","ʊ","t"," ","l","ˈ","ɛ","d","ʑ","ɪ","m","ɐ"," ","s","ˈ","u","n","t","s","ʊ"," ","ɪ"," ","ɡ","l","ˈ","ɛ","d","ɐ"," ","ʊ"," ","s","m","ˈ","ɛ","r","ʊ"," ","t","ˈ","o","ɡ","ɐ"," ","z","ˈ","a","s","t","o","r","ɐ","."],"processed_text":"Дуга се обично види на застору кишних капи када посматрач стоји окренут леђима Сунцу и гледа у смеру тога застора.","text":"Дуга се обично види на застору кишних капи када посматрач стоји окренут леђима Сунцу и гледа у смеру тога застора."} +{"phoneme_ids":[1,0,38,0,30,0,120,0,14,0,32,0,31,0,74,0,3,0,31,0,34,0,120,0,61,0,32,0,24,0,27,0,31,0,32,0,74,0,3,0,31,0,120,0,61,0,3,0,32,0,120,0,14,0,17,0,50,0,3,0,30,0,120,0,14,0,38,0,24,0,50,0,108,0,100,0,3,0,26,0,120,0,14,0,3,0,31,0,34,0,120,0,27,0,22,0,18,0,3,0,120,0,27,0,31,0,26,0,27,0,34,0,26,0,61,0,3,0,23,0,120,0,27,0,25,0,28,0,27,0,26,0,121,0,61,0,26,0,32,0,61,0,8,0,3,0,31,0,32,0,34,0,120,0,51,0,30,0,51,0,22,0,121,0,100,0,32,0,55,0,74,0,3,0,120,0,27,0,28,0,32,0,74,0,32,0,96,0,23,0,100,0,3,0,28,0,30,0,120,0,61,0,32,0,31,0,32,0,50,0,34,0,100,0,3,0,100,0,3,0,34,0,120,0,21,0,17,0,100,0,3,0,32,0,30,0,120,0,14,0,23,0,61,0,3,0,30,0,120,0,14,0,38,0,24,0,74,0,32,0,96,0,121,0,74,0,32,0,74,0,20,0,3,0,15,0,120,0,27,0,22,0,50,0,8,0,3,0,96,0,32,0,27,0,3,0,100,0,3,0,31,0,32,0,34,0,120,0,51,0,30,0,74,0,3,0,28,0,30,0,120,0,61,0,32,0,31,0,32,0,50,0,34,0,24,0,22,0,50,0,3,0,31,0,28,0,120,0,61,0,23,0,32,0,51,0,30,0,3,0,31,0,34,0,120,0,61,0,32,0,24,0,27,0,31,0,32,0,74,0,10,0,2],"phonemes":["z","r","ˈ","a","t","s","ɪ"," ","s","v","ˈ","ɛ","t","l","o","s","t","ɪ"," ","s","ˈ","ɛ"," ","t","ˈ","a","d","ɐ"," ","r","ˈ","a","z","l","ɐ","ʒ","ʊ"," ","n","ˈ","a"," ","s","v","ˈ","o","j","e"," ","ˈ","o","s","n","o","v","n","ɛ"," ","k","ˈ","o","m","p","o","n","ˌ","ɛ","n","t","ɛ",","," ","s","t","v","ˈ","ɑ","r","ɑ","j","ˌ","ʊ","t","ɕ","ɪ"," ","ˈ","o","p","t","ɪ","t","ʃ","k","ʊ"," ","p","r","ˈ","ɛ","t","s","t","ɐ","v","ʊ"," ","ʊ"," ","v","ˈ","i","d","ʊ"," ","t","r","ˈ","a","k","ɛ"," ","r","ˈ","a","z","l","ɪ","t","ʃ","ˌ","ɪ","t","ɪ","h"," ","b","ˈ","o","j","ɐ",","," ","ʃ","t","o"," ","ʊ"," ","s","t","v","ˈ","ɑ","r","ɪ"," ","p","r","ˈ","ɛ","t","s","t","ɐ","v","l","j","ɐ"," ","s","p","ˈ","ɛ","k","t","ɑ","r"," ","s","v","ˈ","ɛ","t","l","o","s","t","ɪ","."],"processed_text":"Зраци светлости се тада разлажу на своје основне компоненте, стварајући оптичку представу у виду траке различитих боја, што у ствари представља спектар светлости.","text":"Зраци светлости се тада разлажу на своје основне компоненте, стварајући оптичку представу у виду траке различитих боја, што у ствари представља спектар светлости."} +{"phoneme_ids":[1,0,120,0,33,0,26,0,100,0,32,0,30,0,121,0,50,0,96,0,82,0,50,0,28,0,30,0,120,0,21,0,25,0,51,0,30,0,26,0,50,0,3,0,17,0,120,0,33,0,66,0,50,0,3,0,26,0,120,0,14,0,31,0,32,0,51,0,22,0,18,0,3,0,23,0,120,0,14,0,17,0,50,0,3,0,31,0,120,0,61,0,3,0,31,0,120,0,33,0,26,0,32,0,96,0,61,0,34,0,3,0,38,0,30,0,120,0,14,0,23,0,3,0,22,0,120,0,18,0,17,0,26,0,27,0,25,0,3,0,28,0,30,0,120,0,61,0,24,0,27,0,25,0,74,0,3,0,31,0,120,0,14,0,3,0,28,0,120,0,27,0,24,0,61,0,17,0,107,0,121,0,74,0,26,0,61,0,3,0,23,0,120,0,14,0,28,0,104,0,74,0,32,0,31,0,61,0,10,0,2],"phonemes":["ˈ","u","n","ʊ","t","r","ˌ","ɐ","ʃ","ɲ","ɐ","p","r","ˈ","i","m","ɑ","r","n","ɐ"," ","d","ˈ","u","ɡ","ɐ"," ","n","ˈ","a","s","t","ɑ","j","e"," ","k","ˈ","a","d","ɐ"," ","s","ˈ","ɛ"," ","s","ˈ","u","n","t","ʃ","ɛ","v"," ","z","r","ˈ","a","k"," ","j","ˈ","e","d","n","o","m"," ","p","r","ˈ","ɛ","l","o","m","ɪ"," ","s","ˈ","a"," ","p","ˈ","o","l","ɛ","d","ʑ","ˌ","ɪ","n","ɛ"," ","k","ˈ","a","p","ʎ","ɪ","t","s","ɛ","."],"processed_text":"Унутрашња-примарна дуга настаје када се сунчев зрак једном преломи са полеђине капљице.","text":"Унутрашња-примарна дуга настаје када се сунчев зрак једном преломи са полеђине капљице."} +{"phoneme_ids":[1,0,28,0,24,0,120,0,14,0,34,0,50,0,3,0,31,0,34,0,120,0,61,0,32,0,24,0,27,0,31,0,32,0,3,0,31,0,120,0,61,0,3,0,28,0,30,0,120,0,61,0,24,0,50,0,25,0,50,0,3,0,28,0,120,0,27,0,17,0,3,0,34,0,120,0,61,0,32,0,55,0,74,0,25,0,3,0,120,0,33,0,66,0,24,0,27,0,25,0,3,0,26,0,120,0,61,0,66,0,27,0,3,0,32,0,31,0,30,0,34,0,120,0,61,0,26,0,50,0,3,0,31,0,34,0,120,0,61,0,32,0,24,0,27,0,31,0,32,0,8,0,3,0,120,0,14,0,24,0,74,0,3,0,38,0,15,0,120,0,27,0,66,0,3,0,30,0,120,0,61,0,19,0,24,0,61,0,23,0,31,0,121,0,74,0,22,0,18,0,3,0,31,0,120,0,14,0,3,0,28,0,120,0,27,0,24,0,61,0,17,0,107,0,121,0,74,0,26,0,61,0,3,0,23,0,120,0,14,0,28,0,74,0,8,0,3,0,28,0,24,0,120,0,14,0,34,0,50,0,3,0,31,0,34,0,120,0,61,0,32,0,24,0,27,0,31,0,32,0,3,0,120,0,21,0,38,0,24,0,50,0,38,0,74,0,3,0,28,0,120,0,27,0,17,0,3,0,25,0,120,0,14,0,82,0,74,0,25,0,3,0,120,0,33,0,66,0,24,0,27,0,25,0,3,0,120,0,27,0,32,0,3,0,32,0,31,0,30,0,34,0,120,0,61,0,26,0,61,0,10,0,2],"phonemes":["p","l","ˈ","a","v","ɐ"," ","s","v","ˈ","ɛ","t","l","o","s","t"," ","s","ˈ","ɛ"," ","p","r","ˈ","ɛ","l","ɐ","m","ɐ"," ","p","ˈ","o","d"," ","v","ˈ","ɛ","t","ɕ","ɪ","m"," ","ˈ","u","ɡ","l","o","m"," ","n","ˈ","ɛ","ɡ","o"," ","t","s","r","v","ˈ","ɛ","n","ɐ"," ","s","v","ˈ","ɛ","t","l","o","s","t",","," ","ˈ","a","l","ɪ"," ","z","b","ˈ","o","ɡ"," ","r","ˈ","ɛ","f","l","ɛ","k","s","ˌ","ɪ","j","e"," ","s","ˈ","a"," ","p","ˈ","o","l","ɛ","d","ʑ","ˌ","ɪ","n","ɛ"," ","k","ˈ","a","p","ɪ",","," ","p","l","ˈ","a","v","ɐ"," ","s","v","ˈ","ɛ","t","l","o","s","t"," ","ˈ","i","z","l","ɐ","z","ɪ"," ","p","ˈ","o","d"," ","m","ˈ","a","ɲ","ɪ","m"," ","ˈ","u","ɡ","l","o","m"," ","ˈ","o","t"," ","t","s","r","v","ˈ","ɛ","n","ɛ","."],"processed_text":"Плава светлост се прелама под већим углом него црвена светлост, али због рефлексије са полеђине капи, плава светлост излази под мањим углом од црвене.","text":"Плава светлост се прелама под већим углом него црвена светлост, али због рефлексије са полеђине капи, плава светлост излази под мањим углом од црвене."} +{"phoneme_ids":[1,0,38,0,120,0,14,0,32,0,27,0,3,0,22,0,18,0,3,0,28,0,24,0,120,0,14,0,34,0,50,0,3,0,15,0,120,0,27,0,22,0,50,0,3,0,31,0,120,0,14,0,3,0,120,0,33,0,26,0,100,0,32,0,30,0,121,0,50,0,96,0,82,0,18,0,3,0,31,0,32,0,30,0,120,0,14,0,26,0,61,0,8,0,3,0,50,0,3,0,32,0,31,0,30,0,34,0,120,0,61,0,26,0,50,0,3,0,31,0,120,0,14,0,3,0,31,0,28,0,120,0,27,0,104,0,50,0,96,0,82,0,18,0,3,0,31,0,32,0,30,0,120,0,14,0,26,0,61,0,3,0,28,0,30,0,120,0,21,0,25,0,51,0,30,0,26,0,61,0,3,0,17,0,120,0,33,0,66,0,61,0,10,0,2],"phonemes":["z","ˈ","a","t","o"," ","j","e"," ","p","l","ˈ","a","v","ɐ"," ","b","ˈ","o","j","ɐ"," ","s","ˈ","a"," ","ˈ","u","n","ʊ","t","r","ˌ","ɐ","ʃ","ɲ","e"," ","s","t","r","ˈ","a","n","ɛ",","," ","ɐ"," ","t","s","r","v","ˈ","ɛ","n","ɐ"," ","s","ˈ","a"," ","s","p","ˈ","o","ʎ","ɐ","ʃ","ɲ","e"," ","s","t","r","ˈ","a","n","ɛ"," ","p","r","ˈ","i","m","ɑ","r","n","ɛ"," ","d","ˈ","u","ɡ","ɛ","."],"processed_text":"Зато је плава боја са унутрашње стране, а црвена са спољашње стране примарне дуге.","text":"Зато је плава боја са унутрашње стране, а црвена са спољашње стране примарне дуге."} +{"phoneme_ids":[1,0,31,0,28,0,120,0,27,0,104,0,50,0,96,0,82,0,50,0,31,0,120,0,61,0,23,0,100,0,26,0,17,0,121,0,51,0,30,0,26,0,50,0,3,0,17,0,120,0,33,0,66,0,50,0,3,0,26,0,120,0,14,0,31,0,32,0,51,0,22,0,18,0,3,0,23,0,120,0,14,0,17,0,50,0,3,0,31,0,120,0,61,0,3,0,31,0,120,0,33,0,26,0,32,0,96,0,61,0,34,0,3,0,38,0,30,0,120,0,14,0,23,0,3,0,17,0,34,0,120,0,27,0,31,0,32,0,30,0,100,0,23,0,27,0,3,0,28,0,30,0,120,0,61,0,24,0,27,0,25,0,74,0,3,0,31,0,120,0,14,0,3,0,28,0,120,0,27,0,24,0,61,0,17,0,107,0,121,0,74,0,26,0,61,0,3,0,23,0,120,0,14,0,28,0,104,0,74,0,32,0,31,0,61,0,10,0,2],"phonemes":["s","p","ˈ","o","ʎ","ɐ","ʃ","ɲ","ɐ","s","ˈ","ɛ","k","ʊ","n","d","ˌ","ɑ","r","n","ɐ"," ","d","ˈ","u","ɡ","ɐ"," ","n","ˈ","a","s","t","ɑ","j","e"," ","k","ˈ","a","d","ɐ"," ","s","ˈ","ɛ"," ","s","ˈ","u","n","t","ʃ","ɛ","v"," ","z","r","ˈ","a","k"," ","d","v","ˈ","o","s","t","r","ʊ","k","o"," ","p","r","ˈ","ɛ","l","o","m","ɪ"," ","s","ˈ","a"," ","p","ˈ","o","l","ɛ","d","ʑ","ˌ","ɪ","n","ɛ"," ","k","ˈ","a","p","ʎ","ɪ","t","s","ɛ","."],"processed_text":"Спољашња-секундарна дуга настаје када се сунчев зрак двоструко преломи са полеђине капљице.","text":"Спољашња-секундарна дуга настаје када се сунчев зрак двоструко преломи са полеђине капљице."} +{"phoneme_ids":[1,0,28,0,24,0,120,0,14,0,34,0,50,0,3,0,31,0,34,0,120,0,61,0,32,0,24,0,27,0,31,0,32,0,3,0,31,0,120,0,61,0,3,0,28,0,30,0,120,0,61,0,24,0,50,0,25,0,50,0,3,0,28,0,120,0,27,0,17,0,3,0,34,0,120,0,61,0,32,0,55,0,74,0,25,0,3,0,120,0,33,0,66,0,24,0,27,0,25,0,3,0,28,0,120,0,14,0,3,0,22,0,18,0,3,0,31,0,32,0,120,0,27,0,66,0,50,0,3,0,120,0,27,0,26,0,50,0,3,0,31,0,120,0,14,0,3,0,31,0,28,0,120,0,27,0,104,0,50,0,96,0,82,0,18,0,3,0,31,0,32,0,30,0,120,0,14,0,26,0,61,0,8,0,3,0,50,0,3,0,32,0,31,0,30,0,34,0,120,0,61,0,26,0,50,0,3,0,31,0,120,0,14,0,3,0,120,0,33,0,26,0,100,0,32,0,30,0,121,0,50,0,96,0,82,0,18,0,3,0,31,0,32,0,30,0,120,0,14,0,26,0,61,0,3,0,31,0,120,0,61,0,23,0,100,0,26,0,17,0,121,0,51,0,30,0,26,0,61,0,3,0,17,0,120,0,33,0,66,0,61,0,10,0,2],"phonemes":["p","l","ˈ","a","v","ɐ"," ","s","v","ˈ","ɛ","t","l","o","s","t"," ","s","ˈ","ɛ"," ","p","r","ˈ","ɛ","l","ɐ","m","ɐ"," ","p","ˈ","o","d"," ","v","ˈ","ɛ","t","ɕ","ɪ","m"," ","ˈ","u","ɡ","l","o","m"," ","p","ˈ","a"," ","j","e"," ","s","t","ˈ","o","ɡ","ɐ"," ","ˈ","o","n","ɐ"," ","s","ˈ","a"," ","s","p","ˈ","o","ʎ","ɐ","ʃ","ɲ","e"," ","s","t","r","ˈ","a","n","ɛ",","," ","ɐ"," ","t","s","r","v","ˈ","ɛ","n","ɐ"," ","s","ˈ","a"," ","ˈ","u","n","ʊ","t","r","ˌ","ɐ","ʃ","ɲ","e"," ","s","t","r","ˈ","a","n","ɛ"," ","s","ˈ","ɛ","k","ʊ","n","d","ˌ","ɑ","r","n","ɛ"," ","d","ˈ","u","ɡ","ɛ","."],"processed_text":"Плава светлост се прелама под већим углом па је стога она са спољашње стране, а црвена са унутрашње стране секундарне дуге.","text":"Плава светлост се прелама под већим углом па је стога она са спољашње стране, а црвена са унутрашње стране секундарне дуге."} diff --git a/piper/piper/etc/test_sentences/test_sw.jsonl b/piper/piper/etc/test_sentences/test_sw.jsonl new file mode 100644 index 0000000..d75d95e --- /dev/null +++ b/piper/piper/etc/test_sentences/test_sw.jsonl @@ -0,0 +1,6 @@ +{"phoneme_ids":[1,0,33,0,28,0,120,0,21,0,26,0,17,0,18,0,3,0,35,0,14,0,3,0,25,0,34,0,120,0,33,0,14,0,3,0,26,0,21,0,3,0,32,0,120,0,14,0,27,0,3,0,24,0,14,0,3,0,30,0,120,0,14,0,44,0,66,0,21,0,3,0,25,0,15,0,121,0,14,0,24,0,21,0,25,0,15,0,120,0,14,0,24,0,21,0,3,0,14,0,44,0,66,0,120,0,14,0,26,0,21,0,3,0,14,0,25,0,15,0,120,0,14,0,24,0,27,0,3,0,24,0,121,0,21,0,26,0,14,0,35,0,120,0,18,0,38,0,14,0,3,0,23,0,121,0,33,0,27,0,26,0,18,0,23,0,120,0,14,0,26,0,14,0,3,0,35,0,14,0,23,0,120,0,14,0,32,0,21,0,3,0,64,0,120,0,33,0,14,0,3,0,20,0,121,0,33,0,14,0,44,0,66,0,120,0,14,0,38,0,14,0,3,0,23,0,121,0,33,0,28,0,21,0,32,0,120,0,21,0,14,0,3,0,25,0,14,0,32,0,120,0,27,0,26,0,18,0,3,0,22,0,14,0,3,0,25,0,34,0,120,0,33,0,14,0,3,0,121,0,21,0,26,0,14,0,22,0,121,0,27,0,14,0,44,0,66,0,120,0,33,0,23,0,14,0,10,0,2],"phonemes":["u","p","ˈ","i","n","d","e"," ","w","a"," ","m","v","ˈ","u","a"," ","n","i"," ","t","ˈ","a","o"," ","l","a"," ","r","ˈ","a","ŋ","ɡ","i"," ","m","b","ˌ","a","l","i","m","b","ˈ","a","l","i"," ","a","ŋ","ɡ","ˈ","a","n","i"," ","a","m","b","ˈ","a","l","o"," ","l","ˌ","i","n","a","w","ˈ","e","z","a"," ","k","ˌ","u","o","n","e","k","ˈ","a","n","a"," ","w","a","k","ˈ","a","t","i"," ","ɟ","ˈ","u","a"," ","h","ˌ","u","a","ŋ","ɡ","ˈ","a","z","a"," ","k","ˌ","u","p","i","t","ˈ","i","a"," ","m","a","t","ˈ","o","n","e"," ","j","a"," ","m","v","ˈ","u","a"," ","ˌ","i","n","a","j","ˌ","o","a","ŋ","ɡ","ˈ","u","k","a","."],"processed_text":"Upinde wa mvua ni tao la rangi mbalimbali angani ambalo linaweza kuonekana wakati Jua huangaza kupitia matone ya mvua inayoanguka.","text":"Upinde wa mvua ni tao la rangi mbalimbali angani ambalo linaweza kuonekana wakati Jua huangaza kupitia matone ya mvua inayoanguka."} +{"phoneme_ids":[1,0,25,0,19,0,120,0,14,0,26,0,27,0,3,0,35,0,14,0,3,0,30,0,120,0,14,0,44,0,66,0,21,0,3,0,20,0,120,0,21,0,38,0,27,0,3,0,20,0,33,0,120,0,14,0,26,0,38,0,14,0,3,0,26,0,14,0,3,0,82,0,18,0,23,0,120,0,33,0,26,0,17,0,33,0,3,0,82,0,64,0,120,0,18,0,3,0,26,0,14,0,3,0,20,0,121,0,33,0,15,0,14,0,17,0,21,0,24,0,120,0,21,0,23,0,14,0,3,0,23,0,121,0,33,0,28,0,21,0,32,0,120,0,21,0,14,0,3,0,30,0,120,0,14,0,44,0,66,0,21,0,3,0,22,0,14,0,3,0,32,0,96,0,120,0,33,0,44,0,66,0,35,0,14,0,8,0,82,0,64,0,120,0,14,0,26,0,27,0,8,0,23,0,21,0,64,0,120,0,14,0,26,0,21,0,8,0,15,0,24,0,120,0,33,0,33,0,8,0,26,0,14,0,3,0,121,0,33,0,30,0,33,0,64,0,33,0,120,0,14,0,26,0,21,0,3,0,26,0,17,0,120,0,14,0,26,0,21,0,10,0,2],"phonemes":["m","f","ˈ","a","n","o"," ","w","a"," ","r","ˈ","a","ŋ","ɡ","i"," ","h","ˈ","i","z","o"," ","h","u","ˈ","a","n","z","a"," ","n","a"," ","ɲ","e","k","ˈ","u","n","d","u"," ","ɲ","ɟ","ˈ","e"," ","n","a"," ","h","ˌ","u","b","a","d","i","l","ˈ","i","k","a"," ","k","ˌ","u","p","i","t","ˈ","i","a"," ","r","ˈ","a","ŋ","ɡ","i"," ","j","a"," ","t","ʃ","ˈ","u","ŋ","ɡ","w","a",",","ɲ","ɟ","ˈ","a","n","o",",","k","i","ɟ","ˈ","a","n","i",",","b","l","ˈ","u","u",",","n","a"," ","ˌ","u","r","u","ɟ","u","ˈ","a","n","i"," ","n","d","ˈ","a","n","i","."],"processed_text":"Mfano wa rangi hizo huanza na nyekundu nje na hubadilika kupitia rangi ya chungwa, njano, kijani, bluu, na urujuani ndani.","text":"Mfano wa rangi hizo huanza na nyekundu nje na hubadilika kupitia rangi ya chungwa, njano, kijani, bluu, na urujuani ndani."} +{"phoneme_ids":[1,0,30,0,120,0,14,0,44,0,66,0,21,0,3,0,20,0,120,0,21,0,38,0,21,0,3,0,26,0,14,0,3,0,121,0,33,0,19,0,33,0,14,0,32,0,120,0,14,0,26,0,27,0,3,0,26,0,21,0,3,0,31,0,18,0,20,0,120,0,18,0,25,0,33,0,3,0,22,0,14,0,3,0,31,0,28,0,120,0,18,0,23,0,32,0,30,0,14,0,3,0,22,0,14,0,3,0,26,0,120,0,33,0,30,0,33,0,10,0,2],"phonemes":["r","ˈ","a","ŋ","ɡ","i"," ","h","ˈ","i","z","i"," ","n","a"," ","ˌ","u","f","u","a","t","ˈ","a","n","o"," ","n","i"," ","s","e","h","ˈ","e","m","u"," ","j","a"," ","s","p","ˈ","e","k","t","r","a"," ","j","a"," ","n","ˈ","u","r","u","."],"processed_text":"Rangi hizi na ufuatano ni sehemu ya spektra ya nuru.","text":"Rangi hizi na ufuatano ni sehemu ya spektra ya nuru."} +{"phoneme_ids":[1,0,33,0,28,0,120,0,21,0,26,0,17,0,18,0,3,0,35,0,14,0,3,0,25,0,34,0,120,0,33,0,14,0,3,0,20,0,33,0,120,0,33,0,26,0,17,0,35,0,14,0,3,0,35,0,14,0,23,0,120,0,14,0,32,0,21,0,3,0,25,0,35,0,120,0,14,0,44,0,66,0,14,0,3,0,121,0,33,0,25,0,18,0,28,0,120,0,21,0,26,0,17,0,14,0,3,0,121,0,33,0,23,0,21,0,21,0,44,0,66,0,120,0,21,0,14,0,3,0,25,0,14,0,32,0,120,0,27,0,26,0,18,0,3,0,22,0,14,0,3,0,25,0,120,0,14,0,64,0,21,0,8,0,121,0,33,0,25,0,18,0,66,0,121,0,14,0,35,0,14,0,82,0,120,0,21,0,23,0,14,0,3,0,23,0,121,0,33,0,35,0,14,0,3,0,30,0,120,0,14,0,44,0,66,0,21,0,3,0,32,0,121,0,27,0,19,0,14,0,120,0,33,0,32,0,21,0,8,0,26,0,14,0,3,0,23,0,121,0,33,0,30,0,33,0,17,0,120,0,21,0,96,0,35,0,14,0,3,0,82,0,120,0,33,0,25,0,14,0,10,0,2],"phonemes":["u","p","ˈ","i","n","d","e"," ","w","a"," ","m","v","ˈ","u","a"," ","h","u","ˈ","u","n","d","w","a"," ","w","a","k","ˈ","a","t","i"," ","m","w","ˈ","a","ŋ","ɡ","a"," ","ˌ","u","m","e","p","ˈ","i","n","d","a"," ","ˌ","u","k","i","i","ŋ","ɡ","ˈ","i","a"," ","m","a","t","ˈ","o","n","e"," ","j","a"," ","m","ˈ","a","ɟ","i",",","ˌ","u","m","e","ɡ","ˌ","a","w","a","ɲ","ˈ","i","k","a"," ","k","ˌ","u","w","a"," ","r","ˈ","a","ŋ","ɡ","i"," ","t","ˌ","o","f","a","ˈ","u","t","i",",","n","a"," ","k","ˌ","u","r","u","d","ˈ","i","ʃ","w","a"," ","ɲ","ˈ","u","m","a","."],"processed_text":"Upinde wa mvua huundwa wakati mwanga umepinda ukiingia matone ya maji, umegawanyika kuwa rangi tofauti, na kurudishwa nyuma.","text":"Upinde wa mvua huundwa wakati mwanga umepinda ukiingia matone ya maji, umegawanyika kuwa rangi tofauti, na kurudishwa nyuma."} +{"phoneme_ids":[1,0,20,0,120,0,14,0,28,0,14,0,3,0,31,0,28,0,120,0,18,0,23,0,32,0,30,0,14,0,3,0,22,0,14,0,3,0,26,0,120,0,33,0,30,0,33,0,3,0,121,0,21,0,26,0,14,0,22,0,121,0,27,0,27,0,26,0,18,0,23,0,120,0,14,0,26,0,14,0,3,0,14,0,25,0,15,0,120,0,14,0,22,0,27,0,3,0,31,0,121,0,21,0,31,0,21,0,3,0,32,0,121,0,33,0,26,0,14,0,120,0,27,0,26,0,14,0,3,0,23,0,35,0,14,0,3,0,25,0,120,0,14,0,32,0,96,0,27,0,3,0,23,0,121,0,14,0,25,0,14,0,3,0,82,0,18,0,120,0,33,0,28,0,18,0,3,0,32,0,120,0,33,0,10,0,2],"phonemes":["h","ˈ","a","p","a"," ","s","p","ˈ","e","k","t","r","a"," ","j","a"," ","n","ˈ","u","r","u"," ","ˌ","i","n","a","j","ˌ","o","o","n","e","k","ˈ","a","n","a"," ","a","m","b","ˈ","a","j","o"," ","s","ˌ","i","s","i"," ","t","ˌ","u","n","a","ˈ","o","n","a"," ","k","w","a"," ","m","ˈ","a","t","ʃ","o"," ","k","ˌ","a","m","a"," ","ɲ","e","ˈ","u","p","e"," ","t","ˈ","u","."],"processed_text":"Hapa spektra ya nuru inayoonekana ambayo sisi tunaona kwa macho kama nyeupe tu.","text":"Hapa spektra ya nuru inayoonekana ambayo sisi tunaona kwa macho kama nyeupe tu."} +{"phoneme_ids":[1,0,66,0,120,0,14,0,30,0,21,0,3,0,24,0,120,0,14,0,44,0,66,0,33,0,3,0,24,0,121,0,21,0,26,0,14,0,24,0,121,0,27,0,14,0,44,0,66,0,120,0,14,0,25,0,14,0,3,0,24,0,121,0,21,0,25,0,18,0,64,0,120,0,14,0,14,0,3,0,26,0,14,0,3,0,25,0,21,0,23,0,120,0,33,0,44,0,66,0,14,0,10,0,2],"phonemes":["ɡ","ˈ","a","r","i"," ","l","ˈ","a","ŋ","ɡ","u"," ","l","ˌ","i","n","a","l","ˌ","o","a","ŋ","ɡ","ˈ","a","m","a"," ","l","ˌ","i","m","e","ɟ","ˈ","a","a"," ","n","a"," ","m","i","k","ˈ","u","ŋ","ɡ","a","."],"processed_text":"Gari langu linaloangama limejaa na mikunga.","text":"Gari langu linaloangama limejaa na mikunga."} diff --git a/piper/piper/etc/test_sentences/test_tr.jsonl b/piper/piper/etc/test_sentences/test_tr.jsonl new file mode 100644 index 0000000..43dc5a6 --- /dev/null +++ b/piper/piper/etc/test_sentences/test_tr.jsonl @@ -0,0 +1,5 @@ +{"phoneme_ids":[1,0,64,0,45,0,23,0,122,0,33,0,96,0,14,0,122,0,120,0,79,0,8,0,64,0,37,0,26,0,120,0,61,0,96,0,3,0,79,0,96,0,79,0,26,0,75,0,14,0,92,0,79,0,26,0,120,0,79,0,26,0,3,0,22,0,14,0,122,0,25,0,120,0,100,0,30,0,3,0,17,0,14,0,25,0,75,0,14,0,75,0,14,0,92,0,79,0,26,0,17,0,120,0,14,0,3,0,34,0,18,0,22,0,121,0,14,0,3,0,31,0,120,0,74,0,31,0,3,0,15,0,33,0,75,0,100,0,32,0,75,0,14,0,92,0,79,0,26,0,17,0,120,0,14,0,3,0,22,0,14,0,26,0,31,0,79,0,25,0,14,0,31,0,120,0,79,0,3,0,34,0,61,0,3,0,23,0,79,0,92,0,79,0,75,0,25,0,14,0,31,0,120,0,79,0,22,0,75,0,14,0,3,0,25,0,61,0,22,0,17,0,14,0,26,0,120,0,14,0,3,0,64,0,18,0,24,0,120,0,39,0,26,0,3,0,34,0,61,0,3,0,79,0,96,0,120,0,79,0,23,0,3,0,32,0,14,0,22,0,19,0,120,0,79,0,3,0,30,0,39,0,26,0,23,0,24,0,18,0,92,0,21,0,26,0,120,0,74,0,26,0,3,0,15,0,74,0,30,0,3,0,22,0,120,0,14,0,22,0,3,0,96,0,61,0,23,0,24,0,74,0,26,0,17,0,120,0,61,0,3,0,64,0,45,0,92,0,42,0,26,0,17,0,120,0,42,0,122,0,3,0,25,0,18,0,32,0,18,0,27,0,92,0,27,0,75,0,27,0,108,0,120,0,74,0,23,0,3,0,15,0,74,0,30,0,3,0,27,0,75,0,120,0,14,0,22,0,17,0,79,0,30,0,10,0,2],"phonemes":["ɟ","œ","k","ː","u","ʃ","a","ː","ˈ","ɯ",",","ɟ","y","n","ˈ","ɛ","ʃ"," ","ɯ","ʃ","ɯ","n","ɫ","a","ɾ","ɯ","n","ˈ","ɯ","n"," ","j","a","ː","m","ˈ","ʊ","r"," ","d","a","m","ɫ","a","ɫ","a","ɾ","ɯ","n","d","ˈ","a"," ","v","e","j","ˌ","a"," ","s","ˈ","ɪ","s"," ","b","u","ɫ","ʊ","t","ɫ","a","ɾ","ɯ","n","d","ˈ","a"," ","j","a","n","s","ɯ","m","a","s","ˈ","ɯ"," ","v","ɛ"," ","k","ɯ","ɾ","ɯ","ɫ","m","a","s","ˈ","ɯ","j","ɫ","a"," ","m","ɛ","j","d","a","n","ˈ","a"," ","ɟ","e","l","ˈ","æ","n"," ","v","ɛ"," ","ɯ","ʃ","ˈ","ɯ","k"," ","t","a","j","f","ˈ","ɯ"," ","r","æ","n","k","l","e","ɾ","i","n","ˈ","ɪ","n"," ","b","ɪ","r"," ","j","ˈ","a","j"," ","ʃ","ɛ","k","l","ɪ","n","d","ˈ","ɛ"," ","ɟ","œ","ɾ","ø","n","d","ˈ","ø","ː"," ","m","e","t","e","o","ɾ","o","ɫ","o","ʒ","ˈ","ɪ","k"," ","b","ɪ","r"," ","o","ɫ","ˈ","a","j","d","ɯ","r","."],"processed_text":"Gökkuşağı, güneş ışınlarının yağmur damlalarında veya sis bulutlarında yansıması ve kırılmasıyla meydana gelen ve ışık tayfı renklerinin bir yay şeklinde göründüğü meteorolojik bir olaydır.","text":"Gökkuşağı, güneş ışınlarının yağmur damlalarında veya sis bulutlarında yansıması ve kırılmasıyla meydana gelen ve ışık tayfı renklerinin bir yay şeklinde göründüğü meteorolojik bir olaydır."} +{"phoneme_ids":[1,0,64,0,45,0,23,0,122,0,33,0,96,0,14,0,122,0,79,0,26,0,17,0,14,0,23,0,120,0,74,0,3,0,30,0,39,0,26,0,23,0,24,0,120,0,61,0,30,0,3,0,15,0,74,0,30,0,3,0,31,0,28,0,120,0,61,0,23,0,32,0,30,0,100,0,25,0,3,0,27,0,75,0,100,0,96,0,32,0,33,0,92,0,120,0,100,0,30,0,10,0,2],"phonemes":["ɟ","œ","k","ː","u","ʃ","a","ː","ɯ","n","d","a","k","ˈ","ɪ"," ","r","æ","n","k","l","ˈ","ɛ","r"," ","b","ɪ","r"," ","s","p","ˈ","ɛ","k","t","r","ʊ","m"," ","o","ɫ","ʊ","ʃ","t","u","ɾ","ˈ","ʊ","r","."],"processed_text":"Gökkuşağındaki renkler bir spektrum oluşturur.","text":"Gökkuşağındaki renkler bir spektrum oluşturur."} +{"phoneme_ids":[1,0,32,0,21,0,28,0,120,0,74,0,23,0,3,0,15,0,74,0,30,0,3,0,64,0,45,0,23,0,122,0,33,0,96,0,14,0,122,0,120,0,79,0,3,0,23,0,120,0,79,0,30,0,25,0,79,0,38,0,79,0,8,0,32,0,33,0,92,0,100,0,26,0,17,0,108,0,120,0,100,0,8,0,31,0,14,0,92,0,120,0,79,0,8,0,22,0,18,0,96,0,120,0,74,0,24,0,8,0,25,0,14,0,122,0,34,0,120,0,74,0,8,0,75,0,14,0,17,0,108,0,21,0,34,0,120,0,61,0,30,0,32,0,3,0,34,0,61,0,3,0,25,0,120,0,54,0,30,0,3,0,30,0,39,0,26,0,23,0,24,0,18,0,92,0,74,0,26,0,17,0,120,0,39,0,26,0,3,0,25,0,61,0,22,0,17,0,14,0,26,0,120,0,14,0,3,0,64,0,18,0,24,0,120,0,39,0,26,0,3,0,15,0,74,0,30,0,3,0,30,0,120,0,39,0,26,0,23,0,3,0,31,0,79,0,92,0,14,0,31,0,79,0,26,0,120,0,14,0,3,0,31,0,14,0,20,0,120,0,74,0,28,0,3,0,15,0,74,0,30,0,3,0,34,0,18,0,22,0,121,0,14,0,3,0,17,0,14,0,20,0,120,0,14,0,3,0,19,0,120,0,14,0,38,0,75,0,14,0,3,0,14,0,22,0,26,0,120,0,79,0,3,0,25,0,61,0,30,0,23,0,61,0,38,0,24,0,120,0,74,0,3,0,14,0,30,0,23,0,75,0,14,0,30,0,17,0,120,0,14,0,26,0,3,0,21,0,15,0,14,0,92,0,18,0,32,0,122,0,120,0,74,0,30,0,10,0,2],"phonemes":["t","i","p","ˈ","ɪ","k"," ","b","ɪ","r"," ","ɟ","œ","k","ː","u","ʃ","a","ː","ˈ","ɯ"," ","k","ˈ","ɯ","r","m","ɯ","z","ɯ",",","t","u","ɾ","ʊ","n","d","ʒ","ˈ","ʊ",",","s","a","ɾ","ˈ","ɯ",",","j","e","ʃ","ˈ","ɪ","l",",","m","a","ː","v","ˈ","ɪ",",","ɫ","a","d","ʒ","i","v","ˈ","ɛ","r","t"," ","v","ɛ"," ","m","ˈ","ɔ","r"," ","r","æ","n","k","l","e","ɾ","ɪ","n","d","ˈ","æ","n"," ","m","ɛ","j","d","a","n","ˈ","a"," ","ɟ","e","l","ˈ","æ","n"," ","b","ɪ","r"," ","r","ˈ","æ","n","k"," ","s","ɯ","ɾ","a","s","ɯ","n","ˈ","a"," ","s","a","h","ˈ","ɪ","p"," ","b","ɪ","r"," ","v","e","j","ˌ","a"," ","d","a","h","ˈ","a"," ","f","ˈ","a","z","ɫ","a"," ","a","j","n","ˈ","ɯ"," ","m","ɛ","r","k","ɛ","z","l","ˈ","ɪ"," ","a","r","k","ɫ","a","r","d","ˈ","a","n"," ","i","b","a","ɾ","e","t","ː","ˈ","ɪ","r","."],"processed_text":"Tipik bir gökkuşağı kırmızı, turuncu, sarı, yeşil, mavi, lacivert ve mor renklerinden meydana gelen bir renk sırasına sahip bir veya daha fazla aynı merkezli arklardan ibarettir.","text":"Tipik bir gökkuşağı kırmızı, turuncu, sarı, yeşil, mavi, lacivert ve mor renklerinden meydana gelen bir renk sırasına sahip bir veya daha fazla aynı merkezli arklardan ibarettir."} +{"phoneme_ids":[1,0,28,0,21,0,108,0,120,0,14,0,25,0,14,0,75,0,79,0,3,0,20,0,14,0,31,0,32,0,120,0,14,0,3,0,22,0,120,0,14,0,122,0,79,0,38,0,3,0,96,0,27,0,19,0,45,0,92,0,120,0,61,0,3,0,32,0,96,0,14,0,15,0,33,0,17,0,108,0,120,0,14,0,23,0,3,0,64,0,37,0,34,0,39,0,26,0,17,0,120,0,74,0,10,0,2],"phonemes":["p","i","ʒ","ˈ","a","m","a","ɫ","ɯ"," ","h","a","s","t","ˈ","a"," ","j","ˈ","a","ː","ɯ","z"," ","ʃ","o","f","œ","ɾ","ˈ","ɛ"," ","t","ʃ","a","b","u","d","ʒ","ˈ","a","k"," ","ɟ","y","v","æ","n","d","ˈ","ɪ","."],"processed_text":"Pijamalı hasta yağız şoföre çabucak güvendi.","text":"Pijamalı hasta yağız şoföre çabucak güvendi."} +{"phoneme_ids":[1,0,120,0,45,0,23,0,42,0,38,0,3,0,14,0,108,0,120,0,14,0,26,0,3,0,20,0,120,0,14,0,28,0,31,0,61,0,3,0,17,0,42,0,96,0,32,0,120,0,42,0,3,0,22,0,120,0,14,0,34,0,30,0,100,0,25,0,8,0,27,0,17,0,108,0,14,0,122,0,120,0,79,0,3,0,19,0,120,0,39,0,24,0,32,0,96,0,3,0,64,0,21,0,15,0,120,0,74,0,10,0,2],"phonemes":["ˈ","œ","k","ø","z"," ","a","ʒ","ˈ","a","n"," ","h","ˈ","a","p","s","ɛ"," ","d","ø","ʃ","t","ˈ","ø"," ","j","ˈ","a","v","r","ʊ","m",",","o","d","ʒ","a","ː","ˈ","ɯ"," ","f","ˈ","æ","l","t","ʃ"," ","ɟ","i","b","ˈ","ɪ","."],"processed_text":"Öküz ajan hapse düştü yavrum, ocağı felç gibi.","text":"Öküz ajan hapse düştü yavrum, ocağı felç gibi."} diff --git a/piper/piper/etc/test_sentences/test_uk.jsonl b/piper/piper/etc/test_sentences/test_uk.jsonl new file mode 100644 index 0000000..d96b42b --- /dev/null +++ b/piper/piper/etc/test_sentences/test_uk.jsonl @@ -0,0 +1,7 @@ +{"text": "Весе́лка, також ра́йдуга оптичне явище в атмосфері, що являє собою одну, дві чи декілька різнокольорових дуг ,або кіл, якщо дивитися з повітря, що спостерігаються на тлі хмари, якщо вона розташована проти Сонця.", "phonemes": ["в", "е", "с", "е", "́", "л", "к", "а", ",", " ", "т", "а", "к", "о", "ж", " ", "р", "а", "́", "и", "̆", "д", "у", "г", "а", " ", "о", "п", "т", "и", "ч", "н", "е", " ", "я", "в", "и", "щ", "е", " ", "в", " ", "а", "т", "м", "о", "с", "ф", "е", "р", "і", ",", " ", "щ", "о", " ", "я", "в", "л", "я", "є", " ", "с", "о", "б", "о", "ю", " ", "о", "д", "н", "у", ",", " ", "д", "в", "і", " ", "ч", "и", " ", "д", "е", "к", "і", "л", "ь", "к", "а", " ", "р", "і", "з", "н", "о", "к", "о", "л", "ь", "о", "р", "о", "в", "и", "х", " ", "д", "у", "г", " ", ",", "а", "б", "о", " ", "к", "і", "л", ",", " ", "я", "к", "щ", "о", " ", "д", "и", "в", "и", "т", "и", "с", "я", " ", "з", " ", "п", "о", "в", "і", "т", "р", "я", ",", " ", "щ", "о", " ", "с", "п", "о", "с", "т", "е", "р", "і", "г", "а", "ю", "т", "ь", "с", "я", " ", "н", "а", " ", "т", "л", "і", " ", "х", "м", "а", "р", "и", ",", " ", "я", "к", "щ", "о", " ", "в", "о", "н", "а", " ", "р", "о", "з", "т", "а", "ш", "о", "в", "а", "н", "а", " ", "п", "р", "о", "т", "и", " ", "с", "о", "н", "ц", "я", "."], "phoneme_ids": [1, 0, 14, 0, 18, 0, 33, 0, 18, 0, 45, 0, 27, 0, 26, 0, 12, 0, 6, 0, 3, 0, 34, 0, 12, 0, 26, 0, 30, 0, 20, 0, 3, 0, 32, 0, 12, 0, 45, 0, 22, 0, 46, 0, 17, 0, 35, 0, 15, 0, 12, 0, 3, 0, 30, 0, 31, 0, 34, 0, 22, 0, 39, 0, 29, 0, 18, 0, 3, 0, 44, 0, 14, 0, 22, 0, 41, 0, 18, 0, 3, 0, 14, 0, 3, 0, 12, 0, 34, 0, 28, 0, 30, 0, 33, 0, 36, 0, 18, 0, 32, 0, 23, 0, 6, 0, 3, 0, 41, 0, 30, 0, 3, 0, 44, 0, 14, 0, 27, 0, 44, 0, 19, 0, 3, 0, 33, 0, 30, 0, 13, 0, 30, 0, 43, 0, 3, 0, 30, 0, 17, 0, 29, 0, 35, 0, 6, 0, 3, 0, 17, 0, 14, 0, 23, 0, 3, 0, 39, 0, 22, 0, 3, 0, 17, 0, 18, 0, 26, 0, 23, 0, 27, 0, 42, 0, 26, 0, 12, 0, 3, 0, 32, 0, 23, 0, 21, 0, 29, 0, 30, 0, 26, 0, 30, 0, 27, 0, 42, 0, 30, 0, 32, 0, 30, 0, 14, 0, 22, 0, 37, 0, 3, 0, 17, 0, 35, 0, 15, 0, 3, 0, 6, 0, 12, 0, 13, 0, 30, 0, 3, 0, 26, 0, 23, 0, 27, 0, 6, 0, 3, 0, 44, 0, 26, 0, 41, 0, 30, 0, 3, 0, 17, 0, 22, 0, 14, 0, 22, 0, 34, 0, 22, 0, 33, 0, 44, 0, 3, 0, 21, 0, 3, 0, 31, 0, 30, 0, 14, 0, 23, 0, 34, 0, 32, 0, 44, 0, 6, 0, 3, 0, 41, 0, 30, 0, 3, 0, 33, 0, 31, 0, 30, 0, 33, 0, 34, 0, 18, 0, 32, 0, 23, 0, 15, 0, 12, 0, 43, 0, 34, 0, 42, 0, 33, 0, 44, 0, 3, 0, 29, 0, 12, 0, 3, 0, 34, 0, 27, 0, 23, 0, 3, 0, 37, 0, 28, 0, 12, 0, 32, 0, 22, 0, 6, 0, 3, 0, 44, 0, 26, 0, 41, 0, 30, 0, 3, 0, 14, 0, 30, 0, 29, 0, 12, 0, 3, 0, 32, 0, 30, 0, 21, 0, 34, 0, 12, 0, 40, 0, 30, 0, 14, 0, 12, 0, 29, 0, 12, 0, 3, 0, 31, 0, 32, 0, 30, 0, 34, 0, 22, 0, 3, 0, 33, 0, 30, 0, 29, 0, 38, 0, 44, 0, 8, 0, 2]} +{"text": "Червоний колір ми бачимо з зовнішнього боку первинної веселки, а фіолетовий — із внутрішнього.", "phonemes": ["ч", "е", "р", "в", "о", "н", "и", "и", "̆", " ", "к", "о", "л", "і", "р", " ", "м", "и", " ", "б", "а", "ч", "и", "м", "о", " ", "з", " ", "з", "о", "в", "н", "і", "ш", "н", "ь", "о", "г", "о", " ", "б", "о", "к", "у", " ", "п", "е", "р", "в", "и", "н", "н", "о", "і", "̈", " ", "в", "е", "с", "е", "л", "к", "и", ",", " ", "а", " ", "ф", "і", "о", "л", "е", "т", "о", "в", "и", "и", "̆", " ", "—", " ", "і", "з", " ", "в", "н", "у", "т", "р", "і", "ш", "н", "ь", "о", "г", "о", "."], "phoneme_ids": [1, 0, 39, 0, 18, 0, 32, 0, 14, 0, 30, 0, 29, 0, 22, 0, 22, 0, 46, 0, 3, 0, 26, 0, 30, 0, 27, 0, 23, 0, 32, 0, 3, 0, 28, 0, 22, 0, 3, 0, 13, 0, 12, 0, 39, 0, 22, 0, 28, 0, 30, 0, 3, 0, 21, 0, 3, 0, 21, 0, 30, 0, 14, 0, 29, 0, 23, 0, 40, 0, 29, 0, 42, 0, 30, 0, 15, 0, 30, 0, 3, 0, 13, 0, 30, 0, 26, 0, 35, 0, 3, 0, 31, 0, 18, 0, 32, 0, 14, 0, 22, 0, 29, 0, 29, 0, 30, 0, 23, 0, 47, 0, 3, 0, 14, 0, 18, 0, 33, 0, 18, 0, 27, 0, 26, 0, 22, 0, 6, 0, 3, 0, 12, 0, 3, 0, 36, 0, 23, 0, 30, 0, 27, 0, 18, 0, 34, 0, 30, 0, 14, 0, 22, 0, 22, 0, 46, 0, 3, 0, 48, 0, 3, 0, 23, 0, 21, 0, 3, 0, 14, 0, 29, 0, 35, 0, 34, 0, 32, 0, 23, 0, 40, 0, 29, 0, 42, 0, 30, 0, 15, 0, 30, 0, 8, 0, 2]} +{"text": "Веселка пов'язана з заломленням і відбиттям ,деякою мірою і з дифракцією, сонячного світла у водяних краплях, зважених у повітрі.", "phonemes": ["в", "е", "с", "е", "л", "к", "а", " ", "п", "о", "в", "'", "я", "з", "а", "н", "а", " ", "з", " ", "з", "а", "л", "о", "м", "л", "е", "н", "н", "я", "м", " ", "і", " ", "в", "і", "д", "б", "и", "т", "т", "я", "м", " ", ",", "д", "е", "я", "к", "о", "ю", " ", "м", "і", "р", "о", "ю", " ", "і", " ", "з", " ", "д", "и", "ф", "р", "а", "к", "ц", "і", "є", "ю", ",", " ", "с", "о", "н", "я", "ч", "н", "о", "г", "о", " ", "с", "в", "і", "т", "л", "а", " ", "у", " ", "в", "о", "д", "я", "н", "и", "х", " ", "к", "р", "а", "п", "л", "я", "х", ",", " ", "з", "в", "а", "ж", "е", "н", "и", "х", " ", "у", " ", "п", "о", "в", "і", "т", "р", "і", "."], "phoneme_ids": [1, 0, 14, 0, 18, 0, 33, 0, 18, 0, 27, 0, 26, 0, 12, 0, 3, 0, 31, 0, 30, 0, 14, 0, 5, 0, 44, 0, 21, 0, 12, 0, 29, 0, 12, 0, 3, 0, 21, 0, 3, 0, 21, 0, 12, 0, 27, 0, 30, 0, 28, 0, 27, 0, 18, 0, 29, 0, 29, 0, 44, 0, 28, 0, 3, 0, 23, 0, 3, 0, 14, 0, 23, 0, 17, 0, 13, 0, 22, 0, 34, 0, 34, 0, 44, 0, 28, 0, 3, 0, 6, 0, 17, 0, 18, 0, 44, 0, 26, 0, 30, 0, 43, 0, 3, 0, 28, 0, 23, 0, 32, 0, 30, 0, 43, 0, 3, 0, 23, 0, 3, 0, 21, 0, 3, 0, 17, 0, 22, 0, 36, 0, 32, 0, 12, 0, 26, 0, 38, 0, 23, 0, 19, 0, 43, 0, 6, 0, 3, 0, 33, 0, 30, 0, 29, 0, 44, 0, 39, 0, 29, 0, 30, 0, 15, 0, 30, 0, 3, 0, 33, 0, 14, 0, 23, 0, 34, 0, 27, 0, 12, 0, 3, 0, 35, 0, 3, 0, 14, 0, 30, 0, 17, 0, 44, 0, 29, 0, 22, 0, 37, 0, 3, 0, 26, 0, 32, 0, 12, 0, 31, 0, 27, 0, 44, 0, 37, 0, 6, 0, 3, 0, 21, 0, 14, 0, 12, 0, 20, 0, 18, 0, 29, 0, 22, 0, 37, 0, 3, 0, 35, 0, 3, 0, 31, 0, 30, 0, 14, 0, 23, 0, 34, 0, 32, 0, 23, 0, 8, 0, 2]} +{"text": "Ці крапельки по-різному відхиляють світло різних кольорів, у результаті чого біле світло розкладається на спектр.", "phonemes": ["ц", "і", " ", "к", "р", "а", "п", "е", "л", "ь", "к", "и", " ", "п", "о", "-", "р", "і", "з", "н", "о", "м", "у", " ", "в", "і", "д", "х", "и", "л", "я", "ю", "т", "ь", " ", "с", "в", "і", "т", "л", "о", " ", "р", "і", "з", "н", "и", "х", " ", "к", "о", "л", "ь", "о", "р", "і", "в", ",", " ", "у", " ", "р", "е", "з", "у", "л", "ь", "т", "а", "т", "і", " ", "ч", "о", "г", "о", " ", "б", "і", "л", "е", " ", "с", "в", "і", "т", "л", "о", " ", "р", "о", "з", "к", "л", "а", "д", "а", "є", "т", "ь", "с", "я", " ", "н", "а", " ", "с", "п", "е", "к", "т", "р", "."], "phoneme_ids": [1, 0, 38, 0, 23, 0, 3, 0, 26, 0, 32, 0, 12, 0, 31, 0, 18, 0, 27, 0, 42, 0, 26, 0, 22, 0, 3, 0, 31, 0, 30, 0, 7, 0, 32, 0, 23, 0, 21, 0, 29, 0, 30, 0, 28, 0, 35, 0, 3, 0, 14, 0, 23, 0, 17, 0, 37, 0, 22, 0, 27, 0, 44, 0, 43, 0, 34, 0, 42, 0, 3, 0, 33, 0, 14, 0, 23, 0, 34, 0, 27, 0, 30, 0, 3, 0, 32, 0, 23, 0, 21, 0, 29, 0, 22, 0, 37, 0, 3, 0, 26, 0, 30, 0, 27, 0, 42, 0, 30, 0, 32, 0, 23, 0, 14, 0, 6, 0, 3, 0, 35, 0, 3, 0, 32, 0, 18, 0, 21, 0, 35, 0, 27, 0, 42, 0, 34, 0, 12, 0, 34, 0, 23, 0, 3, 0, 39, 0, 30, 0, 15, 0, 30, 0, 3, 0, 13, 0, 23, 0, 27, 0, 18, 0, 3, 0, 33, 0, 14, 0, 23, 0, 34, 0, 27, 0, 30, 0, 3, 0, 32, 0, 30, 0, 21, 0, 26, 0, 27, 0, 12, 0, 17, 0, 12, 0, 19, 0, 34, 0, 42, 0, 33, 0, 44, 0, 3, 0, 29, 0, 12, 0, 3, 0, 33, 0, 31, 0, 18, 0, 26, 0, 34, 0, 32, 0, 8, 0, 2]} +{"text": "Спостерігач, що стоїть спиною до джерела світла, бачить різнобарвне світіння, що виходить із простору по концентричному колу ,дузі.", "phonemes": ["с", "п", "о", "с", "т", "е", "р", "і", "г", "а", "ч", ",", " ", "щ", "о", " ", "с", "т", "о", "і", "̈", "т", "ь", " ", "с", "п", "и", "н", "о", "ю", " ", "д", "о", " ", "д", "ж", "е", "р", "е", "л", "а", " ", "с", "в", "і", "т", "л", "а", ",", " ", "б", "а", "ч", "и", "т", "ь", " ", "р", "і", "з", "н", "о", "б", "а", "р", "в", "н", "е", " ", "с", "в", "і", "т", "і", "н", "н", "я", ",", " ", "щ", "о", " ", "в", "и", "х", "о", "д", "и", "т", "ь", " ", "і", "з", " ", "п", "р", "о", "с", "т", "о", "р", "у", " ", "п", "о", " ", "к", "о", "н", "ц", "е", "н", "т", "р", "и", "ч", "н", "о", "м", "у", " ", "к", "о", "л", "у", " ", ",", "д", "у", "з", "і", "."], "phoneme_ids": [1, 0, 33, 0, 31, 0, 30, 0, 33, 0, 34, 0, 18, 0, 32, 0, 23, 0, 15, 0, 12, 0, 39, 0, 6, 0, 3, 0, 41, 0, 30, 0, 3, 0, 33, 0, 34, 0, 30, 0, 23, 0, 47, 0, 34, 0, 42, 0, 3, 0, 33, 0, 31, 0, 22, 0, 29, 0, 30, 0, 43, 0, 3, 0, 17, 0, 30, 0, 3, 0, 17, 0, 20, 0, 18, 0, 32, 0, 18, 0, 27, 0, 12, 0, 3, 0, 33, 0, 14, 0, 23, 0, 34, 0, 27, 0, 12, 0, 6, 0, 3, 0, 13, 0, 12, 0, 39, 0, 22, 0, 34, 0, 42, 0, 3, 0, 32, 0, 23, 0, 21, 0, 29, 0, 30, 0, 13, 0, 12, 0, 32, 0, 14, 0, 29, 0, 18, 0, 3, 0, 33, 0, 14, 0, 23, 0, 34, 0, 23, 0, 29, 0, 29, 0, 44, 0, 6, 0, 3, 0, 41, 0, 30, 0, 3, 0, 14, 0, 22, 0, 37, 0, 30, 0, 17, 0, 22, 0, 34, 0, 42, 0, 3, 0, 23, 0, 21, 0, 3, 0, 31, 0, 32, 0, 30, 0, 33, 0, 34, 0, 30, 0, 32, 0, 35, 0, 3, 0, 31, 0, 30, 0, 3, 0, 26, 0, 30, 0, 29, 0, 38, 0, 18, 0, 29, 0, 34, 0, 32, 0, 22, 0, 39, 0, 29, 0, 30, 0, 28, 0, 35, 0, 3, 0, 26, 0, 30, 0, 27, 0, 35, 0, 3, 0, 6, 0, 17, 0, 35, 0, 21, 0, 23, 0, 8, 0, 2]} +{"text": "Чуєш їх, доцю, га? Кумедна ж ти, прощайся без ґольфів!", "phonemes": ["ч", "у", "є", "ш", " ", "і", "̈", "х", ",", " ", "д", "о", "ц", "ю", ",", " ", "г", "а", "?", " ", "к", "у", "м", "е", "д", "н", "а", " ", "ж", " ", "т", "и", ",", " ", "п", "р", "о", "щ", "а", "и", "̆", "с", "я", " ", "б", "е", "з", " ", "ґ", "о", "л", "ь", "ф", "і", "в", "!"], "phoneme_ids": [1, 0, 39, 0, 35, 0, 19, 0, 40, 0, 3, 0, 23, 0, 47, 0, 37, 0, 6, 0, 3, 0, 17, 0, 30, 0, 38, 0, 43, 0, 6, 0, 3, 0, 15, 0, 12, 0, 11, 0, 3, 0, 26, 0, 35, 0, 28, 0, 18, 0, 17, 0, 29, 0, 12, 0, 3, 0, 20, 0, 3, 0, 34, 0, 22, 0, 6, 0, 3, 0, 31, 0, 32, 0, 30, 0, 41, 0, 12, 0, 22, 0, 46, 0, 33, 0, 44, 0, 3, 0, 13, 0, 18, 0, 21, 0, 3, 0, 16, 0, 30, 0, 27, 0, 42, 0, 36, 0, 23, 0, 14, 0, 4, 0, 2]} +{"text": "Жебракують філософи при ґанку церкви в Гадячі, ще й шатро їхнє п’яне знаємо.", "phonemes": ["ж", "е", "б", "р", "а", "к", "у", "ю", "т", "ь", " ", "ф", "і", "л", "о", "с", "о", "ф", "и", " ", "п", "р", "и", " ", "ґ", "а", "н", "к", "у", " ", "ц", "е", "р", "к", "в", "и", " ", "в", " ", "г", "а", "д", "я", "ч", "і", ",", " ", "щ", "е", " ", "и", "̆", " ", "ш", "а", "т", "р", "о", " ", "і", "̈", "х", "н", "є", " ", "п", "’", "я", "н", "е", " ", "з", "н", "а", "є", "м", "о", "."], "phoneme_ids": [1, 0, 20, 0, 18, 0, 13, 0, 32, 0, 12, 0, 26, 0, 35, 0, 43, 0, 34, 0, 42, 0, 3, 0, 36, 0, 23, 0, 27, 0, 30, 0, 33, 0, 30, 0, 36, 0, 22, 0, 3, 0, 31, 0, 32, 0, 22, 0, 3, 0, 16, 0, 12, 0, 29, 0, 26, 0, 35, 0, 3, 0, 38, 0, 18, 0, 32, 0, 26, 0, 14, 0, 22, 0, 3, 0, 14, 0, 3, 0, 15, 0, 12, 0, 17, 0, 44, 0, 39, 0, 23, 0, 6, 0, 3, 0, 41, 0, 18, 0, 3, 0, 22, 0, 46, 0, 3, 0, 40, 0, 12, 0, 34, 0, 32, 0, 30, 0, 3, 0, 23, 0, 47, 0, 37, 0, 29, 0, 19, 0, 3, 0, 31, 0, 44, 0, 29, 0, 18, 0, 3, 0, 21, 0, 29, 0, 12, 0, 19, 0, 28, 0, 30, 0, 8, 0, 2]} diff --git a/piper/piper/etc/test_sentences/test_vi.jsonl b/piper/piper/etc/test_sentences/test_vi.jsonl new file mode 100644 index 0000000..66071f1 --- /dev/null +++ b/piper/piper/etc/test_sentences/test_vi.jsonl @@ -0,0 +1,9 @@ +{"text": "Cầu vồng hay mống cũng như quang phổ là hiện tượng tán sắc của các ánh sáng từ Mặt Trời khi khúc xạ và phản xạ qua các giọt nước mưa.", "phonemes": ["k", "ˈ", "ə", "2", "w", " ", "v", "ˈ", "o", "2", "ŋ", " ", "h", "ˈ", "a", "1", "j", " ", "m", "ˈ", "o", "ɜ", "ŋ", " ", "k", "ˈ", "u", "5", "ŋ", " ", "ɲ", "ˌ", "y", "1", " ", "k", "w", "ˈ", "a", "ː", "1", "ŋ", " ", "f", "ˈ", "o", "4", " ", "l", "ˌ", "a", "ː", "2", " ", "h", "ˈ", "i", "ɛ", "6", "n", " ", "t", "̪", "ˈ", "y", "ə", "6", "ŋ", " ", "t", "̪", "ˈ", "a", "ː", "ɜ", "n", " ", "s", "ˈ", "a", "ɜ", "c", " ", "k", "ˌ", "u", "ə", "4", " ", "k", "ˌ", "a", "ː", "ɜ", "c", " ", "ˈ", "e", "-", "ɜ", "ɲ", " ", "s", "ˈ", "a", "ː", "ɜ", "ŋ", " ", "t", "̪", "ˌ", "y", "2", " ", "m", "ˈ", "a", "6", "t", "̪", " ", "t", "ʃ", "ˈ", "ə", "ː", "2", "j", " ", "x", "ˌ", "i", "1", " ", "x", "ˈ", "u", "ɜ", "c", " ", "s", "ˈ", "a", "ː", "6", " ", "v", "ˌ", "a", "ː", "2", " ", "f", "ˈ", "a", "ː", "4", "n", " ", "s", "ˈ", "a", "ː", "6", " ", "k", "w", "ˈ", "a", "ː", "1", " ", "k", "ˌ", "a", "ː", "ɜ", "c", " ", "z", "ˈ", "ɔ", "6", "t", "̪", " ", "n", "ˈ", "y", "ə", "ɜ", "c", " ", "m", "ˈ", "y", "ə", "7", "."], "phoneme_ids": [1, 0, 23, 0, 120, 0, 59, 0, 132, 0, 35, 0, 3, 0, 34, 0, 120, 0, 27, 0, 132, 0, 44, 0, 3, 0, 20, 0, 120, 0, 14, 0, 131, 0, 22, 0, 3, 0, 25, 0, 120, 0, 27, 0, 62, 0, 44, 0, 3, 0, 23, 0, 120, 0, 33, 0, 135, 0, 44, 0, 3, 0, 82, 0, 121, 0, 37, 0, 131, 0, 3, 0, 23, 0, 35, 0, 120, 0, 14, 0, 122, 0, 131, 0, 44, 0, 3, 0, 19, 0, 120, 0, 27, 0, 134, 0, 3, 0, 24, 0, 121, 0, 14, 0, 122, 0, 132, 0, 3, 0, 20, 0, 120, 0, 21, 0, 61, 0, 136, 0, 26, 0, 3, 0, 32, 0, 142, 0, 120, 0, 37, 0, 59, 0, 136, 0, 44, 0, 3, 0, 32, 0, 142, 0, 120, 0, 14, 0, 122, 0, 62, 0, 26, 0, 3, 0, 31, 0, 120, 0, 14, 0, 62, 0, 16, 0, 3, 0, 23, 0, 121, 0, 33, 0, 59, 0, 134, 0, 3, 0, 23, 0, 121, 0, 14, 0, 122, 0, 62, 0, 16, 0, 3, 0, 120, 0, 18, 0, 9, 0, 62, 0, 82, 0, 3, 0, 31, 0, 120, 0, 14, 0, 122, 0, 62, 0, 44, 0, 3, 0, 32, 0, 142, 0, 121, 0, 37, 0, 132, 0, 3, 0, 25, 0, 120, 0, 14, 0, 136, 0, 32, 0, 142, 0, 3, 0, 32, 0, 96, 0, 120, 0, 59, 0, 122, 0, 132, 0, 22, 0, 3, 0, 36, 0, 121, 0, 21, 0, 131, 0, 3, 0, 36, 0, 120, 0, 33, 0, 62, 0, 16, 0, 3, 0, 31, 0, 120, 0, 14, 0, 122, 0, 136, 0, 3, 0, 34, 0, 121, 0, 14, 0, 122, 0, 132, 0, 3, 0, 19, 0, 120, 0, 14, 0, 122, 0, 134, 0, 26, 0, 3, 0, 31, 0, 120, 0, 14, 0, 122, 0, 136, 0, 3, 0, 23, 0, 35, 0, 120, 0, 14, 0, 122, 0, 131, 0, 3, 0, 23, 0, 121, 0, 14, 0, 122, 0, 62, 0, 16, 0, 3, 0, 38, 0, 120, 0, 54, 0, 136, 0, 32, 0, 142, 0, 3, 0, 26, 0, 120, 0, 37, 0, 59, 0, 62, 0, 16, 0, 3, 0, 25, 0, 120, 0, 37, 0, 59, 0, 137, 0, 10, 0, 2]} +{"text": "Ở nhiều nền văn hóa khác nhau, cầu vồng xuất hiện được coi là mang đến điềm lành cho nhân thế.", "phonemes": ["ˈ", "ə", "ː", "4", " ", "ɲ", "ˈ", "i", "ɛ", "2", "w", " ", "n", "ˈ", "e", "2", "n", " ", "v", "ˈ", "a", "1", "n", " ", "h", "w", "ˈ", "a", "ː", "ɜ", " ", "x", "ˈ", "a", "ː", "ɜ", "c", " ", "ɲ", "ˈ", "a", "7", "w", ",", " ", "k", "ˈ", "ə", "2", "w", " ", "v", "ˈ", "o", "2", "ŋ", " ", "s", "w", "ˈ", "ə", "ɜ", "t", "̪", " ", "h", "ˈ", "i", "ɛ", "6", "n", " ", "ɗ", "ˌ", "y", "ə", "6", "c", " ", "k", "ˈ", "ɔ", "1", "j", " ", "l", "ˌ", "a", "ː", "2", " ", "m", "ˈ", "a", "ː", "1", "ŋ", " ", "ɗ", "ˌ", "e", "ɜ", "n", " ", "ɗ", "ˈ", "i", "ɛ", "2", "m", " ", "l", "ˈ", "e", "-", "2", "ɲ", " ", "t", "ʃ", "ˌ", "ɔ", "1", " ", "ɲ", "ˈ", "ə", "1", "n", " ", "t", "ˈ", "e", "ɜ", "."], "phoneme_ids": [1, 0, 120, 0, 59, 0, 122, 0, 134, 0, 3, 0, 82, 0, 120, 0, 21, 0, 61, 0, 132, 0, 35, 0, 3, 0, 26, 0, 120, 0, 18, 0, 132, 0, 26, 0, 3, 0, 34, 0, 120, 0, 14, 0, 131, 0, 26, 0, 3, 0, 20, 0, 35, 0, 120, 0, 14, 0, 122, 0, 62, 0, 3, 0, 36, 0, 120, 0, 14, 0, 122, 0, 62, 0, 16, 0, 3, 0, 82, 0, 120, 0, 14, 0, 137, 0, 35, 0, 8, 0, 3, 0, 23, 0, 120, 0, 59, 0, 132, 0, 35, 0, 3, 0, 34, 0, 120, 0, 27, 0, 132, 0, 44, 0, 3, 0, 31, 0, 35, 0, 120, 0, 59, 0, 62, 0, 32, 0, 142, 0, 3, 0, 20, 0, 120, 0, 21, 0, 61, 0, 136, 0, 26, 0, 3, 0, 57, 0, 121, 0, 37, 0, 59, 0, 136, 0, 16, 0, 3, 0, 23, 0, 120, 0, 54, 0, 131, 0, 22, 0, 3, 0, 24, 0, 121, 0, 14, 0, 122, 0, 132, 0, 3, 0, 25, 0, 120, 0, 14, 0, 122, 0, 131, 0, 44, 0, 3, 0, 57, 0, 121, 0, 18, 0, 62, 0, 26, 0, 3, 0, 57, 0, 120, 0, 21, 0, 61, 0, 132, 0, 25, 0, 3, 0, 24, 0, 120, 0, 18, 0, 9, 0, 132, 0, 82, 0, 3, 0, 32, 0, 96, 0, 121, 0, 54, 0, 131, 0, 3, 0, 82, 0, 120, 0, 59, 0, 131, 0, 26, 0, 3, 0, 32, 0, 120, 0, 18, 0, 62, 0, 10, 0, 2]} +{"text": "Do bạch kim rất quý nên sẽ dùng để lắp vô xương.", "phonemes": ["z", "ˈ", "ɔ", "1", " ", "b", "ˈ", "e", "-", "6", "c", " ", "k", "ˈ", "i", "1", "m", " ", "z", "ˈ", "ə", "ɜ", "t", "̪", " ", "k", "w", "ˈ", "i", "ɜ", " ", "n", "ˌ", "e", "1", "n", " ", "s", "ˌ", "ɛ", "5", " ", "z", "ˈ", "u", "2", "ŋ", " ", "ɗ", "ˌ", "e", "4", " ", "l", "ˈ", "a", "ɜ", "p", " ", "v", "ˈ", "o", "1", " ", "s", "ˈ", "y", "ə", "7", "ŋ", "."], "phoneme_ids": [1, 0, 38, 0, 120, 0, 54, 0, 131, 0, 3, 0, 15, 0, 120, 0, 18, 0, 9, 0, 136, 0, 16, 0, 3, 0, 23, 0, 120, 0, 21, 0, 131, 0, 25, 0, 3, 0, 38, 0, 120, 0, 59, 0, 62, 0, 32, 0, 142, 0, 3, 0, 23, 0, 35, 0, 120, 0, 21, 0, 62, 0, 3, 0, 26, 0, 121, 0, 18, 0, 131, 0, 26, 0, 3, 0, 31, 0, 121, 0, 61, 0, 135, 0, 3, 0, 38, 0, 120, 0, 33, 0, 132, 0, 44, 0, 3, 0, 57, 0, 121, 0, 18, 0, 134, 0, 3, 0, 24, 0, 120, 0, 14, 0, 62, 0, 28, 0, 3, 0, 34, 0, 120, 0, 27, 0, 131, 0, 3, 0, 31, 0, 120, 0, 37, 0, 59, 0, 137, 0, 44, 0, 10, 0, 2]} +{"text": "Tâm tưởng tôi tỏ tình tới Tú từ tháng tư, thú thật, tôi thương Tâm thì tôi thì thầm thử Tâm thế thôị.", "phonemes": ["t", "̪", "ˈ", "ə", "1", "m", " ", "t", "̪", "ˈ", "y", "ə", "4", "ŋ", " ", "t", "̪", "ˈ", "o", "1", "j", " ", "t", "̪", "ˈ", "ɔ", "4", " ", "t", "̪", "ˈ", "i", "2", "ɲ", " ", "t", "̪", "ˌ", "ə", "ː", "ɜ", "j", " ", "t", "̪", "ˈ", "u", "ɜ", " ", "t", "̪", "ˌ", "y", "2", " ", "t", "ˈ", "a", "ː", "ɜ", "ŋ", " ", "t", "̪", "ˈ", "y", "7", ",", " ", "t", "ˈ", "u", "ɜ", " ", "t", "ˈ", "ə", "6", "t", "̪", ",", " ", "t", "̪", "ˈ", "o", "1", "j", " ", "t", "ˈ", "y", "ə", "1", "ŋ", " ", "t", "̪", "ˈ", "ə", "1", "m", " ", "t", "ˌ", "i", "2", " ", "t", "̪", "ˈ", "o", "1", "j", " ", "t", "ˌ", "i", "2", " ", "t", "ˈ", "ə", "2", "m", " ", "t", "ˈ", "y", "4", " ", "t", "̪", "ˈ", "ə", "1", "m", " ", "t", "ˈ", "e", "ɜ", " ", "t", "ˈ", "o", "7", "i", "6", "."], "phoneme_ids": [1, 0, 32, 0, 142, 0, 120, 0, 59, 0, 131, 0, 25, 0, 3, 0, 32, 0, 142, 0, 120, 0, 37, 0, 59, 0, 134, 0, 44, 0, 3, 0, 32, 0, 142, 0, 120, 0, 27, 0, 131, 0, 22, 0, 3, 0, 32, 0, 142, 0, 120, 0, 54, 0, 134, 0, 3, 0, 32, 0, 142, 0, 120, 0, 21, 0, 132, 0, 82, 0, 3, 0, 32, 0, 142, 0, 121, 0, 59, 0, 122, 0, 62, 0, 22, 0, 3, 0, 32, 0, 142, 0, 120, 0, 33, 0, 62, 0, 3, 0, 32, 0, 142, 0, 121, 0, 37, 0, 132, 0, 3, 0, 32, 0, 120, 0, 14, 0, 122, 0, 62, 0, 44, 0, 3, 0, 32, 0, 142, 0, 120, 0, 37, 0, 137, 0, 8, 0, 3, 0, 32, 0, 120, 0, 33, 0, 62, 0, 3, 0, 32, 0, 120, 0, 59, 0, 136, 0, 32, 0, 142, 0, 8, 0, 3, 0, 32, 0, 142, 0, 120, 0, 27, 0, 131, 0, 22, 0, 3, 0, 32, 0, 120, 0, 37, 0, 59, 0, 131, 0, 44, 0, 3, 0, 32, 0, 142, 0, 120, 0, 59, 0, 131, 0, 25, 0, 3, 0, 32, 0, 121, 0, 21, 0, 132, 0, 3, 0, 32, 0, 142, 0, 120, 0, 27, 0, 131, 0, 22, 0, 3, 0, 32, 0, 121, 0, 21, 0, 132, 0, 3, 0, 32, 0, 120, 0, 59, 0, 132, 0, 25, 0, 3, 0, 32, 0, 120, 0, 37, 0, 134, 0, 3, 0, 32, 0, 142, 0, 120, 0, 59, 0, 131, 0, 25, 0, 3, 0, 32, 0, 120, 0, 18, 0, 62, 0, 3, 0, 32, 0, 120, 0, 27, 0, 137, 0, 21, 0, 136, 0, 10, 0, 2]} +{"text": "Nồi đồng nấu ốc, nồi đất nấu ếch.", "phonemes": ["n", "ˈ", "o", "2", "j", " ", "ɗ", "ˈ", "o", "2", "ŋ", " ", "n", "ˈ", "ə", "ɜ", "w", " ", "ˈ", "o", "ɜ", "k", ",", " ", "n", "ˈ", "o", "2", "j", " ", "ɗ", "ˈ", "ə", "ɜ", "t", "̪", " ", "n", "ˈ", "ə", "ɜ", "w", " ", "ˈ", "e", "ɜ", "c", "."], "phoneme_ids": [1, 0, 26, 0, 120, 0, 27, 0, 132, 0, 22, 0, 3, 0, 57, 0, 120, 0, 27, 0, 132, 0, 44, 0, 3, 0, 26, 0, 120, 0, 59, 0, 62, 0, 35, 0, 3, 0, 120, 0, 27, 0, 62, 0, 23, 0, 8, 0, 3, 0, 26, 0, 120, 0, 27, 0, 132, 0, 22, 0, 3, 0, 57, 0, 120, 0, 59, 0, 62, 0, 32, 0, 142, 0, 3, 0, 26, 0, 120, 0, 59, 0, 62, 0, 35, 0, 3, 0, 120, 0, 18, 0, 62, 0, 16, 0, 10, 0, 2]} +{"text": "Lan leo lên lầu Lan lấy lưỡi lam. Lan lấy lộn lưỡi liềm Lan leo lên lầu lấy lại.", "phonemes": ["l", "ˈ", "a", "ː", "1", "n", " ", "l", "ˈ", "ɛ", "1", "w", " ", "l", "ˈ", "e", "1", "n", " ", "l", "ˈ", "ə", "2", "w", " ", "l", "ˈ", "a", "ː", "1", "n", " ", "l", "ˈ", "ə", "ɪ", "ɜ", " ", "l", "ˈ", "y", "ə", "5", "j", " ", "l", "ˈ", "a", "ː", "7", "m", ".", " ", "l", "ˈ", "a", "ː", "1", "n", " ", "l", "ˈ", "ə", "ɪ", "ɜ", " ", "l", "ˈ", "o", "6", "n", " ", "l", "ˈ", "y", "ə", "5", "j", " ", "l", "ˈ", "i", "ɛ", "2", "m", " ", "l", "ˈ", "a", "ː", "1", "n", " ", "l", "ˈ", "ɛ", "1", "w", " ", "l", "ˈ", "e", "1", "n", " ", "l", "ˈ", "ə", "2", "w", " ", "l", "ˈ", "ə", "ɪ", "ɜ", " ", "l", "ˈ", "a", "ː", "6", "j", "."], "phoneme_ids": [1, 0, 24, 0, 120, 0, 14, 0, 122, 0, 131, 0, 26, 0, 3, 0, 24, 0, 120, 0, 61, 0, 131, 0, 35, 0, 3, 0, 24, 0, 120, 0, 18, 0, 131, 0, 26, 0, 3, 0, 24, 0, 120, 0, 59, 0, 132, 0, 35, 0, 3, 0, 24, 0, 120, 0, 14, 0, 122, 0, 131, 0, 26, 0, 3, 0, 24, 0, 120, 0, 59, 0, 74, 0, 62, 0, 3, 0, 24, 0, 120, 0, 37, 0, 59, 0, 135, 0, 22, 0, 3, 0, 24, 0, 120, 0, 14, 0, 122, 0, 137, 0, 25, 0, 10, 0, 3, 0, 24, 0, 120, 0, 14, 0, 122, 0, 131, 0, 26, 0, 3, 0, 24, 0, 120, 0, 59, 0, 74, 0, 62, 0, 3, 0, 24, 0, 120, 0, 27, 0, 136, 0, 26, 0, 3, 0, 24, 0, 120, 0, 37, 0, 59, 0, 135, 0, 22, 0, 3, 0, 24, 0, 120, 0, 21, 0, 61, 0, 132, 0, 25, 0, 3, 0, 24, 0, 120, 0, 14, 0, 122, 0, 131, 0, 26, 0, 3, 0, 24, 0, 120, 0, 61, 0, 131, 0, 35, 0, 3, 0, 24, 0, 120, 0, 18, 0, 131, 0, 26, 0, 3, 0, 24, 0, 120, 0, 59, 0, 132, 0, 35, 0, 3, 0, 24, 0, 120, 0, 59, 0, 74, 0, 62, 0, 3, 0, 24, 0, 120, 0, 14, 0, 122, 0, 136, 0, 22, 0, 10, 0, 2]} +{"text": "Bà Ba béo bán bánh bò, bán bòn bon, bán bong bóng, bên bờ biển, bả bị bộ binh bắt ba bốn bận.", "phonemes": ["b", "ˈ", "a", "ː", "2", " ", "b", "ˈ", "a", "ː", "1", " ", "b", "ˈ", "ɛ", "ɜ", "w", " ", "b", "ˈ", "a", "ː", "ɜ", "n", " ", "b", "ˈ", "e", "-", "ɜ", "ɲ", " ", "b", "ˈ", "ɔ", "2", ",", " ", "b", "ˈ", "a", "ː", "ɜ", "n", " ", "b", "ˈ", "ɔ", "2", "n", " ", "b", "ˈ", "ɔ", "7", "n", ",", " ", "b", "ˈ", "a", "ː", "ɜ", "n", " ", "b", "ˈ", "ɔ", "1", "ŋ", " ", "b", "ˈ", "ɔ", "ɜ", "ŋ", ",", " ", "b", "ˈ", "e", "1", "n", " ", "b", "ˈ", "ə", "ː", "2", " ", "b", "ˈ", "i", "ɛ", "4", "n", ",", " ", "b", "ˈ", "a", "ː", "4", " ", "b", "ˌ", "i", "6", " ", "b", "ˈ", "o", "6", " ", "b", "ˈ", "i", "1", "ɲ", " ", "b", "ˈ", "a", "ɜ", "t", "̪", " ", "b", "ˈ", "a", "ː", "1", " ", "b", "ˈ", "o", "ɜ", "n", " ", "b", "ˈ", "ə", "6", "n", "."], "phoneme_ids": [1, 0, 15, 0, 120, 0, 14, 0, 122, 0, 132, 0, 3, 0, 15, 0, 120, 0, 14, 0, 122, 0, 131, 0, 3, 0, 15, 0, 120, 0, 61, 0, 62, 0, 35, 0, 3, 0, 15, 0, 120, 0, 14, 0, 122, 0, 62, 0, 26, 0, 3, 0, 15, 0, 120, 0, 18, 0, 9, 0, 62, 0, 82, 0, 3, 0, 15, 0, 120, 0, 54, 0, 132, 0, 8, 0, 3, 0, 15, 0, 120, 0, 14, 0, 122, 0, 62, 0, 26, 0, 3, 0, 15, 0, 120, 0, 54, 0, 132, 0, 26, 0, 3, 0, 15, 0, 120, 0, 54, 0, 137, 0, 26, 0, 8, 0, 3, 0, 15, 0, 120, 0, 14, 0, 122, 0, 62, 0, 26, 0, 3, 0, 15, 0, 120, 0, 54, 0, 131, 0, 44, 0, 3, 0, 15, 0, 120, 0, 54, 0, 62, 0, 44, 0, 8, 0, 3, 0, 15, 0, 120, 0, 18, 0, 131, 0, 26, 0, 3, 0, 15, 0, 120, 0, 59, 0, 122, 0, 132, 0, 3, 0, 15, 0, 120, 0, 21, 0, 61, 0, 134, 0, 26, 0, 8, 0, 3, 0, 15, 0, 120, 0, 14, 0, 122, 0, 134, 0, 3, 0, 15, 0, 121, 0, 21, 0, 136, 0, 3, 0, 15, 0, 120, 0, 27, 0, 136, 0, 3, 0, 15, 0, 120, 0, 21, 0, 131, 0, 82, 0, 3, 0, 15, 0, 120, 0, 14, 0, 62, 0, 32, 0, 142, 0, 3, 0, 15, 0, 120, 0, 14, 0, 122, 0, 131, 0, 3, 0, 15, 0, 120, 0, 27, 0, 62, 0, 26, 0, 3, 0, 15, 0, 120, 0, 59, 0, 136, 0, 26, 0, 10, 0, 2]} +{"text": "Chồng chị chín chết chị chưa chôn, chị chờ chuối chín chị chôn cho chồng", "phonemes": ["t", "ʃ", "ˈ", "o", "2", "ŋ", " ", "t", "ʃ", "ˈ", "i", "6", " ", "t", "ʃ", "ˈ", "i", "ɜ", "n", " ", "t", "ʃ", "ˈ", "e", "ɜ", "t", "̪", " ", "t", "ʃ", "ˈ", "i", "6", " ", "t", "ʃ", "ˌ", "y", "ə", "1", " ", "t", "ʃ", "ˈ", "o", "7", "n", ",", " ", "t", "ʃ", "ˈ", "i", "6", " ", "t", "ʃ", "ˈ", "ə", "ː", "2", " ", "t", "ʃ", "ˈ", "u", "ə", "ɜ", "j", " ", "t", "ʃ", "ˈ", "i", "ɜ", "n", " ", "t", "ʃ", "ˈ", "i", "6", " ", "t", "ʃ", "ˈ", "o", "1", "n", " ", "t", "ʃ", "ˌ", "ɔ", "1", " ", "t", "ʃ", "ˈ", "o", "2", "ŋ"], "phoneme_ids": [1, 0, 32, 0, 96, 0, 120, 0, 27, 0, 132, 0, 44, 0, 3, 0, 32, 0, 96, 0, 120, 0, 21, 0, 136, 0, 3, 0, 32, 0, 96, 0, 120, 0, 21, 0, 62, 0, 26, 0, 3, 0, 32, 0, 96, 0, 120, 0, 18, 0, 62, 0, 32, 0, 142, 0, 3, 0, 32, 0, 96, 0, 120, 0, 21, 0, 136, 0, 3, 0, 32, 0, 96, 0, 121, 0, 37, 0, 59, 0, 131, 0, 3, 0, 32, 0, 96, 0, 120, 0, 27, 0, 137, 0, 26, 0, 8, 0, 3, 0, 32, 0, 96, 0, 120, 0, 21, 0, 136, 0, 3, 0, 32, 0, 96, 0, 120, 0, 59, 0, 122, 0, 132, 0, 3, 0, 32, 0, 96, 0, 120, 0, 33, 0, 59, 0, 62, 0, 22, 0, 3, 0, 32, 0, 96, 0, 120, 0, 21, 0, 62, 0, 26, 0, 3, 0, 32, 0, 96, 0, 120, 0, 21, 0, 136, 0, 3, 0, 32, 0, 96, 0, 120, 0, 27, 0, 131, 0, 26, 0, 3, 0, 32, 0, 96, 0, 121, 0, 54, 0, 131, 0, 3, 0, 32, 0, 96, 0, 120, 0, 27, 0, 132, 0, 44, 0, 2]} +{"text": "Ðêm đen Đào đốt đèn đi đâu đó. Ðào đốt đèn đi đợi Ðài. Đài đến. Đào đòi đô, Đài đưa Đào đô, Ðào đòi Dylan Ðài đưa Dylan.", "phonemes": ["ɗ", "ˈ", "e", "1", "m", " ", "ɗ", "ˈ", "ɛ", "1", "n", " ", "ɗ", "ˈ", "a", "ː", "2", "w", " ", "ɗ", "ˈ", "o", "ɜ", "t", "̪", " ", "ɗ", "ˈ", "ɛ", "2", "n", " ", "ɗ", "ˈ", "i", "1", " ", "ɗ", "ˈ", "ə", "1", "w", " ", "ɗ", "ˈ", "ɔ", "ɜ", ".", " ", "ɗ", "ˈ", "a", "ː", "2", "w", " ", "ɗ", "ˈ", "o", "ɜ", "t", "̪", " ", "ɗ", "ˈ", "ɛ", "2", "n", " ", "ɗ", "ˈ", "i", "1", " ", "ɗ", "ˈ", "ə", "ː", "6", "j", " ", "ɗ", "ˈ", "a", "ː", "2", "j", ".", " ", "ɗ", "ˈ", "a", "ː", "2", "j", " ", "ɗ", "ˌ", "e", "ɜ", "n", ".", " ", "ɗ", "ˈ", "a", "ː", "2", "w", " ", "ɗ", "ˈ", "ɔ", "2", "j", " ", "ɗ", "ˈ", "o", "7", ",", " ", "ɗ", "ˈ", "a", "ː", "2", "j", " ", "ɗ", "ˈ", "y", "ə", "1", " ", "ɗ", "ˈ", "a", "ː", "2", "w", " ", "ɗ", "ˈ", "o", "7", ",", " ", "ɗ", "ˈ", "a", "ː", "2", "w", " ", "ɗ", "ˈ", "ɔ", "2", "j", " ", "z", "ˈ", "i", "1", "l", "a", "ː", "1", "n", " ", "ɗ", "ˈ", "a", "ː", "2", "j", " ", "ɗ", "ˈ", "y", "ə", "1", " ", "z", "ˈ", "i", "7", "l", "a", "ː", "1", "n", "."], "phoneme_ids": [1, 0, 57, 0, 120, 0, 18, 0, 131, 0, 25, 0, 3, 0, 57, 0, 120, 0, 61, 0, 131, 0, 26, 0, 3, 0, 57, 0, 120, 0, 14, 0, 122, 0, 132, 0, 35, 0, 3, 0, 57, 0, 120, 0, 27, 0, 62, 0, 32, 0, 142, 0, 3, 0, 57, 0, 120, 0, 61, 0, 132, 0, 26, 0, 3, 0, 57, 0, 120, 0, 21, 0, 131, 0, 3, 0, 57, 0, 120, 0, 59, 0, 131, 0, 35, 0, 3, 0, 57, 0, 120, 0, 54, 0, 62, 0, 10, 0, 3, 0, 57, 0, 120, 0, 14, 0, 122, 0, 132, 0, 35, 0, 3, 0, 57, 0, 120, 0, 27, 0, 62, 0, 32, 0, 142, 0, 3, 0, 57, 0, 120, 0, 61, 0, 132, 0, 26, 0, 3, 0, 57, 0, 120, 0, 21, 0, 131, 0, 3, 0, 57, 0, 120, 0, 59, 0, 122, 0, 136, 0, 22, 0, 3, 0, 57, 0, 120, 0, 14, 0, 122, 0, 132, 0, 22, 0, 10, 0, 3, 0, 57, 0, 120, 0, 14, 0, 122, 0, 132, 0, 22, 0, 3, 0, 57, 0, 121, 0, 18, 0, 62, 0, 26, 0, 10, 0, 3, 0, 57, 0, 120, 0, 14, 0, 122, 0, 132, 0, 35, 0, 3, 0, 57, 0, 120, 0, 54, 0, 132, 0, 22, 0, 3, 0, 57, 0, 120, 0, 27, 0, 137, 0, 8, 0, 3, 0, 57, 0, 120, 0, 14, 0, 122, 0, 132, 0, 22, 0, 3, 0, 57, 0, 120, 0, 37, 0, 59, 0, 131, 0, 3, 0, 57, 0, 120, 0, 14, 0, 122, 0, 132, 0, 35, 0, 3, 0, 57, 0, 120, 0, 27, 0, 137, 0, 8, 0, 3, 0, 57, 0, 120, 0, 14, 0, 122, 0, 132, 0, 35, 0, 3, 0, 57, 0, 120, 0, 54, 0, 132, 0, 22, 0, 3, 0, 38, 0, 120, 0, 21, 0, 131, 0, 24, 0, 14, 0, 122, 0, 131, 0, 26, 0, 3, 0, 57, 0, 120, 0, 14, 0, 122, 0, 132, 0, 22, 0, 3, 0, 57, 0, 120, 0, 37, 0, 59, 0, 131, 0, 3, 0, 38, 0, 120, 0, 21, 0, 137, 0, 24, 0, 14, 0, 122, 0, 131, 0, 26, 0, 10, 0, 2]} diff --git a/piper/piper/etc/test_sentences/test_zh-cn.jsonl b/piper/piper/etc/test_sentences/test_zh-cn.jsonl new file mode 100644 index 0000000..d5322be --- /dev/null +++ b/piper/piper/etc/test_sentences/test_zh-cn.jsonl @@ -0,0 +1,7 @@ +{"text": "彩虹,又稱天弓、天虹、絳等,簡稱虹,是氣象中的一種光學現象,當太陽 光照射到半空中的水滴,光線被折射及反射,在天空上形成拱形的七彩光譜,由外 圈至内圈呈紅、橙、黃、綠、蓝、靛蓝、堇紫七种颜色(霓虹則相反)。", "phonemes": ["t", "s", "h", "a", "i", "2", "χ", "ˈ", "o", "n", "ɡ", "ɜ", " ", "j", "ˈ", "i", "o", "u", "5", " ", "t", "s", ".", "h", "ˈ", "ə", "5", "ŋ", " ", "t", "h", "ˈ", "i", "ɛ", "5", "n", " ", "k", "ˈ", "o", "n", "ɡ", "5", " ", "t", "h", "ˈ", "i", "ɛ", "5", "n", " ", "t", "ɕ", "ˈ", "i", "ɑ", "5", "ŋ", " ", "t", "ɕ", "ˈ", "i", "ɑ", "5", "ŋ", " ", "t", "ˈ", "ə", "2", "ŋ", " ", "t", "ɕ", "ˈ", "i", "ɛ", "2", "n", " ", "t", "s", ".", "h", "ˈ", "ə", "5", "ŋ", " ", "t", "ɕ", "ˈ", "i", "ɑ", "5", "ŋ", " ", "s", ".", "ˈ", "i", ".", "5", " ", "t", "ɕ", "h", "ˈ", "i", "5", " ", "ɕ", "ˈ", "i", "ɑ", "5", "ŋ", " ", "t", "s", ".", "ˈ", "o", "n", "ɡ", "5", " ", "t", "ə", "2", " ", "j", "i", "5", "t", "s", ".", "ˈ", "o", "n", "ɡ", "2", " ", "k", "w", "ˈ", "ɑ", "5", "ŋ", " ", "ɕ", "ˈ", "y", "ɛ", "ɜ", " ", "ɕ", "ˈ", "i", "ɛ", "5", "n", " ", "ɕ", "ˈ", "i", "ɑ", "5", "ŋ", " ", "t", "ˈ", "ɑ", "5", "ŋ", " ", "t", "h", "ˈ", "a", "i", "5", " ", "j", "ˈ", "i", "ɑ", "ɜ", "ŋ", " ", "k", "w", "ˈ", "ɑ", "5", "ŋ", " ", "t", "s", ".", "ˈ", "ɑ", "u", "5", " ", "s", ".", "ˈ", "o", "-", "5", " ", "t", "ˈ", "ɑ", "u", "5", " ", "p", "ˈ", "a", "5", "n", " ", "k", "h", "ˈ", "o", "n", "ɡ", "5", " ", "t", "s", ".", "ˈ", "o", "n", "ɡ", "5", " ", "t", "ə", "2", " ", "s", ".", "w", "ˈ", "e", "i", "2", " ", "t", "ˈ", "i", "5", " ", "k", "w", "ˈ", "ɑ", "5", "ŋ", " ", "ɕ", "ˈ", "i", "ɛ", "5", "n", " ", "p", "ˈ", "e", "i", "5", " ", "t", "s", ".", "ˈ", "o", "-", "ɜ", " ", "s", ".", "ˈ", "o", "-", "5", " ", "t", "ɕ", "ˈ", "i", "ɜ", " ", "f", "ˈ", "a", "2", "n", " ", "s", ".", "ˈ", "o", "-", "5", " ", "t", "s", "ˈ", "a", "i", "5", " ", "t", "h", "ˈ", "i", "ɛ", "5", "n", " ", "k", "h", "ˈ", "o", "n", "ɡ", "5", " ", "s", ".", "ˈ", "ɑ", "5", "ŋ", " ", "ɕ", "ˈ", "i", "ɜ", "ŋ", " ", "t", "s", ".", "h", "ˈ", "ə", "ɜ", "ŋ", " ", "k", "ˈ", "o", "n", "ɡ", "2", " ", "ɕ", "ˈ", "i", "ɜ", "ŋ", " ", "t", "ə", "ɜ", " ", "t", "ɕ", "h", "ˈ", "i", "5", " ", "t", "s", "h", "ˈ", "a", "i", "2", " ", "k", "w", "ɑ", "5", "ŋ", "p", "h", "ˈ", "u", "2", " ", "j", "ˈ", "i", "o", "u", "ɜ", " ", "w", "ˈ", "a", "i", "5", " ", "t", "ɕ", "h", "ˈ", "y", "æ", "5", "n", " ", "t", "s", ".", "ˈ", "i", ".", "5", " ", "n", "ˈ", "e", "i", "5", " ", "t", "ɕ", "h", "ˈ", "y", "æ", "5", "n", " ", "t", "s", ".", "h", "ˈ", "ə", "ɜ", "ŋ", " ", "χ", "ˈ", "o", "n", "ɡ", "ɜ", " ", "t", "s", ".", "h", "ˈ", "ə", "ɜ", "ŋ", " ", "χ", "w", "ˈ", "ɑ", "ɜ", "ŋ", " ", "l", "ˈ", "y", "5", " ", "l", "ˈ", "a", "ɜ", "n", " ", "t", "ˈ", "i", "ɛ", "5", "n", " ", "l", "ˈ", "a", "ɜ", "n", " ", "t", "ɕ", "ˈ", "i", "ɜ", "n", " ", "t", "s", "ˈ", "i", "̪", "2", " ", "t", "ɕ", "h", "ˈ", "i", "5", " ", "t", "s", ".", "ˈ", "o", "n", "ɡ", "2", " ", "j", "ˈ", "i", "ɛ", "ɜ", "n", " ", "s", "ˈ", "o", "-", "5", " ", "n", "i", "ɜ", "χ", "ˈ", "o", "n", "ɡ", "ɜ", " ", "t", "s", "ˈ", "o", "-", "ɜ", " ", "ɕ", "i", "ɑ", "5", "ŋ", "f", "ˈ", "a", "2", "n"], "phoneme_ids": [1, 0, 32, 0, 31, 0, 20, 0, 14, 0, 21, 0, 132, 0, 127, 0, 120, 0, 27, 0, 26, 0, 66, 0, 62, 0, 3, 0, 22, 0, 120, 0, 21, 0, 27, 0, 33, 0, 135, 0, 3, 0, 32, 0, 31, 0, 10, 0, 20, 0, 120, 0, 59, 0, 135, 0, 44, 0, 3, 0, 32, 0, 20, 0, 120, 0, 21, 0, 61, 0, 135, 0, 26, 0, 3, 0, 23, 0, 120, 0, 27, 0, 26, 0, 66, 0, 135, 0, 3, 0, 32, 0, 20, 0, 120, 0, 21, 0, 61, 0, 135, 0, 26, 0, 3, 0, 32, 0, 55, 0, 120, 0, 21, 0, 51, 0, 135, 0, 44, 0, 3, 0, 32, 0, 55, 0, 120, 0, 21, 0, 51, 0, 135, 0, 44, 0, 3, 0, 32, 0, 120, 0, 59, 0, 132, 0, 44, 0, 3, 0, 32, 0, 55, 0, 120, 0, 21, 0, 61, 0, 132, 0, 26, 0, 3, 0, 32, 0, 31, 0, 10, 0, 20, 0, 120, 0, 59, 0, 135, 0, 44, 0, 3, 0, 32, 0, 55, 0, 120, 0, 21, 0, 51, 0, 135, 0, 44, 0, 3, 0, 31, 0, 10, 0, 120, 0, 21, 0, 10, 0, 135, 0, 3, 0, 32, 0, 55, 0, 20, 0, 120, 0, 21, 0, 135, 0, 3, 0, 55, 0, 120, 0, 21, 0, 51, 0, 135, 0, 44, 0, 3, 0, 32, 0, 31, 0, 10, 0, 120, 0, 27, 0, 26, 0, 66, 0, 135, 0, 3, 0, 32, 0, 59, 0, 132, 0, 3, 0, 22, 0, 21, 0, 135, 0, 32, 0, 31, 0, 10, 0, 120, 0, 27, 0, 26, 0, 66, 0, 132, 0, 3, 0, 23, 0, 35, 0, 120, 0, 51, 0, 135, 0, 44, 0, 3, 0, 55, 0, 120, 0, 37, 0, 61, 0, 62, 0, 3, 0, 55, 0, 120, 0, 21, 0, 61, 0, 135, 0, 26, 0, 3, 0, 55, 0, 120, 0, 21, 0, 51, 0, 135, 0, 44, 0, 3, 0, 32, 0, 120, 0, 51, 0, 135, 0, 44, 0, 3, 0, 32, 0, 20, 0, 120, 0, 14, 0, 21, 0, 135, 0, 3, 0, 22, 0, 120, 0, 21, 0, 51, 0, 62, 0, 44, 0, 3, 0, 23, 0, 35, 0, 120, 0, 51, 0, 135, 0, 44, 0, 3, 0, 32, 0, 31, 0, 10, 0, 120, 0, 51, 0, 33, 0, 135, 0, 3, 0, 31, 0, 10, 0, 120, 0, 27, 0, 9, 0, 135, 0, 3, 0, 32, 0, 120, 0, 51, 0, 33, 0, 135, 0, 3, 0, 28, 0, 120, 0, 14, 0, 135, 0, 26, 0, 3, 0, 23, 0, 20, 0, 120, 0, 27, 0, 26, 0, 66, 0, 135, 0, 3, 0, 32, 0, 31, 0, 10, 0, 120, 0, 27, 0, 26, 0, 66, 0, 135, 0, 3, 0, 32, 0, 59, 0, 132, 0, 3, 0, 31, 0, 10, 0, 35, 0, 120, 0, 18, 0, 21, 0, 132, 0, 3, 0, 32, 0, 120, 0, 21, 0, 135, 0, 3, 0, 23, 0, 35, 0, 120, 0, 51, 0, 135, 0, 44, 0, 3, 0, 55, 0, 120, 0, 21, 0, 61, 0, 135, 0, 26, 0, 3, 0, 28, 0, 120, 0, 18, 0, 21, 0, 135, 0, 3, 0, 32, 0, 31, 0, 10, 0, 120, 0, 27, 0, 9, 0, 62, 0, 3, 0, 31, 0, 10, 0, 120, 0, 27, 0, 9, 0, 135, 0, 3, 0, 32, 0, 55, 0, 120, 0, 21, 0, 62, 0, 3, 0, 19, 0, 120, 0, 14, 0, 132, 0, 26, 0, 3, 0, 31, 0, 10, 0, 120, 0, 27, 0, 9, 0, 135, 0, 3, 0, 32, 0, 31, 0, 120, 0, 14, 0, 21, 0, 135, 0, 3, 0, 32, 0, 20, 0, 120, 0, 21, 0, 61, 0, 135, 0, 26, 0, 3, 0, 23, 0, 20, 0, 120, 0, 27, 0, 26, 0, 66, 0, 135, 0, 3, 0, 31, 0, 10, 0, 120, 0, 51, 0, 135, 0, 44, 0, 3, 0, 55, 0, 120, 0, 21, 0, 62, 0, 44, 0, 3, 0, 32, 0, 31, 0, 10, 0, 20, 0, 120, 0, 59, 0, 62, 0, 44, 0, 3, 0, 23, 0, 120, 0, 27, 0, 26, 0, 66, 0, 132, 0, 3, 0, 55, 0, 120, 0, 21, 0, 62, 0, 44, 0, 3, 0, 32, 0, 59, 0, 62, 0, 3, 0, 32, 0, 55, 0, 20, 0, 120, 0, 21, 0, 135, 0, 3, 0, 32, 0, 31, 0, 20, 0, 120, 0, 14, 0, 21, 0, 132, 0, 3, 0, 23, 0, 35, 0, 51, 0, 135, 0, 44, 0, 28, 0, 20, 0, 120, 0, 33, 0, 132, 0, 3, 0, 22, 0, 120, 0, 21, 0, 27, 0, 33, 0, 62, 0, 3, 0, 35, 0, 120, 0, 14, 0, 21, 0, 135, 0, 3, 0, 32, 0, 55, 0, 20, 0, 120, 0, 37, 0, 39, 0, 135, 0, 26, 0, 3, 0, 32, 0, 31, 0, 10, 0, 120, 0, 21, 0, 10, 0, 135, 0, 3, 0, 26, 0, 120, 0, 18, 0, 21, 0, 135, 0, 3, 0, 32, 0, 55, 0, 20, 0, 120, 0, 37, 0, 39, 0, 135, 0, 26, 0, 3, 0, 32, 0, 31, 0, 10, 0, 20, 0, 120, 0, 59, 0, 62, 0, 44, 0, 3, 0, 127, 0, 120, 0, 27, 0, 26, 0, 66, 0, 62, 0, 3, 0, 32, 0, 31, 0, 10, 0, 20, 0, 120, 0, 59, 0, 62, 0, 44, 0, 3, 0, 127, 0, 35, 0, 120, 0, 51, 0, 62, 0, 44, 0, 3, 0, 24, 0, 120, 0, 37, 0, 135, 0, 3, 0, 24, 0, 120, 0, 14, 0, 62, 0, 26, 0, 3, 0, 32, 0, 120, 0, 21, 0, 61, 0, 135, 0, 26, 0, 3, 0, 24, 0, 120, 0, 14, 0, 62, 0, 26, 0, 3, 0, 32, 0, 55, 0, 120, 0, 21, 0, 62, 0, 26, 0, 3, 0, 32, 0, 31, 0, 120, 0, 21, 0, 142, 0, 132, 0, 3, 0, 32, 0, 55, 0, 20, 0, 120, 0, 21, 0, 135, 0, 3, 0, 32, 0, 31, 0, 10, 0, 120, 0, 27, 0, 26, 0, 66, 0, 132, 0, 3, 0, 22, 0, 120, 0, 21, 0, 61, 0, 62, 0, 26, 0, 3, 0, 31, 0, 120, 0, 27, 0, 9, 0, 135, 0, 3, 0, 26, 0, 21, 0, 62, 0, 127, 0, 120, 0, 27, 0, 26, 0, 66, 0, 62, 0, 3, 0, 32, 0, 31, 0, 120, 0, 27, 0, 9, 0, 62, 0, 3, 0, 55, 0, 21, 0, 51, 0, 135, 0, 44, 0, 19, 0, 120, 0, 14, 0, 132, 0, 26, 0, 2]} +{"text": "事實 上彩虹有无数種顏色,比如,在紅色和橙色之間還有許多種細微差別的顏色,根據 不同的文化背景被解讀爲3-9種不等,通常只用六七種顏色作為區別。", "phonemes": ["s", ".", "ˈ", "i", ".", "5", " ", "s", ".", "ˈ", "i", ".", "ɜ", " ", "s", ".", "ˈ", "ɑ", "5", "ŋ", " ", "t", "s", "h", "a", "i", "2", "χ", "ˈ", "o", "n", "ɡ", "ɜ", " ", "j", "ˈ", "i", "o", "u", "2", " ", "w", "ˈ", "u", "ɜ", " ", "s", ".", "ˈ", "u", "5", " ", "t", "s", ".", "ˈ", "o", "n", "ɡ", "2", " ", "j", "ˈ", "i", "ɛ", "ɜ", "n", " ", "s", "ˈ", "o", "-", "5", " ", "p", "ˈ", "i", "2", " ", "ʐ", "ˈ", "u", "ɜ", " ", "t", "s", "ˈ", "a", "i", "5", " ", "χ", "ˈ", "o", "n", "ɡ", "ɜ", " ", "s", "ˈ", "o", "-", "5", " ", "χ", "ˈ", "o", "-", "ɜ", " ", "t", "s", ".", "h", "ˈ", "ə", "ɜ", "ŋ", " ", "s", "ˈ", "o", "-", "5", " ", "t", "s", ".", "ˈ", "i", ".", "5", " ", "t", "ɕ", "ˈ", "i", "ɛ", "5", "n", " ", "χ", "a", "i", "ɜ", "j", "ˈ", "i", "o", "u", "ɜ", " ", "ɕ", "ˈ", "y", "2", " ", "t", "u", "o", "5", "t", "s", ".", "ˈ", "o", "n", "ɡ", "2", " ", "ɕ", "ˈ", "i", "5", " ", "w", "ˈ", "e", "i", "5", " ", "t", "s", ".", "h", "ɑ", "5", "p", "ˈ", "i", "ɛ", "ɜ", " ", "t", "ə", "ɜ", " ", "j", "ˈ", "i", "ɛ", "ɜ", "n", " ", "s", "ˈ", "o", "-", "5", " ", "k", "ˈ", "ə", "5", "n", " ", "t", "ɕ", "ˈ", "y", "5", " ", "p", "ˈ", "u", "5", " ", "t", "h", "ˈ", "o", "n", "ɡ", "ɜ", " ", "t", "ə", "ɜ", " ", "w", "ˈ", "u", "ə", "ɜ", "n", " ", "χ", "w", "ˈ", "ɑ", "5", " ", "p", "e", "i", "5", "t", "ɕ", "ˈ", "i", "2", "ŋ", " ", "p", "ˈ", "e", "i", "5", " ", "t", "ɕ", "ˈ", "i", "ɛ", "2", " ", "t", "ˈ", "u", "ɜ", " ", "w", "ˈ", "e", "i", "ɜ", " ", "s", "ˈ", "a", "5", "n", " ", "t", "ɕ", "ˈ", "i", "o", "u", "ɜ", " ", "t", "s", ".", "ˈ", "o", "n", "ɡ", "2", " ", "p", "ˈ", "u", "5", " ", "t", "ˈ", "ə", "2", "ŋ", " ", "t", "h", "ˈ", "o", "n", "ɡ", "5", " ", "t", "s", ".", "h", "ˈ", "ɑ", "ɜ", "ŋ", " ", "t", "s", ".", "ˈ", "i", ".", "2", " ", "j", "ˈ", "o", "n", "ɡ", "5", " ", "l", "ˈ", "i", "o", "u", "5", " ", "t", "ɕ", "h", "ˈ", "i", "5", " ", "t", "s", ".", "ˈ", "o", "n", "ɡ", "2", " ", "j", "ˈ", "i", "ɛ", "ɜ", "n", " ", "s", "ˈ", "o", "-", "5", " ", "t", "s", "u", "o", "5", "w", "ˈ", "e", "i", "ɜ", " ", "t", "ɕ", "h", "ˈ", "y", "5", " ", "p", "ˈ", "i", "ɛ", "ɜ"], "phoneme_ids": [1, 0, 31, 0, 10, 0, 120, 0, 21, 0, 10, 0, 135, 0, 3, 0, 31, 0, 10, 0, 120, 0, 21, 0, 10, 0, 62, 0, 3, 0, 31, 0, 10, 0, 120, 0, 51, 0, 135, 0, 44, 0, 3, 0, 32, 0, 31, 0, 20, 0, 14, 0, 21, 0, 132, 0, 127, 0, 120, 0, 27, 0, 26, 0, 66, 0, 62, 0, 3, 0, 22, 0, 120, 0, 21, 0, 27, 0, 33, 0, 132, 0, 3, 0, 35, 0, 120, 0, 33, 0, 62, 0, 3, 0, 31, 0, 10, 0, 120, 0, 33, 0, 135, 0, 3, 0, 32, 0, 31, 0, 10, 0, 120, 0, 27, 0, 26, 0, 66, 0, 132, 0, 3, 0, 22, 0, 120, 0, 21, 0, 61, 0, 62, 0, 26, 0, 3, 0, 31, 0, 120, 0, 27, 0, 9, 0, 135, 0, 3, 0, 28, 0, 120, 0, 21, 0, 132, 0, 3, 0, 106, 0, 120, 0, 33, 0, 62, 0, 3, 0, 32, 0, 31, 0, 120, 0, 14, 0, 21, 0, 135, 0, 3, 0, 127, 0, 120, 0, 27, 0, 26, 0, 66, 0, 62, 0, 3, 0, 31, 0, 120, 0, 27, 0, 9, 0, 135, 0, 3, 0, 127, 0, 120, 0, 27, 0, 9, 0, 62, 0, 3, 0, 32, 0, 31, 0, 10, 0, 20, 0, 120, 0, 59, 0, 62, 0, 44, 0, 3, 0, 31, 0, 120, 0, 27, 0, 9, 0, 135, 0, 3, 0, 32, 0, 31, 0, 10, 0, 120, 0, 21, 0, 10, 0, 135, 0, 3, 0, 32, 0, 55, 0, 120, 0, 21, 0, 61, 0, 135, 0, 26, 0, 3, 0, 127, 0, 14, 0, 21, 0, 62, 0, 22, 0, 120, 0, 21, 0, 27, 0, 33, 0, 62, 0, 3, 0, 55, 0, 120, 0, 37, 0, 132, 0, 3, 0, 32, 0, 33, 0, 27, 0, 135, 0, 32, 0, 31, 0, 10, 0, 120, 0, 27, 0, 26, 0, 66, 0, 132, 0, 3, 0, 55, 0, 120, 0, 21, 0, 135, 0, 3, 0, 35, 0, 120, 0, 18, 0, 21, 0, 135, 0, 3, 0, 32, 0, 31, 0, 10, 0, 20, 0, 51, 0, 135, 0, 28, 0, 120, 0, 21, 0, 61, 0, 62, 0, 3, 0, 32, 0, 59, 0, 62, 0, 3, 0, 22, 0, 120, 0, 21, 0, 61, 0, 62, 0, 26, 0, 3, 0, 31, 0, 120, 0, 27, 0, 9, 0, 135, 0, 3, 0, 23, 0, 120, 0, 59, 0, 135, 0, 26, 0, 3, 0, 32, 0, 55, 0, 120, 0, 37, 0, 135, 0, 3, 0, 28, 0, 120, 0, 33, 0, 135, 0, 3, 0, 32, 0, 20, 0, 120, 0, 27, 0, 26, 0, 66, 0, 62, 0, 3, 0, 32, 0, 59, 0, 62, 0, 3, 0, 35, 0, 120, 0, 33, 0, 59, 0, 62, 0, 26, 0, 3, 0, 127, 0, 35, 0, 120, 0, 51, 0, 135, 0, 3, 0, 28, 0, 18, 0, 21, 0, 135, 0, 32, 0, 55, 0, 120, 0, 21, 0, 132, 0, 44, 0, 3, 0, 28, 0, 120, 0, 18, 0, 21, 0, 135, 0, 3, 0, 32, 0, 55, 0, 120, 0, 21, 0, 61, 0, 132, 0, 3, 0, 32, 0, 120, 0, 33, 0, 62, 0, 3, 0, 35, 0, 120, 0, 18, 0, 21, 0, 62, 0, 3, 0, 31, 0, 120, 0, 14, 0, 135, 0, 26, 0, 3, 0, 32, 0, 55, 0, 120, 0, 21, 0, 27, 0, 33, 0, 62, 0, 3, 0, 32, 0, 31, 0, 10, 0, 120, 0, 27, 0, 26, 0, 66, 0, 132, 0, 3, 0, 28, 0, 120, 0, 33, 0, 135, 0, 3, 0, 32, 0, 120, 0, 59, 0, 132, 0, 44, 0, 3, 0, 32, 0, 20, 0, 120, 0, 27, 0, 26, 0, 66, 0, 135, 0, 3, 0, 32, 0, 31, 0, 10, 0, 20, 0, 120, 0, 51, 0, 62, 0, 44, 0, 3, 0, 32, 0, 31, 0, 10, 0, 120, 0, 21, 0, 10, 0, 132, 0, 3, 0, 22, 0, 120, 0, 27, 0, 26, 0, 66, 0, 135, 0, 3, 0, 24, 0, 120, 0, 21, 0, 27, 0, 33, 0, 135, 0, 3, 0, 32, 0, 55, 0, 20, 0, 120, 0, 21, 0, 135, 0, 3, 0, 32, 0, 31, 0, 10, 0, 120, 0, 27, 0, 26, 0, 66, 0, 132, 0, 3, 0, 22, 0, 120, 0, 21, 0, 61, 0, 62, 0, 26, 0, 3, 0, 31, 0, 120, 0, 27, 0, 9, 0, 135, 0, 3, 0, 32, 0, 31, 0, 33, 0, 27, 0, 135, 0, 35, 0, 120, 0, 18, 0, 21, 0, 62, 0, 3, 0, 32, 0, 55, 0, 20, 0, 120, 0, 37, 0, 135, 0, 3, 0, 28, 0, 120, 0, 21, 0, 61, 0, 62, 0, 2]} +{"text": "國際LGBT 聯盟的彩虹旗为六色:紅橙黃綠藍紫。", "phonemes": ["k", "ˈ", "u", "o", "ɜ", " ", "t", "ɕ", "ˈ", "i", "5", " ", "ɛ", "1", "l", "d", "ʒ", "i", "ː", "1", "b", "i", "ː", "1", "t", "i", "ː", "1", " ", "l", "ˈ", "i", "ɛ", "ɜ", "n", " ", "m", "ˈ", "ə", "ɜ", "ŋ", " ", "t", "ə", "ɜ", " ", "t", "s", "h", "a", "i", "2", "χ", "ˈ", "o", "n", "ɡ", "ɜ", " ", "t", "ɕ", "h", "ˈ", "i", "ɜ", " ", "w", "ˈ", "e", "i", "5", " ", "l", "ˈ", "i", "o", "u", "5", " ", "s", "ˈ", "o", "-", "5", " ", "χ", "ˈ", "o", "n", "ɡ", "ɜ", " ", "t", "s", ".", "h", "ˈ", "ə", "ɜ", "ŋ", " ", "χ", "w", "ˈ", "ɑ", "ɜ", "ŋ", " ", "l", "ˈ", "y", "5", " ", "l", "ˈ", "a", "ɜ", "n", " ", "t", "s", "ˈ", "i", "̪", "2"], "phoneme_ids": [1, 0, 23, 0, 120, 0, 33, 0, 27, 0, 62, 0, 3, 0, 32, 0, 55, 0, 120, 0, 21, 0, 135, 0, 3, 0, 61, 0, 131, 0, 24, 0, 17, 0, 108, 0, 21, 0, 122, 0, 131, 0, 15, 0, 21, 0, 122, 0, 131, 0, 32, 0, 21, 0, 122, 0, 131, 0, 3, 0, 24, 0, 120, 0, 21, 0, 61, 0, 62, 0, 26, 0, 3, 0, 25, 0, 120, 0, 59, 0, 62, 0, 44, 0, 3, 0, 32, 0, 59, 0, 62, 0, 3, 0, 32, 0, 31, 0, 20, 0, 14, 0, 21, 0, 132, 0, 127, 0, 120, 0, 27, 0, 26, 0, 66, 0, 62, 0, 3, 0, 32, 0, 55, 0, 20, 0, 120, 0, 21, 0, 62, 0, 3, 0, 35, 0, 120, 0, 18, 0, 21, 0, 135, 0, 3, 0, 24, 0, 120, 0, 21, 0, 27, 0, 33, 0, 135, 0, 3, 0, 31, 0, 120, 0, 27, 0, 9, 0, 135, 0, 3, 0, 127, 0, 120, 0, 27, 0, 26, 0, 66, 0, 62, 0, 3, 0, 32, 0, 31, 0, 10, 0, 20, 0, 120, 0, 59, 0, 62, 0, 44, 0, 3, 0, 127, 0, 35, 0, 120, 0, 51, 0, 62, 0, 44, 0, 3, 0, 24, 0, 120, 0, 37, 0, 135, 0, 3, 0, 24, 0, 120, 0, 14, 0, 62, 0, 26, 0, 3, 0, 32, 0, 31, 0, 120, 0, 21, 0, 142, 0, 132, 0, 2]} +{"text": "紅橙黃綠藍靛紫的七色說,就是在六色基礎 上將紫色分出偏藍色的靛。", "phonemes": ["χ", "ˈ", "o", "n", "ɡ", "ɜ", " ", "t", "s", ".", "h", "ˈ", "ə", "ɜ", "ŋ", " ", "χ", "w", "ˈ", "ɑ", "ɜ", "ŋ", " ", "l", "ˈ", "y", "5", " ", "l", "ˈ", "a", "ɜ", "n", " ", "t", "ˈ", "i", "ɛ", "5", "n", " ", "t", "s", "ˈ", "i", "̪", "2", " ", "t", "ə", "4", " ", "t", "ɕ", "h", "ˈ", "i", "5", " ", "s", "ˈ", "o", "-", "5", " ", "s", ".", "w", "ˈ", "o", "5", " ", "t", "ɕ", "ˈ", "i", "o", "u", "5", " ", "s", ".", "ˈ", "i", ".", "5", " ", "t", "s", "ˈ", "a", "i", "5", " ", "l", "ˈ", "i", "o", "u", "5", " ", "s", "ˈ", "o", "-", "5", " ", "t", "ɕ", "i", "5", "t", "s", ".", "h", "ˈ", "u", "2", " ", "s", ".", "ɑ", "5", "ŋ", "t", "ɕ", "ˈ", "i", "ɑ", "5", "ŋ", " ", "t", "s", "ˈ", "i", "̪", "2", " ", "s", "ˈ", "o", "-", "5", " ", "f", "ˈ", "ə", "5", "n", " ", "t", "s", ".", "h", "ˈ", "u", "5", " ", "p", "h", "ˈ", "i", "ɛ", "5", "n", " ", "l", "ˈ", "a", "ɜ", "n", " ", "s", "ˈ", "o", "-", "5", " ", "t", "ə", "1", " ", "t", "ˈ", "i", "ɛ", "5", "n"], "phoneme_ids": [1, 0, 127, 0, 120, 0, 27, 0, 26, 0, 66, 0, 62, 0, 3, 0, 32, 0, 31, 0, 10, 0, 20, 0, 120, 0, 59, 0, 62, 0, 44, 0, 3, 0, 127, 0, 35, 0, 120, 0, 51, 0, 62, 0, 44, 0, 3, 0, 24, 0, 120, 0, 37, 0, 135, 0, 3, 0, 24, 0, 120, 0, 14, 0, 62, 0, 26, 0, 3, 0, 32, 0, 120, 0, 21, 0, 61, 0, 135, 0, 26, 0, 3, 0, 32, 0, 31, 0, 120, 0, 21, 0, 142, 0, 132, 0, 3, 0, 32, 0, 59, 0, 134, 0, 3, 0, 32, 0, 55, 0, 20, 0, 120, 0, 21, 0, 135, 0, 3, 0, 31, 0, 120, 0, 27, 0, 9, 0, 135, 0, 3, 0, 31, 0, 10, 0, 35, 0, 120, 0, 27, 0, 135, 0, 3, 0, 32, 0, 55, 0, 120, 0, 21, 0, 27, 0, 33, 0, 135, 0, 3, 0, 31, 0, 10, 0, 120, 0, 21, 0, 10, 0, 135, 0, 3, 0, 32, 0, 31, 0, 120, 0, 14, 0, 21, 0, 135, 0, 3, 0, 24, 0, 120, 0, 21, 0, 27, 0, 33, 0, 135, 0, 3, 0, 31, 0, 120, 0, 27, 0, 9, 0, 135, 0, 3, 0, 32, 0, 55, 0, 21, 0, 135, 0, 32, 0, 31, 0, 10, 0, 20, 0, 120, 0, 33, 0, 132, 0, 3, 0, 31, 0, 10, 0, 51, 0, 135, 0, 44, 0, 32, 0, 55, 0, 120, 0, 21, 0, 51, 0, 135, 0, 44, 0, 3, 0, 32, 0, 31, 0, 120, 0, 21, 0, 142, 0, 132, 0, 3, 0, 31, 0, 120, 0, 27, 0, 9, 0, 135, 0, 3, 0, 19, 0, 120, 0, 59, 0, 135, 0, 26, 0, 3, 0, 32, 0, 31, 0, 10, 0, 20, 0, 120, 0, 33, 0, 135, 0, 3, 0, 28, 0, 20, 0, 120, 0, 21, 0, 61, 0, 135, 0, 26, 0, 3, 0, 24, 0, 120, 0, 14, 0, 62, 0, 26, 0, 3, 0, 31, 0, 120, 0, 27, 0, 9, 0, 135, 0, 3, 0, 32, 0, 59, 0, 131, 0, 3, 0, 32, 0, 120, 0, 21, 0, 61, 0, 135, 0, 26, 0, 2]} +{"text": "傳統中國文化說的七色是:赤橙黃綠青藍紫,青色 就是偏藍的綠色。", "phonemes": ["t", "s", ".", "h", "u", "a", "ɜ", "n", "t", "h", "ˈ", "o", "n", "ɡ", "2", " ", "t", "s", ".", "ˈ", "o", "n", "ɡ", "5", " ", "k", "ˈ", "u", "o", "ɜ", " ", "w", "ˈ", "u", "ə", "ɜ", "n", " ", "χ", "w", "ˈ", "ɑ", "5", " ", "s", ".", "w", "ˈ", "o", "5", " ", "t", "ə", "2", " ", "t", "ɕ", "h", "ˈ", "i", "5", " ", "s", "ˈ", "o", "-", "5", " ", "s", ".", "ˈ", "i", ".", "5", " ", "t", "s", ".", "h", "ˈ", "i", ".", "5", " ", "t", "s", ".", "h", "ˈ", "ə", "ɜ", "ŋ", " ", "χ", "w", "ˈ", "ɑ", "ɜ", "ŋ", " ", "l", "ˈ", "y", "5", " ", "t", "ɕ", "h", "ˈ", "i", "5", "ŋ", " ", "l", "ˈ", "a", "ɜ", "n", " ", "t", "s", "ˈ", "i", "̪", "2", " ", "t", "ɕ", "h", "ˈ", "i", "5", "ŋ", " ", "s", "ˈ", "o", "-", "5", " ", "t", "ɕ", "ˈ", "i", "o", "u", "5", " ", "s", ".", "ˈ", "i", ".", "5", " ", "p", "h", "ˈ", "i", "ɛ", "5", "n", " ", "l", "ˈ", "a", "ɜ", "n", " ", "t", "ə", "ɜ", " ", "l", "ˈ", "y", "5", " ", "s", "ˈ", "o", "-", "5"], "phoneme_ids": [1, 0, 32, 0, 31, 0, 10, 0, 20, 0, 33, 0, 14, 0, 62, 0, 26, 0, 32, 0, 20, 0, 120, 0, 27, 0, 26, 0, 66, 0, 132, 0, 3, 0, 32, 0, 31, 0, 10, 0, 120, 0, 27, 0, 26, 0, 66, 0, 135, 0, 3, 0, 23, 0, 120, 0, 33, 0, 27, 0, 62, 0, 3, 0, 35, 0, 120, 0, 33, 0, 59, 0, 62, 0, 26, 0, 3, 0, 127, 0, 35, 0, 120, 0, 51, 0, 135, 0, 3, 0, 31, 0, 10, 0, 35, 0, 120, 0, 27, 0, 135, 0, 3, 0, 32, 0, 59, 0, 132, 0, 3, 0, 32, 0, 55, 0, 20, 0, 120, 0, 21, 0, 135, 0, 3, 0, 31, 0, 120, 0, 27, 0, 9, 0, 135, 0, 3, 0, 31, 0, 10, 0, 120, 0, 21, 0, 10, 0, 135, 0, 3, 0, 32, 0, 31, 0, 10, 0, 20, 0, 120, 0, 21, 0, 10, 0, 135, 0, 3, 0, 32, 0, 31, 0, 10, 0, 20, 0, 120, 0, 59, 0, 62, 0, 44, 0, 3, 0, 127, 0, 35, 0, 120, 0, 51, 0, 62, 0, 44, 0, 3, 0, 24, 0, 120, 0, 37, 0, 135, 0, 3, 0, 32, 0, 55, 0, 20, 0, 120, 0, 21, 0, 135, 0, 44, 0, 3, 0, 24, 0, 120, 0, 14, 0, 62, 0, 26, 0, 3, 0, 32, 0, 31, 0, 120, 0, 21, 0, 142, 0, 132, 0, 3, 0, 32, 0, 55, 0, 20, 0, 120, 0, 21, 0, 135, 0, 44, 0, 3, 0, 31, 0, 120, 0, 27, 0, 9, 0, 135, 0, 3, 0, 32, 0, 55, 0, 120, 0, 21, 0, 27, 0, 33, 0, 135, 0, 3, 0, 31, 0, 10, 0, 120, 0, 21, 0, 10, 0, 135, 0, 3, 0, 28, 0, 20, 0, 120, 0, 21, 0, 61, 0, 135, 0, 26, 0, 3, 0, 24, 0, 120, 0, 14, 0, 62, 0, 26, 0, 3, 0, 32, 0, 59, 0, 62, 0, 3, 0, 24, 0, 120, 0, 37, 0, 135, 0, 3, 0, 31, 0, 120, 0, 27, 0, 9, 0, 135, 0, 2]} +{"text": "要是把橙色也分爲偏紅、偏黃的兩種就是九色。", "phonemes": ["j", "ɑ", "u", "5", "s", ".", "i", ".", "1", " ", "p", "ˈ", "ɑ", "2", " ", "t", "s", ".", "h", "ˈ", "ə", "ɜ", "ŋ", " ", "s", "ˈ", "o", "-", "5", " ", "j", "ˈ", "i", "ɛ", "2", " ", "f", "ˈ", "ə", "5", "n", " ", "w", "ˈ", "e", "i", "ɜ", " ", "p", "h", "ˈ", "i", "ɛ", "5", "n", " ", "χ", "ˈ", "o", "n", "ɡ", "ɜ", " ", "p", "h", "ˈ", "i", "ɛ", "5", "n", " ", "χ", "w", "ˈ", "ɑ", "ɜ", "ŋ", " ", "t", "ə", "ɜ", " ", "l", "ˈ", "i", "ɑ", "ɜ", "ŋ", " ", "t", "s", ".", "ˈ", "o", "n", "ɡ", "2", " ", "t", "ɕ", "ˈ", "i", "o", "u", "5", " ", "s", ".", "ˈ", "i", ".", "5", " ", "t", "ɕ", "ˈ", "i", "o", "u", "2", " ", "s", "ˈ", "o", "-", "5"], "phoneme_ids": [1, 0, 22, 0, 51, 0, 33, 0, 135, 0, 31, 0, 10, 0, 21, 0, 10, 0, 131, 0, 3, 0, 28, 0, 120, 0, 51, 0, 132, 0, 3, 0, 32, 0, 31, 0, 10, 0, 20, 0, 120, 0, 59, 0, 62, 0, 44, 0, 3, 0, 31, 0, 120, 0, 27, 0, 9, 0, 135, 0, 3, 0, 22, 0, 120, 0, 21, 0, 61, 0, 132, 0, 3, 0, 19, 0, 120, 0, 59, 0, 135, 0, 26, 0, 3, 0, 35, 0, 120, 0, 18, 0, 21, 0, 62, 0, 3, 0, 28, 0, 20, 0, 120, 0, 21, 0, 61, 0, 135, 0, 26, 0, 3, 0, 127, 0, 120, 0, 27, 0, 26, 0, 66, 0, 62, 0, 3, 0, 28, 0, 20, 0, 120, 0, 21, 0, 61, 0, 135, 0, 26, 0, 3, 0, 127, 0, 35, 0, 120, 0, 51, 0, 62, 0, 44, 0, 3, 0, 32, 0, 59, 0, 62, 0, 3, 0, 24, 0, 120, 0, 21, 0, 51, 0, 62, 0, 44, 0, 3, 0, 32, 0, 31, 0, 10, 0, 120, 0, 27, 0, 26, 0, 66, 0, 132, 0, 3, 0, 32, 0, 55, 0, 120, 0, 21, 0, 27, 0, 33, 0, 135, 0, 3, 0, 31, 0, 10, 0, 120, 0, 21, 0, 10, 0, 135, 0, 3, 0, 32, 0, 55, 0, 120, 0, 21, 0, 27, 0, 33, 0, 132, 0, 3, 0, 31, 0, 120, 0, 27, 0, 9, 0, 135, 0, 2]} +{"text": "三色說有:紅綠 藍,就是光學三原色,所有顏色的光都是這三種顏色混合出來的,和亚里士多 德紅、綠、紫三色說,就是兩頭加中間。", "phonemes": ["s", "ˈ", "a", "5", "n", " ", "s", "ˈ", "o", "-", "5", " ", "s", ".", "w", "ˈ", "o", "5", " ", "j", "ˈ", "i", "o", "u", "2", " ", "χ", "ˈ", "o", "n", "ɡ", "ɜ", " ", "l", "ˈ", "y", "5", " ", "l", "ˈ", "a", "ɜ", "n", " ", "t", "ɕ", "ˈ", "i", "o", "u", "5", " ", "s", ".", "ˈ", "i", ".", "5", " ", "k", "w", "ˈ", "ɑ", "5", "ŋ", " ", "ɕ", "ˈ", "y", "ɛ", "ɜ", " ", "s", "ˈ", "a", "5", "n", " ", "j", "ˈ", "y", "æ", "ɜ", "n", " ", "s", "ˈ", "o", "-", "5", " ", "s", "u", "o", "ɜ", "j", "ˈ", "i", "o", "u", "2", " ", "j", "ˈ", "i", "ɛ", "ɜ", "n", " ", "s", "ˈ", "o", "-", "5", " ", "t", "ə", "1", " ", "k", "w", "ˈ", "ɑ", "5", "ŋ", " ", "t", "ˈ", "o", "u", "5", " ", "s", ".", "ˈ", "i", ".", "5", " ", "t", "s", ".", "ˈ", "o", "-", "5", " ", "s", "ˈ", "a", "5", "n", " ", "t", "s", ".", "ˈ", "o", "n", "ɡ", "2", " ", "j", "ˈ", "i", "ɛ", "ɜ", "n", " ", "s", "ˈ", "o", "-", "5", " ", "χ", "w", "ˈ", "u", "ə", "5", "n", " ", "χ", "ˈ", "o", "-", "ɜ", " ", "t", "s", ".", "h", "u", "5", "l", "a", "i", "2", " ", "t", "ə", "1", " ", "χ", "ˈ", "o", "-", "ɜ", " ", "j", "ˈ", "i", "ɑ", "5", " ", "l", "ˈ", "i", "2", " ", "s", ".", "ˈ", "i", ".", "5", " ", "t", "ˈ", "u", "o", "5", " ", "t", "ˈ", "ə", "ɜ", " ", "χ", "ˈ", "o", "n", "ɡ", "ɜ", " ", "l", "ˈ", "y", "5", " ", "t", "s", "ˈ", "i", "̪", "2", " ", "s", "ˈ", "a", "5", "n", " ", "s", "ˈ", "o", "-", "5", " ", "s", ".", "w", "ˈ", "o", "5", " ", "t", "ɕ", "ˈ", "i", "o", "u", "5", " ", "s", ".", "ˈ", "i", ".", "5", " ", "l", "ˈ", "i", "ɑ", "2", "ŋ", " ", "t", "h", "ˈ", "o", "u", "ɜ", " ", "t", "ɕ", "ˈ", "i", "ɑ", "5", " ", "t", "s", ".", "ˈ", "o", "n", "ɡ", "5", " ", "t", "ɕ", "ˈ", "i", "ɛ", "5", "n"], "phoneme_ids": [1, 0, 31, 0, 120, 0, 14, 0, 135, 0, 26, 0, 3, 0, 31, 0, 120, 0, 27, 0, 9, 0, 135, 0, 3, 0, 31, 0, 10, 0, 35, 0, 120, 0, 27, 0, 135, 0, 3, 0, 22, 0, 120, 0, 21, 0, 27, 0, 33, 0, 132, 0, 3, 0, 127, 0, 120, 0, 27, 0, 26, 0, 66, 0, 62, 0, 3, 0, 24, 0, 120, 0, 37, 0, 135, 0, 3, 0, 24, 0, 120, 0, 14, 0, 62, 0, 26, 0, 3, 0, 32, 0, 55, 0, 120, 0, 21, 0, 27, 0, 33, 0, 135, 0, 3, 0, 31, 0, 10, 0, 120, 0, 21, 0, 10, 0, 135, 0, 3, 0, 23, 0, 35, 0, 120, 0, 51, 0, 135, 0, 44, 0, 3, 0, 55, 0, 120, 0, 37, 0, 61, 0, 62, 0, 3, 0, 31, 0, 120, 0, 14, 0, 135, 0, 26, 0, 3, 0, 22, 0, 120, 0, 37, 0, 39, 0, 62, 0, 26, 0, 3, 0, 31, 0, 120, 0, 27, 0, 9, 0, 135, 0, 3, 0, 31, 0, 33, 0, 27, 0, 62, 0, 22, 0, 120, 0, 21, 0, 27, 0, 33, 0, 132, 0, 3, 0, 22, 0, 120, 0, 21, 0, 61, 0, 62, 0, 26, 0, 3, 0, 31, 0, 120, 0, 27, 0, 9, 0, 135, 0, 3, 0, 32, 0, 59, 0, 131, 0, 3, 0, 23, 0, 35, 0, 120, 0, 51, 0, 135, 0, 44, 0, 3, 0, 32, 0, 120, 0, 27, 0, 33, 0, 135, 0, 3, 0, 31, 0, 10, 0, 120, 0, 21, 0, 10, 0, 135, 0, 3, 0, 32, 0, 31, 0, 10, 0, 120, 0, 27, 0, 9, 0, 135, 0, 3, 0, 31, 0, 120, 0, 14, 0, 135, 0, 26, 0, 3, 0, 32, 0, 31, 0, 10, 0, 120, 0, 27, 0, 26, 0, 66, 0, 132, 0, 3, 0, 22, 0, 120, 0, 21, 0, 61, 0, 62, 0, 26, 0, 3, 0, 31, 0, 120, 0, 27, 0, 9, 0, 135, 0, 3, 0, 127, 0, 35, 0, 120, 0, 33, 0, 59, 0, 135, 0, 26, 0, 3, 0, 127, 0, 120, 0, 27, 0, 9, 0, 62, 0, 3, 0, 32, 0, 31, 0, 10, 0, 20, 0, 33, 0, 135, 0, 24, 0, 14, 0, 21, 0, 132, 0, 3, 0, 32, 0, 59, 0, 131, 0, 3, 0, 127, 0, 120, 0, 27, 0, 9, 0, 62, 0, 3, 0, 22, 0, 120, 0, 21, 0, 51, 0, 135, 0, 3, 0, 24, 0, 120, 0, 21, 0, 132, 0, 3, 0, 31, 0, 10, 0, 120, 0, 21, 0, 10, 0, 135, 0, 3, 0, 32, 0, 120, 0, 33, 0, 27, 0, 135, 0, 3, 0, 32, 0, 120, 0, 59, 0, 62, 0, 3, 0, 127, 0, 120, 0, 27, 0, 26, 0, 66, 0, 62, 0, 3, 0, 24, 0, 120, 0, 37, 0, 135, 0, 3, 0, 32, 0, 31, 0, 120, 0, 21, 0, 142, 0, 132, 0, 3, 0, 31, 0, 120, 0, 14, 0, 135, 0, 26, 0, 3, 0, 31, 0, 120, 0, 27, 0, 9, 0, 135, 0, 3, 0, 31, 0, 10, 0, 35, 0, 120, 0, 27, 0, 135, 0, 3, 0, 32, 0, 55, 0, 120, 0, 21, 0, 27, 0, 33, 0, 135, 0, 3, 0, 31, 0, 10, 0, 120, 0, 21, 0, 10, 0, 135, 0, 3, 0, 24, 0, 120, 0, 21, 0, 51, 0, 132, 0, 44, 0, 3, 0, 32, 0, 20, 0, 120, 0, 27, 0, 33, 0, 62, 0, 3, 0, 32, 0, 55, 0, 120, 0, 21, 0, 51, 0, 135, 0, 3, 0, 32, 0, 31, 0, 10, 0, 120, 0, 27, 0, 26, 0, 66, 0, 135, 0, 3, 0, 32, 0, 55, 0, 120, 0, 21, 0, 61, 0, 135, 0, 26, 0, 2]} diff --git a/piper/piper/etc/test_sentences/tr.txt b/piper/piper/etc/test_sentences/tr.txt new file mode 100644 index 0000000..5148bbb --- /dev/null +++ b/piper/piper/etc/test_sentences/tr.txt @@ -0,0 +1,5 @@ +Gökkuşağı, güneş ışınlarının yağmur damlalarında veya sis bulutlarında yansıması ve kırılmasıyla meydana gelen ve ışık tayfı renklerinin bir yay şeklinde göründüğü meteorolojik bir olaydır. +Gökkuşağındaki renkler bir spektrum oluşturur. +Tipik bir gökkuşağı kırmızı, turuncu, sarı, yeşil, mavi, lacivert ve mor renklerinden meydana gelen bir renk sırasına sahip bir veya daha fazla aynı merkezli arklardan ibarettir. +Pijamalı hasta yağız şoföre çabucak güvendi. +Öküz ajan hapse düştü yavrum, ocağı felç gibi. diff --git a/piper/piper/etc/test_sentences/uk.txt b/piper/piper/etc/test_sentences/uk.txt new file mode 100644 index 0000000..db22bca --- /dev/null +++ b/piper/piper/etc/test_sentences/uk.txt @@ -0,0 +1,7 @@ +Весе́лка, також ра́йдуга оптичне явище в атмосфері, що являє собою одну, дві чи декілька різнокольорових дуг ,або кіл, якщо дивитися з повітря, що спостерігаються на тлі хмари, якщо вона розташована проти Сонця. +Червоний колір ми бачимо з зовнішнього боку первинної веселки, а фіолетовий — із внутрішнього. +Веселка пов'язана з заломленням і відбиттям ,деякою мірою і з дифракцією, сонячного світла у водяних краплях, зважених у повітрі. +Ці крапельки по-різному відхиляють світло різних кольорів, у результаті чого біле світло розкладається на спектр. +Спостерігач, що стоїть спиною до джерела світла, бачить різнобарвне світіння, що виходить із простору по концентричному колу ,дузі. +Чуєш їх, доцю, га? Кумедна ж ти, прощайся без ґольфів! +Жебракують філософи при ґанку церкви в Гадячі, ще й шатро їхнє п’яне знаємо. diff --git a/piper/piper/etc/test_sentences/vi.txt b/piper/piper/etc/test_sentences/vi.txt new file mode 100644 index 0000000..6554451 --- /dev/null +++ b/piper/piper/etc/test_sentences/vi.txt @@ -0,0 +1,9 @@ +Cầu vồng hay mống cũng như quang phổ là hiện tượng tán sắc của các ánh sáng từ Mặt Trời khi khúc xạ và phản xạ qua các giọt nước mưa. +Ở nhiều nền văn hóa khác nhau, cầu vồng xuất hiện được coi là mang đến điềm lành cho nhân thế. +Do bạch kim rất quý nên sẽ dùng để lắp vô xương. +Tâm tưởng tôi tỏ tình tới Tú từ tháng tư, thú thật, tôi thương Tâm thì tôi thì thầm thử Tâm thế thôị. +Nồi đồng nấu ốc, nồi đất nấu ếch. +Lan leo lên lầu Lan lấy lưỡi lam. Lan lấy lộn lưỡi liềm Lan leo lên lầu lấy lại. +Bà Ba béo bán bánh bò, bán bòn bon, bán bong bóng, bên bờ biển, bả bị bộ binh bắt ba bốn bận. +Chồng chị chín chết chị chưa chôn, chị chờ chuối chín chị chôn cho chồng +Ðêm đen Đào đốt đèn đi đâu đó. Ðào đốt đèn đi đợi Ðài. Đài đến. Đào đòi đô, Đài đưa Đào đô, Ðào đòi Dylan Ðài đưa Dylan. diff --git a/piper/piper/etc/test_sentences/zh.txt b/piper/piper/etc/test_sentences/zh.txt new file mode 100644 index 0000000..b6b1854 --- /dev/null +++ b/piper/piper/etc/test_sentences/zh.txt @@ -0,0 +1,7 @@ +彩虹,又稱天弓、天虹、絳等,簡稱虹,是氣象中的一種光學現象,當太陽 光照射到半空中的水滴,光線被折射及反射,在天空上形成拱形的七彩光譜,由外 圈至内圈呈紅、橙、黃、綠、蓝、靛蓝、堇紫七种颜色(霓虹則相反)。 +事實 上彩虹有无数種顏色,比如,在紅色和橙色之間還有許多種細微差別的顏色,根據 不同的文化背景被解讀爲3-9種不等,通常只用六七種顏色作為區別。 +國際LGBT 聯盟的彩虹旗为六色:紅橙黃綠藍紫。 +紅橙黃綠藍靛紫的七色說,就是在六色基礎 上將紫色分出偏藍色的靛。 +傳統中國文化說的七色是:赤橙黃綠青藍紫,青色 就是偏藍的綠色。 +要是把橙色也分爲偏紅、偏黃的兩種就是九色。 +三色說有:紅綠 藍,就是光學三原色,所有顏色的光都是這三種顏色混合出來的,和亚里士多 德紅、綠、紫三色說,就是兩頭加中間。 diff --git a/piper/piper/etc/test_voice.onnx b/piper/piper/etc/test_voice.onnx new file mode 100644 index 0000000..575e2f0 Binary files /dev/null and b/piper/piper/etc/test_voice.onnx differ diff --git a/piper/piper/etc/test_voice.onnx.json b/piper/piper/etc/test_voice.onnx.json new file mode 100644 index 0000000..d64db2e --- /dev/null +++ b/piper/piper/etc/test_voice.onnx.json @@ -0,0 +1,409 @@ +{ + "audio": { + "sample_rate": 16000 + }, + "espeak": { + "voice": "en-us" + }, + "inference": { + "noise_scale": 0.667, + "length_scale": 1, + "noise_w": 0.8 + }, + "phoneme_map": {}, + "phoneme_id_map": { + "_": [ + 0 + ], + "^": [ + 1 + ], + "$": [ + 2 + ], + " ": [ + 3 + ], + "!": [ + 4 + ], + "'": [ + 5 + ], + "(": [ + 6 + ], + ")": [ + 7 + ], + ",": [ + 8 + ], + "-": [ + 9 + ], + ".": [ + 10 + ], + ":": [ + 11 + ], + ";": [ + 12 + ], + "?": [ + 13 + ], + "a": [ + 14 + ], + "b": [ + 15 + ], + "c": [ + 16 + ], + "d": [ + 17 + ], + "e": [ + 18 + ], + "f": [ + 19 + ], + "h": [ + 20 + ], + "i": [ + 21 + ], + "j": [ + 22 + ], + "k": [ + 23 + ], + "l": [ + 24 + ], + "m": [ + 25 + ], + "n": [ + 26 + ], + "o": [ + 27 + ], + "p": [ + 28 + ], + "q": [ + 29 + ], + "r": [ + 30 + ], + "s": [ + 31 + ], + "t": [ + 32 + ], + "u": [ + 33 + ], + "v": [ + 34 + ], + "w": [ + 35 + ], + "x": [ + 36 + ], + "y": [ + 37 + ], + "z": [ + 38 + ], + "æ": [ + 39 + ], + "ç": [ + 40 + ], + "ð": [ + 41 + ], + "ø": [ + 42 + ], + "ħ": [ + 43 + ], + "ŋ": [ + 44 + ], + "œ": [ + 45 + ], + "ǀ": [ + 46 + ], + "ǁ": [ + 47 + ], + "ǂ": [ + 48 + ], + "ǃ": [ + 49 + ], + "ɐ": [ + 50 + ], + "ɑ": [ + 51 + ], + "ɒ": [ + 52 + ], + "ɓ": [ + 53 + ], + "ɔ": [ + 54 + ], + "ɕ": [ + 55 + ], + "ɖ": [ + 56 + ], + "ɗ": [ + 57 + ], + "ɘ": [ + 58 + ], + "ə": [ + 59 + ], + "ɚ": [ + 60 + ], + "ɛ": [ + 61 + ], + "ɜ": [ + 62 + ], + "ɞ": [ + 63 + ], + "ɟ": [ + 64 + ], + "ɠ": [ + 65 + ], + "ɡ": [ + 66 + ], + "ɢ": [ + 67 + ], + "ɣ": [ + 68 + ], + "ɤ": [ + 69 + ], + "ɥ": [ + 70 + ], + "ɦ": [ + 71 + ], + "ɧ": [ + 72 + ], + "ɨ": [ + 73 + ], + "ɪ": [ + 74 + ], + "ɫ": [ + 75 + ], + "ɬ": [ + 76 + ], + "ɭ": [ + 77 + ], + "ɮ": [ + 78 + ], + "ɯ": [ + 79 + ], + "ɰ": [ + 80 + ], + "ɱ": [ + 81 + ], + "ɲ": [ + 82 + ], + "ɳ": [ + 83 + ], + "ɴ": [ + 84 + ], + "ɵ": [ + 85 + ], + "ɶ": [ + 86 + ], + "ɸ": [ + 87 + ], + "ɹ": [ + 88 + ], + "ɺ": [ + 89 + ], + "ɻ": [ + 90 + ], + "ɽ": [ + 91 + ], + "ɾ": [ + 92 + ], + "ʀ": [ + 93 + ], + "ʁ": [ + 94 + ], + "ʂ": [ + 95 + ], + "ʃ": [ + 96 + ], + "ʄ": [ + 97 + ], + "ʈ": [ + 98 + ], + "ʉ": [ + 99 + ], + "ʊ": [ + 100 + ], + "ʋ": [ + 101 + ], + "ʌ": [ + 102 + ], + "ʍ": [ + 103 + ], + "ʎ": [ + 104 + ], + "ʏ": [ + 105 + ], + "ʐ": [ + 106 + ], + "ʑ": [ + 107 + ], + "ʒ": [ + 108 + ], + "ʔ": [ + 109 + ], + "ʕ": [ + 110 + ], + "ʘ": [ + 111 + ], + "ʙ": [ + 112 + ], + "ʛ": [ + 113 + ], + "ʜ": [ + 114 + ], + "ʝ": [ + 115 + ], + "ʟ": [ + 116 + ], + "ʡ": [ + 117 + ], + "ʢ": [ + 118 + ], + "ʲ": [ + 119 + ], + "ˈ": [ + 120 + ], + "ˌ": [ + 121 + ], + "ː": [ + 122 + ], + "ˑ": [ + 123 + ], + "˞": [ + 124 + ], + "β": [ + 125 + ], + "θ": [ + 126 + ], + "χ": [ + 127 + ], + "ᵻ": [ + 128 + ], + "ⱱ": [ + 129 + ] + }, + "num_symbols": 130, + "num_speakers": 1, + "speaker_id_map": {} +} \ No newline at end of file diff --git a/piper/piper/notebooks/lng/0.txt b/piper/piper/notebooks/lng/0.txt new file mode 100644 index 0000000..19a490d --- /dev/null +++ b/piper/piper/notebooks/lng/0.txt @@ -0,0 +1,28 @@ +[language info] +Name= +code= +version= +author= +Copyright= +[Strings] +Interface openned. Write your texts, configure the different synthesis options or download all the voices you want. Enjoy!= +Model failed to download!= +No downloaded voice packages!= +You have not loaded any model from the list!= +Select voice package= +Load it!= +Select speaker= +Rate scale= +Phoneme noise scale= +Phoneme stressing scale= +Enter your text here= +Text to synthesize= +Synthesize= +Auto-play= +Click here to synthesize the text.= +Exit= +Closes this GUI.= +audio history= +The Use GPU checkbox is checked, but you don't have a GPU runtime.= +The Use GPU checkbox is unchecked, however you are using a GPU runtime environment. We recommend you check the checkbox to use GPU to take advantage of it.= +Invalid link or ID!= \ No newline at end of file diff --git a/piper/piper/notebooks/lng/es.lang b/piper/piper/notebooks/lng/es.lang new file mode 100644 index 0000000..c4ea384 --- /dev/null +++ b/piper/piper/notebooks/lng/es.lang @@ -0,0 +1,28 @@ +[language info] +Name=Español +code=Es +version=0.1 +author=Mateo Cedillo +Copyright=© 2018-2023 MT Programs, todos los derechos Reservados +[Strings] +Interface openned. Write your texts, configure the different synthesis options or download all the voices you want. Enjoy!=Interfaz abierta. Escribe tus textos, configura las diferentes opciones de síntesis o descarga todas las voces que quieras. ¡Disfruta! +Model failed to download!=¡No se pudo descargar el modelo! +No downloaded voice packages!=¡No se han descargado paquetes de voz! +You have not loaded any model from the list!=¡No has cargado ningún modelo de la lista! +Select voice package=Selecciona paquete de voz +Load it!=¡Cárgalo! +Select speaker=Selecciona hablante +Rate scale=Escala de velocidad +Phoneme noise scale=Escala de resonancia de fonemas +Phoneme stressing scale=Escala de acentuación de fonemas +Enter your text here=Introduce tu texto aquí +Text to synthesize=Texto a sintetizar +Synthesize=Sintetizar +Auto-play=Auto-reproducir +Click here to synthesize the text.=Haz clic aquí para sintetizar el texto. +Exit=Salir +Closes this GUI.=Cierra esta interfaz. +audio history=Historial de audio +The Use GPU checkbox is checked, but you don't have a GPU runtime.=La casilla de usar GPU está habilitada, pero no tienes un entorno de ejecución con GPU. +The Use GPU checkbox is unchecked, however you are using a GPU runtime environment. We recommend you check the checkbox to use GPU to take advantage of it.=La casilla de usar GPU está desmarcada, sin embargo, estás usando un entorno de ejecución GPU. Te recomendamos activar la casilla de usar GPU para aprovecharla. +Invalid link or ID!=¡Enlace o ID no válido! \ No newline at end of file diff --git a/piper/piper/notebooks/lng/guía de traducción.txt b/piper/piper/notebooks/lng/guía de traducción.txt new file mode 100644 index 0000000..b927307 --- /dev/null +++ b/piper/piper/notebooks/lng/guía de traducción.txt @@ -0,0 +1,21 @@ +Instrucciones para traductores +Este documento es una pequeña guía de instrucciones que ayudarán mejor a la creación de idiomas y entender su sintaxis. +*Crear un nuevo idioma: +Para crear un nuevo idioma, primero debes hacer una copia del archivo 0.txt, ya que ese archivo es una plantilla vacía de traducción y en esa plantilla nos basaremos para crear las entradas y los mensajes. +Una vez hecha la copia del archivo 0.txt, nos posicionamos en la misma y renombramos el archivo a las dos primeras letras de tu idioma. Por ejemplo, si queremos hacer una traducción a francés entonces tendríamos que poner "fr" de "français", y hay que tener en cuenta que si queremos que nuestra traducción funcione en el programa deberemos cambiar la extensión te .txt a .lang. Antes funcionava solo con cambiar el nombre pero no la extensión, pero finalmente se ha decidido así por cambios técnicos y para la autodetección de idiomas nuevos. +Una vez tengamos nuestra propia plantilla, debemos abrirla con algún editor de textos, y podemos comenzar a hacer nuestras entradas de traducción. +Como podemos fijarnos, al principio hay una línea encerrada entre corchetes. Esas líneas se denominan secciones, y la primera es languaje info, sección de información sobre el idioma que estamos creando. +Explicaré las siguientes líneas que debemos llenar al final de la línea, después del signo igual: +Name: El nombre original de tu idioma, por ejemplo, si queremos hacer una traducción en inglés quedará como "English", o, si en cambio es una traducción en español entonces se escribirá "Español", si es un idioma en portugués quedará como "português", y se aplica en todos los idiomas. +Code: En este parámetro pondremos de nuevo las dos primeras letras del idioma a traducir, como lo hicimos en el primer paso de la creación del archivo. +version: Versión del idioma. El idioma puede tener una versión, pero es más recomendable que sea la del programa. +author: El nombre del autor que crea el idioma. +Copyright: Es opcional, si queremos poner derechos de autor. +E aquí terminamos con la primera sección. +*Segunda sección. +strings: +En esta sección se encuentran todos los mensajes disponibles para traducir. +Notarás que en cada línea hay un signo igual al final (=) Este signo es importante, pues sirve para identificar el mensaje original (antes de =) y el valor a ser traducido (después de =). +Para traducir un mensaje, debes hacerlo al final de la línea que estás traduciendo, después del signo "=", siempre y cuando se respete la puntuación y las reglas del mensaje original. +Una vez terminado, puedes mandarlo a revisión a angelitomateocedillo@gmail.com o, en cualquiera de mis aplicaciones, seleccionando la opción "errores y sugerencias" en el menú ayuda y enviando el archivo al formulario que se te redirige a tu navegador. +Fin. diff --git a/piper/piper/notebooks/lng/translation guide.txt b/piper/piper/notebooks/lng/translation guide.txt new file mode 100644 index 0000000..f0c71cf --- /dev/null +++ b/piper/piper/notebooks/lng/translation guide.txt @@ -0,0 +1,21 @@ +Instructions for translators +This document is a short instruction guide that will better help you create languages and understand their syntax. +* Create a new language: +To create a new language, you must first make a copy of the 0.txt file, since that file is an empty translation template and we will use that template to create the posts and messages. +Once the copy of the 0.txt file is made, we position ourselves in it and rename the file to the first two letters of your language. For example, if we want to make a French translation then we would have to put "fr" from "français", and we must bear in mind that if we want our translation to work in the program we must change the extension .txt to .lang. Before it only worked by changing the name but not the extension, but finally it has been decided that way for technical changes and for the autodetection of new languages. +Once we have our own template, we must open it with a text editor, and we can start making our translation entries. +As we can see, at the beginning there is a line enclosed in square brackets. These lines are called sections, and the first one is language info, a section with information about the language we are creating. +I will explain the following lines that we must fill at the end of the line, after the equal sign: +Name: The original name of your language, for example, if we want to make a translation in English it will remain as "English", or, if instead it is a translation in Spanish then it will be written "Español", if it is a language in Portuguese it will remain as "português", and it applies in all languages. +Code: In this parameter we will put again the first two letters of the language to be translated, as we did in the first step of creating the file. +version: Language version. The language may have a version, but it is recommended that it be that of the program. +author: The name of the author who creates the language. +Copyright: It is optional, if we want to put copyright. +And here we end with the first section. +*Second section. +strings: +In this section you will find all the messages available for translation. +You will notice that in each line there is an equal sign at the end (=) This sign is important, as it serves to identify the original message (before =) and the value to be translated (after =). +To translate a message, you must do it at the end of the line you are translating, after the "=" sign, as long as the punctuation and rules of the original message are respected. +Once finished, you can send it for review to angelitomateocedillo@gmail.com or, in any of my applications, selecting the option "errors and suggestions" in the help menu and sending the file to the form that is redirected to your browser. +End. \ No newline at end of file diff --git a/piper/piper/notebooks/piper_inference_(ONNX).ipynb b/piper/piper/notebooks/piper_inference_(ONNX).ipynb new file mode 100644 index 0000000..a2f7a8d --- /dev/null +++ b/piper/piper/notebooks/piper_inference_(ONNX).ipynb @@ -0,0 +1,558 @@ +{ + "nbformat": 4, + "nbformat_minor": 0, + "metadata": { + "colab": { + "provenance": [], + "gpuType": "T4", + "authorship_tag": "ABX9TyMAPvo6Syxu5wDRkSmySUxq", + "include_colab_link": true + }, + "kernelspec": { + "name": "python3", + "display_name": "Python 3" + }, + "language_info": { + "name": "python" + }, + "accelerator": "GPU" + }, + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "id": "view-in-github", + "colab_type": "text" + }, + "source": [ + "\"Open" + ] + }, + { + "cell_type": "markdown", + "source": [ + "# **[Piper](https://github.com/rhasspy/piper) inferencing notebook.**\n", + "## ![Piper logo](https://contribute.rhasspy.org/img/logo.png)\n", + "\n", + "---\n", + "\n", + "- Notebook made by [rmcpantoja](http://github.com/rmcpantoja)\n", + "- Collaborator: [Xx_Nessu_xX](https://fakeyou.com/profile/Xx_Nessu_xX)" + ], + "metadata": { + "id": "eK3nmYDB6C1a" + } + }, + { + "cell_type": "markdown", + "source": [ + "# First steps" + ], + "metadata": { + "id": "9wIvcSmOby84" + } + }, + { + "cell_type": "code", + "source": [ + "#@title Install software and settings\n", + "#@markdown The speech synthesizer and other important dependencies will be installed in this cell. But first, some settings:\n", + "\n", + "#@markdown #### Enhable Enhanced Accessibility?\n", + "#@markdown This Enhanced Accessibility functionality is designed for the visually impaired, in which most of the interface can be used by voice guides.\n", + "enhanced_accessibility = True #@param {type:\"boolean\"}\n", + "#@markdown ---\n", + "\n", + "#@markdown #### Please select your language:\n", + "lang_select = \"English\" #@param [\"English\", \"Spanish\"]\n", + "if lang_select == \"English\":\n", + " lang = \"en\"\n", + "elif lang_select == \"Spanish\":\n", + " lang = \"es\"\n", + "else:\n", + " raise Exception(\"Language not supported.\")\n", + "#@markdown ---\n", + "#@markdown #### Do you want to use the GPU for inference?\n", + "\n", + "#@markdown The GPU can be enabled in the edit/notebook settings menu, and this step must be done before connecting to a runtime. The GPU can lead to a higher response speed in inference, but you can use the CPU, for example, if your colab runtime to use GPU's has been ended.\n", + "use_gpu = True #@param {type:\"boolean\"}\n", + "\n", + "if enhanced_accessibility:\n", + " from google.colab import output\n", + " guideurl = f\"https://github.com/rmcpantoja/piper/blob/master/notebooks/wav/{lang}\"\n", + " def playaudio(filename, extension = \"wav\"):\n", + " return output.eval_js(f'new Audio(\"{guideurl}/{filename}.{extension}?raw=true\").play()')\n", + "\n", + "%cd /content\n", + "print(\"Installing...\")\n", + "if enhanced_accessibility:\n", + " playaudio(\"installing\")\n", + "!git clone -q https://github.com/rmcpantoja/piper\n", + "%cd /content/piper/src/python\n", + "#!pip install -q -r requirements.txt\n", + "!pip install -q cython>=0.29.0 piper-phonemize==1.1.0 librosa>=0.9.2 numpy>=1.19.0 onnxruntime>=1.11.0 pytorch-lightning==1.7.0 torch==1.11.0\n", + "!pip install -q onnxruntime-gpu\n", + "!bash build_monotonic_align.sh\n", + "import os\n", + "if not os.path.exists(\"/content/piper/src/python/lng\"):\n", + " !cp -r \"/content/piper/notebooks/lng\" /content/piper/src/python/lng\n", + "import sys\n", + "sys.path.append('/content/piper/notebooks')\n", + "from translator import *\n", + "lan = Translator()\n", + "print(\"Checking GPU...\")\n", + "gpu_info = !nvidia-smi\n", + "if use_gpu and any('not found' in info for info in gpu_info[0].split(':')):\n", + " if enhanced_accessibility:\n", + " playaudio(\"nogpu\")\n", + " raise Exception(lan.translate(lang, \"The Use GPU checkbox is checked, but you don't have a GPU runtime.\"))\n", + "elif not use_gpu and not any('not found' in info for info in gpu_info[0].split(':')):\n", + " if enhanced_accessibility:\n", + " playaudio(\"gpuavailable\")\n", + " raise Exception(lan.translate(lang, \"The Use GPU checkbox is unchecked, however you are using a GPU runtime environment. We recommend you check the checkbox to use GPU to take advantage of it.\"))\n", + "\n", + "if enhanced_accessibility:\n", + " playaudio(\"installed\")\n", + "print(\"Success!\")" + ], + "metadata": { + "cellView": "form", + "id": "v8b_PEtXb8co" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "#@title Download your exported model\n", + "%cd /content/piper/src/python\n", + "import os\n", + "#@markdown #### ID or link of the voice package (tar.gz format):\n", + "package_url_or_id = \"\" #@param {type:\"string\"}\n", + "#@markdown ---\n", + "if package_url_or_id == \"\" or package_url_or_id == \"http\" or package_url_or_id == \"1\":\n", + " if enhanced_accessibility:\n", + " playaudio(\"noid\")\n", + " raise Exception(lan.translate(lang, \"Invalid link or ID!\"))\n", + "print(\"Downloading voice package...\")\n", + "if enhanced_accessibility:\n", + " playaudio(\"downloading\")\n", + "if package_url_or_id.startswith(\"1\"):\n", + " !gdown -q \"{package_url_or_id}\" -O \"voice_package.tar.gz\"\n", + "elif package_url_or_id.startswith(\"https://drive.google.com/file/d/\"):\n", + " !gdown -q \"{package_url_or_id}\" -O \"voice_package.tar.gz\" --fuzzy\n", + "else:\n", + " !wget -q \"{package_url_or_id}\" -O \"voice_package.tar.gz\"\n", + "if os.path.exists(\"/content/piper/src/python/voice_package.tar.gz\"):\n", + " !tar -xf voice_package.tar.gz\n", + " print(\"Voice package downloaded!\")\n", + " if enhanced_accessibility:\n", + " playaudio(\"downloaded\")\n", + "else:\n", + " if enhanced_accessibility:\n", + " playaudio(\"dwnerror\")\n", + " raise Exception(lan.translate(lang, \"Model failed to download!\"))" + ], + "metadata": { + "cellView": "form", + "id": "ykIYmVXccg6s" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "# inferencing" + ], + "metadata": { + "id": "MRvkYJF6g5FT" + } + }, + { + "cell_type": "code", + "source": [ + "#@title run inference\n", + "#@markdown #### before you enjoy... Some notes!\n", + "#@markdown * You can run the cell to download voice packs and download voices you want at any time, even if you run this cell!\n", + "#@markdown * When you download a new voice, run this cell again and you will now be able to toggle between all the ones you download. Incredible, right?\n", + "\n", + "#@markdown Enjoy!!\n", + "\n", + "%cd /content/piper/src/python\n", + "# original: infer_onnx.py\n", + "import json\n", + "import logging\n", + "import math\n", + "import sys\n", + "from pathlib import Path\n", + "from enum import Enum\n", + "from typing import Iterable, List, Optional, Union\n", + "import numpy as np\n", + "import onnxruntime\n", + "from piper_train.vits.utils import audio_float_to_int16\n", + "import glob\n", + "import ipywidgets as widgets\n", + "from IPython.display import display, Audio, Markdown, clear_output\n", + "from piper_phonemize import phonemize_codepoints, phonemize_espeak, tashkeel_run\n", + "\n", + "_LOGGER = logging.getLogger(\"piper_train.infer_onnx\")\n", + "\n", + "def detect_onnx_models(path):\n", + " onnx_models = glob.glob(path + '/*.onnx')\n", + " if len(onnx_models) > 1:\n", + " return onnx_models\n", + " elif len(onnx_models) == 1:\n", + " return onnx_models[0]\n", + " else:\n", + " return None\n", + "\n", + "\n", + "def main():\n", + " \"\"\"Main entry point\"\"\"\n", + " models_path = \"/content/piper/src/python\"\n", + " logging.basicConfig(level=logging.DEBUG)\n", + " providers = [\n", + " \"CPUExecutionProvider\"\n", + " if use_gpu is False\n", + " else (\"CUDAExecutionProvider\", {\"cudnn_conv_algo_search\": \"DEFAULT\"})\n", + " ]\n", + " sess_options = onnxruntime.SessionOptions()\n", + " model = None\n", + " onnx_models = detect_onnx_models(models_path)\n", + " speaker_selection = widgets.Dropdown(\n", + " options=[],\n", + " description=f'{lan.translate(lang, \"Select speaker\")}:',\n", + " layout={'visibility': 'hidden'}\n", + " )\n", + " if onnx_models is None:\n", + " if enhanced_accessibility:\n", + " playaudio(\"novoices\")\n", + " raise Exception(lan.translate(lang, \"No downloaded voice packages!\"))\n", + " elif isinstance(onnx_models, str):\n", + " onnx_model = onnx_models\n", + " model, config = load_onnx(onnx_model, sess_options, providers)\n", + " if config[\"num_speakers\"] > 1:\n", + " speaker_selection.options = config[\"speaker_id_map\"].values()\n", + " speaker_selection.layout.visibility = 'visible'\n", + " preview_sid = 0\n", + " if enhanced_accessibility:\n", + " playaudio(\"multispeaker\")\n", + " else:\n", + " speaker_selection.layout.visibility = 'hidden'\n", + " preview_sid = None\n", + "\n", + " if enhanced_accessibility:\n", + " inferencing(\n", + " model,\n", + " config,\n", + " preview_sid,\n", + " lan.translate(\n", + " config[\"espeak\"][\"voice\"][:2],\n", + " \"Interface openned. Write your texts, configure the different synthesis options or download all the voices you want. Enjoy!\"\n", + " )\n", + " )\n", + " else:\n", + " voice_model_names = []\n", + " for current in onnx_models:\n", + " voice_struct = current.split(\"/\")[5]\n", + " voice_model_names.append(voice_struct)\n", + " if enhanced_accessibility:\n", + " playaudio(\"selectmodel\")\n", + " selection = widgets.Dropdown(\n", + " options=voice_model_names,\n", + " description=f'{lan.translate(lang, \"Select voice package\")}:',\n", + " )\n", + " load_btn = widgets.Button(\n", + " description=lan.translate(lang, \"Load it!\")\n", + " )\n", + " config = None\n", + " def load_model(button):\n", + " nonlocal config\n", + " global onnx_model\n", + " nonlocal model\n", + " nonlocal models_path\n", + " selected_voice = selection.value\n", + " onnx_model = f\"{models_path}/{selected_voice}\"\n", + " model, config = load_onnx(onnx_model, sess_options, providers)\n", + " if enhanced_accessibility:\n", + " playaudio(\"loaded\")\n", + " if config[\"num_speakers\"] > 1:\n", + " speaker_selection.options = config[\"speaker_id_map\"].values()\n", + " speaker_selection.layout.visibility = 'visible'\n", + " if enhanced_accessibility:\n", + " playaudio(\"multispeaker\")\n", + " else:\n", + " speaker_selection.layout.visibility = 'hidden'\n", + "\n", + " load_btn.on_click(load_model)\n", + " display(selection, load_btn)\n", + " display(speaker_selection)\n", + " speed_slider = widgets.FloatSlider(\n", + " value=1,\n", + " min=0.25,\n", + " max=4,\n", + " step=0.1,\n", + " description=lan.translate(lang, \"Rate scale\"),\n", + " orientation='horizontal',\n", + " )\n", + " noise_scale_slider = widgets.FloatSlider(\n", + " value=0.667,\n", + " min=0.25,\n", + " max=4,\n", + " step=0.1,\n", + " description=lan.translate(lang, \"Phoneme noise scale\"),\n", + " orientation='horizontal',\n", + " )\n", + " noise_scale_w_slider = widgets.FloatSlider(\n", + " value=1,\n", + " min=0.25,\n", + " max=4,\n", + " step=0.1,\n", + " description=lan.translate(lang, \"Phoneme stressing scale\"),\n", + " orientation='horizontal',\n", + " )\n", + " play = widgets.Checkbox(\n", + " value=True,\n", + " description=lan.translate(lang, \"Auto-play\"),\n", + " disabled=False\n", + " )\n", + " text_input = widgets.Text(\n", + " value='',\n", + " placeholder=f'{lan.translate(lang, \"Enter your text here\")}:',\n", + " description=lan.translate(lang, \"Text to synthesize\"),\n", + " layout=widgets.Layout(width='80%')\n", + " )\n", + " synthesize_button = widgets.Button(\n", + " description=lan.translate(lang, \"Synthesize\"),\n", + " button_style='success', # 'success', 'info', 'warning', 'danger' or ''\n", + " tooltip=lan.translate(lang, \"Click here to synthesize the text.\"),\n", + " icon='check'\n", + " )\n", + " close_button = widgets.Button(\n", + " description=lan.translate(lang, \"Exit\"),\n", + " tooltip=lan.translate(lang, \"Closes this GUI.\"),\n", + " icon='check'\n", + " )\n", + "\n", + " def on_synthesize_button_clicked(b):\n", + " if model is None:\n", + " if enhanced_accessibility:\n", + " playaudio(\"nomodel\")\n", + " raise Exception(lan.translate(lang, \"You have not loaded any model from the list!\"))\n", + " text = text_input.value\n", + " if config[\"num_speakers\"] > 1:\n", + " sid = speaker_selection.value\n", + " else:\n", + " sid = None\n", + " rate = speed_slider.value\n", + " noise_scale = noise_scale_slider.value\n", + " noise_scale_w = noise_scale_w_slider.value\n", + " auto_play = play.value\n", + " inferencing(model, config, sid, text, rate, noise_scale, noise_scale_w, auto_play)\n", + "\n", + " def on_close_button_clicked(b):\n", + " clear_output()\n", + " if enhanced_accessibility:\n", + " playaudio(\"exit\")\n", + "\n", + " synthesize_button.on_click(on_synthesize_button_clicked)\n", + " close_button.on_click(on_close_button_clicked)\n", + " display(text_input)\n", + " display(speed_slider)\n", + " display(noise_scale_slider)\n", + " display(noise_scale_w_slider)\n", + " display(play)\n", + " display(synthesize_button)\n", + " display(close_button)\n", + "\n", + "def load_onnx(model, sess_options, providers = [\"CPUExecutionProvider\"]):\n", + " _LOGGER.debug(\"Loading model from %s\", model)\n", + " config = load_config(model)\n", + " model = onnxruntime.InferenceSession(\n", + " str(model),\n", + " sess_options=sess_options,\n", + " providers= providers\n", + " )\n", + " _LOGGER.info(\"Loaded model from %s\", model)\n", + " return model, config\n", + "\n", + "def load_config(model):\n", + " with open(f\"{model}.json\", \"r\") as file:\n", + " config = json.load(file)\n", + " return config\n", + "PAD = \"_\" # padding (0)\n", + "BOS = \"^\" # beginning of sentence\n", + "EOS = \"$\" # end of sentence\n", + "\n", + "class PhonemeType(str, Enum):\n", + " ESPEAK = \"espeak\"\n", + " TEXT = \"text\"\n", + "\n", + "def phonemize(config, text: str) -> List[List[str]]:\n", + " \"\"\"Text to phonemes grouped by sentence.\"\"\"\n", + " if config[\"phoneme_type\"] == PhonemeType.ESPEAK:\n", + " if config[\"espeak\"][\"voice\"] == \"ar\":\n", + " # Arabic diacritization\n", + " # https://github.com/mush42/libtashkeel/\n", + " text = tashkeel_run(text)\n", + " return phonemize_espeak(text, config[\"espeak\"][\"voice\"])\n", + " if config[\"phoneme_type\"] == PhonemeType.TEXT:\n", + " return phonemize_codepoints(text)\n", + " raise ValueError(f'Unexpected phoneme type: {config[\"phoneme_type\"]}')\n", + "\n", + "def phonemes_to_ids(config, phonemes: List[str]) -> List[int]:\n", + " \"\"\"Phonemes to ids.\"\"\"\n", + " id_map = config[\"phoneme_id_map\"]\n", + " ids: List[int] = list(id_map[BOS])\n", + " for phoneme in phonemes:\n", + " if phoneme not in id_map:\n", + " print(\"Missing phoneme from id map: %s\", phoneme)\n", + " continue\n", + " ids.extend(id_map[phoneme])\n", + " ids.extend(id_map[PAD])\n", + " ids.extend(id_map[EOS])\n", + " return ids\n", + "\n", + "def inferencing(model, config, sid, line, length_scale = 1, noise_scale = 0.667, noise_scale_w = 0.8, auto_play=True):\n", + " audios = []\n", + " if config[\"phoneme_type\"] == \"PhonemeType.ESPEAK\":\n", + " config[\"phoneme_type\"] = \"espeak\"\n", + " text = phonemize(config, line)\n", + " for phonemes in text:\n", + " phoneme_ids = phonemes_to_ids(config, phonemes)\n", + " num_speakers = config[\"num_speakers\"]\n", + " if num_speakers == 1:\n", + " speaker_id = None # for now\n", + " else:\n", + " speaker_id = sid\n", + " text = np.expand_dims(np.array(phoneme_ids, dtype=np.int64), 0)\n", + " text_lengths = np.array([text.shape[1]], dtype=np.int64)\n", + " scales = np.array(\n", + " [noise_scale, length_scale, noise_scale_w],\n", + " dtype=np.float32,\n", + " )\n", + " sid = None\n", + " if speaker_id is not None:\n", + " sid = np.array([speaker_id], dtype=np.int64)\n", + " audio = model.run(\n", + " None,\n", + " {\n", + " \"input\": text,\n", + " \"input_lengths\": text_lengths,\n", + " \"scales\": scales,\n", + " \"sid\": sid,\n", + " },\n", + " )[0].squeeze((0, 1))\n", + " audio = audio_float_to_int16(audio.squeeze())\n", + " audios.append(audio)\n", + " merged_audio = np.concatenate(audios)\n", + " sample_rate = config[\"audio\"][\"sample_rate\"]\n", + " display(Markdown(f\"{line}\"))\n", + " display(Audio(merged_audio, rate=sample_rate, autoplay=auto_play))\n", + "\n", + "def denoise(\n", + " audio: np.ndarray, bias_spec: np.ndarray, denoiser_strength: float\n", + ") -> np.ndarray:\n", + " audio_spec, audio_angles = transform(audio)\n", + "\n", + " a = bias_spec.shape[-1]\n", + " b = audio_spec.shape[-1]\n", + " repeats = max(1, math.ceil(b / a))\n", + " bias_spec_repeat = np.repeat(bias_spec, repeats, axis=-1)[..., :b]\n", + "\n", + " audio_spec_denoised = audio_spec - (bias_spec_repeat * denoiser_strength)\n", + " audio_spec_denoised = np.clip(audio_spec_denoised, a_min=0.0, a_max=None)\n", + " audio_denoised = inverse(audio_spec_denoised, audio_angles)\n", + "\n", + " return audio_denoised\n", + "\n", + "\n", + "def stft(x, fft_size, hopsamp):\n", + " \"\"\"Compute and return the STFT of the supplied time domain signal x.\n", + " Args:\n", + " x (1-dim Numpy array): A time domain signal.\n", + " fft_size (int): FFT size. Should be a power of 2, otherwise DFT will be used.\n", + " hopsamp (int):\n", + " Returns:\n", + " The STFT. The rows are the time slices and columns are the frequency bins.\n", + " \"\"\"\n", + " window = np.hanning(fft_size)\n", + " fft_size = int(fft_size)\n", + " hopsamp = int(hopsamp)\n", + " return np.array(\n", + " [\n", + " np.fft.rfft(window * x[i : i + fft_size])\n", + " for i in range(0, len(x) - fft_size, hopsamp)\n", + " ]\n", + " )\n", + "\n", + "\n", + "def istft(X, fft_size, hopsamp):\n", + " \"\"\"Invert a STFT into a time domain signal.\n", + " Args:\n", + " X (2-dim Numpy array): Input spectrogram. The rows are the time slices and columns are the frequency bins.\n", + " fft_size (int):\n", + " hopsamp (int): The hop size, in samples.\n", + " Returns:\n", + " The inverse STFT.\n", + " \"\"\"\n", + " fft_size = int(fft_size)\n", + " hopsamp = int(hopsamp)\n", + " window = np.hanning(fft_size)\n", + " time_slices = X.shape[0]\n", + " len_samples = int(time_slices * hopsamp + fft_size)\n", + " x = np.zeros(len_samples)\n", + " for n, i in enumerate(range(0, len(x) - fft_size, hopsamp)):\n", + " x[i : i + fft_size] += window * np.real(np.fft.irfft(X[n]))\n", + " return x\n", + "\n", + "\n", + "def inverse(magnitude, phase):\n", + " recombine_magnitude_phase = np.concatenate(\n", + " [magnitude * np.cos(phase), magnitude * np.sin(phase)], axis=1\n", + " )\n", + "\n", + " x_org = recombine_magnitude_phase\n", + " n_b, n_f, n_t = x_org.shape # pylint: disable=unpacking-non-sequence\n", + " x = np.empty([n_b, n_f // 2, n_t], dtype=np.complex64)\n", + " x.real = x_org[:, : n_f // 2]\n", + " x.imag = x_org[:, n_f // 2 :]\n", + " inverse_transform = []\n", + " for y in x:\n", + " y_ = istft(y.T, fft_size=1024, hopsamp=256)\n", + " inverse_transform.append(y_[None, :])\n", + "\n", + " inverse_transform = np.concatenate(inverse_transform, 0)\n", + "\n", + " return inverse_transform\n", + "\n", + "\n", + "def transform(input_data):\n", + " x = input_data\n", + " real_part = []\n", + " imag_part = []\n", + " for y in x:\n", + " y_ = stft(y, fft_size=1024, hopsamp=256).T\n", + " real_part.append(y_.real[None, :, :]) # pylint: disable=unsubscriptable-object\n", + " imag_part.append(y_.imag[None, :, :]) # pylint: disable=unsubscriptable-object\n", + " real_part = np.concatenate(real_part, 0)\n", + " imag_part = np.concatenate(imag_part, 0)\n", + "\n", + " magnitude = np.sqrt(real_part**2 + imag_part**2)\n", + " phase = np.arctan2(imag_part.data, real_part.data)\n", + "\n", + " return magnitude, phase\n", + "\n", + "main()" + ], + "metadata": { + "id": "hcKk8M2ug8kM", + "cellView": "form" + }, + "execution_count": null, + "outputs": [] + } + ] +} \ No newline at end of file diff --git a/piper/piper/notebooks/piper_inference_(ckpt).ipynb b/piper/piper/notebooks/piper_inference_(ckpt).ipynb new file mode 100644 index 0000000..24bbad7 --- /dev/null +++ b/piper/piper/notebooks/piper_inference_(ckpt).ipynb @@ -0,0 +1,565 @@ +{ + "nbformat": 4, + "nbformat_minor": 0, + "metadata": { + "colab": { + "provenance": [], + "gpuType": "T4", + "authorship_tag": "ABX9TyNju0yzRK8wgAS+WgyeTEAl", + "include_colab_link": true + }, + "kernelspec": { + "name": "python3", + "display_name": "Python 3" + }, + "language_info": { + "name": "python" + } + }, + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "id": "view-in-github", + "colab_type": "text" + }, + "source": [ + "\"Open" + ] + }, + { + "cell_type": "markdown", + "source": [ + "# **[Piper](https://github.com/rhasspy/piper) inferencing notebook.**\n", + "## ![Piper logo](https://contribute.rhasspy.org/img/logo.png)\n", + "\n", + "---\n", + "\n", + "- Notebook made by [rmcpantoja](http://github.com/rmcpantoja)\n", + "- Collaborator: [Xx_Nessu_xX](https://fakeyou.com/profile/Xx_Nessu_xX)" + ], + "metadata": { + "id": "eK3nmYDB6C1a" + } + }, + { + "cell_type": "markdown", + "source": [ + "# First steps" + ], + "metadata": { + "id": "9wIvcSmOby84" + } + }, + { + "cell_type": "code", + "source": [ + "#@title Install software and settings\n", + "#@markdown The speech synthesizer and other important dependencies will be installed in this cell. But first, some settings:\n", + "\n", + "#@markdown #### Enhable Enhanced Accessibility?\n", + "#@markdown This Enhanced Accessibility functionality is designed for the visually impaired, in which most of the interface can be used by voice guides.\n", + "enhanced_accessibility = True #@param {type:\"boolean\"}\n", + "#@markdown ---\n", + "\n", + "#@markdown #### Please select your language:\n", + "lang_select = \"English\" #@param [\"English\", \"Spanish\"]\n", + "if lang_select == \"English\":\n", + " lang = \"en\"\n", + "elif lang_select == \"Spanish\":\n", + " lang = \"es\"\n", + "else:\n", + " raise Exception(\"Language not supported.\")\n", + "#@markdown ---\n", + "#@markdown #### Do you want to use the GPU for inference?\n", + "\n", + "#@markdown The GPU can be enabled in the edit/notebook settings menu, and this step must be done before connecting to a runtime. The GPU can lead to a higher response speed in inference, but you can use the CPU, for example, if your colab runtime to use GPU's has been ended.\n", + "use_gpu = False #@param {type:\"boolean\"}\n", + "\n", + "if enhanced_accessibility:\n", + " from google.colab import output\n", + " guideurl = f\"https://github.com/rmcpantoja/piper/blob/master/notebooks/wav/{lang}\"\n", + " def playaudio(filename, extension = \"wav\"):\n", + " return output.eval_js(f'new Audio(\"{guideurl}/{filename}.{extension}?raw=true\").play()')\n", + "\n", + "%cd /content\n", + "print(\"Installing...\")\n", + "if enhanced_accessibility:\n", + " playaudio(\"installing\")\n", + "!git clone -q https://github.com/rmcpantoja/piper\n", + "%cd /content/piper/src/python\n", + "#!pip install -q -r requirements.txt\n", + "!pip install -q cython>=0.29.0 piper-phonemize==1.1.0 librosa>=0.9.2 numpy>=1.19.0 onnxruntime>=1.11.0 pytorch-lightning==1.7.0 torch==1.11.0\n", + "!pip install -q torchtext==0.12.0 torchvision==0.12.0\n", + "#!pip install -q torchtext==0.14.1 torchvision==0.14.1\n", + "# fixing recent compativility isswes:\n", + "!pip install -q torchaudio==0.11.0 torchmetrics==0.11.4\n", + "!bash build_monotonic_align.sh\n", + "import os\n", + "if not os.path.exists(\"/content/piper/src/python/lng\"):\n", + " !cp -r \"/content/piper/notebooks/lng\" /content/piper/src/python/lng\n", + "import sys\n", + "sys.path.append('/content/piper/notebooks')\n", + "from translator import *\n", + "lan = Translator()\n", + "print(\"Checking GPU...\")\n", + "gpu_info = !nvidia-smi\n", + "if use_gpu and any('not found' in info for info in gpu_info[0].split(':')):\n", + " if enhanced_accessibility:\n", + " playaudio(\"nogpu\")\n", + " raise Exception(lan.translate(lang, \"The Use GPU checkbox is checked, but you don't have a GPU runtime.\"))\n", + "elif not use_gpu and not any('not found' in info for info in gpu_info[0].split(':')):\n", + " if enhanced_accessibility:\n", + " playaudio(\"gpuavailable\")\n", + " raise Exception(lan.translate(lang, \"The Use GPU checkbox is unchecked, however you are using a GPU runtime environment. We recommend you check the checkbox to use GPU to take advantage of it.\"))\n", + "\n", + "if enhanced_accessibility:\n", + " playaudio(\"installed\")\n", + "print(\"Success!\")" + ], + "metadata": { + "cellView": "form", + "id": "v8b_PEtXb8co" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "#@title Download model and config\n", + "%cd /content/piper/src/python\n", + "import os\n", + "#@markdown #### Model ID or link (ckpt format):\n", + "model_url_or_id = \"\" #@param {type:\"string\"}\n", + "if model_url_or_id == \"\" or model_url_or_id == \"http\" or model_url_or_id == \"1\":\n", + " if enhanced_accessibility:\n", + " playaudio(\"noid\")\n", + " raise Exception(lan.translate(lang, \"Invalid link or ID!\"))\n", + "print(\"Downloading model...\")\n", + "if enhanced_accessibility:\n", + " playaudio(\"downloading\")\n", + "if model_url_or_id.startswith(\"1\"):\n", + " !gdown -q \"{model_url_or_id}\"\n", + "elif model_url_or_id.startswith(\"https://drive.google.com/file/d/\"):\n", + " !gdown -q \"{model_url_or_id}\" --fuzzy\n", + "else:\n", + " !wget -q \"{model_url_or_id}\"\n", + "#@markdown ---\n", + "#@markdown #### ID or URL of the config.json file:\n", + "config_url_or_id = \"\" #@param {type:\"string\"}\n", + "if config_url_or_id.startswith(\"1\"):\n", + " !gdown -q \"{config_url_or_id}\"\n", + "elif config_url_or_id.startswith(\"https://drive.google.com/file/d/\"):\n", + " !gdown -q \"{config_url_or_id}\" --fuzzy\n", + "else:\n", + " !wget -q \"{config_url_or_id}\"\n", + "#@markdown ---\n", + "if enhanced_accessibility:\n", + " playaudio(\"downloaded\")\n", + "print(\"Voice package downloaded!\")" + ], + "metadata": { + "cellView": "form", + "id": "ykIYmVXccg6s" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "# inferencing" + ], + "metadata": { + "id": "MRvkYJF6g5FT" + } + }, + { + "cell_type": "code", + "source": [ + "#@title run inference\n", + "#@markdown #### before you enjoy... Some notes!\n", + "#@markdown * You can run the cell to download voice packs and download voices you want at any time, even if you run this cell!\n", + "#@markdown * When you download a new voice, run this cell again and you will now be able to toggle between all the ones you download. Incredible, right?\n", + "\n", + "#@markdown Enjoy!!\n", + "\n", + "%cd /content/piper/src/python\n", + "# original: infer.py\n", + "import json\n", + "import logging\n", + "import sys\n", + "from pathlib import Path\n", + "from enum import Enum\n", + "from typing import Iterable, List, Optional, Union\n", + "import torch\n", + "from piper_train.vits.lightning import VitsModel\n", + "from piper_train.vits.utils import audio_float_to_int16\n", + "from piper_train.vits.wavfile import write as write_wav\n", + "import numpy as np\n", + "import glob\n", + "import ipywidgets as widgets\n", + "from IPython.display import display, Audio, Markdown, clear_output\n", + "from piper_phonemize import phonemize_codepoints, phonemize_espeak, tashkeel_run\n", + "\n", + "_LOGGER = logging.getLogger(\"piper_train.infer_onnx\")\n", + "\n", + "def detect_ckpt_models(path):\n", + " ckpt_models = glob.glob(path + '/*.ckpt')\n", + " if len(ckpt_models) > 1:\n", + " return ckpt_models\n", + " elif len(ckpt_models) == 1:\n", + " return ckpt_models[0]\n", + " else:\n", + " return None\n", + "\n", + "\n", + "def main():\n", + " \"\"\"Main entry point\"\"\"\n", + " models_path = \"/content/piper/src/python\"\n", + " logging.basicConfig(level=logging.DEBUG)\n", + " model = None\n", + " ckpt_models = detect_ckpt_models(models_path)\n", + " speaker_selection = widgets.Dropdown(\n", + " options=[],\n", + " description=f'{lan.translate(lang, \"Select speaker\")}:',\n", + " layout={'visibility': 'hidden'}\n", + " )\n", + " if ckpt_models is None:\n", + " if enhanced_accessibility:\n", + " playaudio(\"novoices\")\n", + " raise Exception(lan.translate(lang, \"No downloaded voice packages!\"))\n", + " elif isinstance(ckpt_models, str):\n", + " ckpt_model = ckpt_models\n", + " model, config = load_ckpt(ckpt_model)\n", + " if config[\"num_speakers\"] > 1:\n", + " speaker_selection.options = config[\"speaker_id_map\"].values()\n", + " speaker_selection.layout.visibility = 'visible'\n", + " preview_sid = 0\n", + " if enhanced_accessibility:\n", + " playaudio(\"multispeaker\")\n", + " else:\n", + " speaker_selection.layout.visibility = 'hidden'\n", + " preview_sid = None\n", + "\n", + " if enhanced_accessibility:\n", + " inferencing(\n", + " model,\n", + " config,\n", + " preview_sid,\n", + " lan.translate(\n", + " config[\"espeak\"][\"voice\"][:2],\n", + " \"Interface openned. Write your texts, configure the different synthesis options or download all the voices you want. Enjoy!\"\n", + " )\n", + " )\n", + " else:\n", + " voice_model_names = []\n", + " for current in ckpt_models:\n", + " voice_struct = current.split(\"/\")[5]\n", + " voice_model_names.append(voice_struct)\n", + " if enhanced_accessibility:\n", + " playaudio(\"selectmodel\")\n", + " selection = widgets.Dropdown(\n", + " options=voice_model_names,\n", + " description=f'{lan.translate(lang, \"Select voice package\")}:',\n", + " )\n", + " load_btn = widgets.Button(\n", + " description=lan.translate(lang, \"Load it!\")\n", + " )\n", + " config = None\n", + " def load_model(button):\n", + " nonlocal config\n", + " global ckpt_model\n", + " nonlocal model\n", + " nonlocal models_path\n", + " selected_voice = selection.value\n", + " ckpt_model = f\"{models_path}/{selected_voice}\"\n", + " model, config = load_ckpt(onnx_model, sess_options, providers)\n", + " if enhanced_accessibility:\n", + " playaudio(\"loaded\")\n", + " if config[\"num_speakers\"] > 1:\n", + " speaker_selection.options = config[\"speaker_id_map\"].values()\n", + " speaker_selection.layout.visibility = 'visible'\n", + " if enhanced_accessibility:\n", + " playaudio(\"multispeaker\")\n", + " else:\n", + " speaker_selection.layout.visibility = 'hidden'\n", + "\n", + " load_btn.on_click(load_model)\n", + " display(selection, load_btn)\n", + " display(speaker_selection)\n", + " speed_slider = widgets.FloatSlider(\n", + " value=1,\n", + " min=0.25,\n", + " max=4,\n", + " step=0.1,\n", + " description=lan.translate(lang, \"Rate scale\"),\n", + " orientation='horizontal',\n", + " )\n", + " noise_scale_slider = widgets.FloatSlider(\n", + " value=0.667,\n", + " min=0.25,\n", + " max=4,\n", + " step=0.1,\n", + " description=lan.translate(lang, \"Phoneme noise scale\"),\n", + " orientation='horizontal',\n", + " )\n", + " noise_scale_w_slider = widgets.FloatSlider(\n", + " value=1,\n", + " min=0.25,\n", + " max=4,\n", + " step=0.1,\n", + " description=lan.translate(lang, \"Phoneme stressing scale\"),\n", + " orientation='horizontal',\n", + " )\n", + " play = widgets.Checkbox(\n", + " value=True,\n", + " description=lan.translate(lang, \"Auto-play\"),\n", + " disabled=False\n", + " )\n", + " text_input = widgets.Text(\n", + " value='',\n", + " placeholder=f'{lan.translate(lang, \"Enter your text here\")}:',\n", + " description=lan.translate(lang, \"Text to synthesize\"),\n", + " layout=widgets.Layout(width='80%')\n", + " )\n", + " synthesize_button = widgets.Button(\n", + " description=lan.translate(lang, \"Synthesize\"),\n", + " button_style='success', # 'success', 'info', 'warning', 'danger' or ''\n", + " tooltip=lan.translate(lang, \"Click here to synthesize the text.\"),\n", + " icon='check'\n", + " )\n", + " close_button = widgets.Button(\n", + " description=lan.translate(lang, \"Exit\"),\n", + " tooltip=lan.translate(lang, \"Closes this GUI.\"),\n", + " icon='check'\n", + " )\n", + "\n", + " def on_synthesize_button_clicked(b):\n", + " if model is None:\n", + " if enhanced_accessibility:\n", + " playaudio(\"nomodel\")\n", + " raise Exception(lan.translate(lang, \"You have not loaded any model from the list!\"))\n", + " text = text_input.value\n", + " if config[\"num_speakers\"] > 1:\n", + " sid = speaker_selection.value\n", + " else:\n", + " sid = None\n", + " rate = speed_slider.value\n", + " noise_scale = noise_scale_slider.value\n", + " noise_scale_w = noise_scale_w_slider.value\n", + " auto_play = play.value\n", + " inferencing(model, config, sid, text, rate, noise_scale, noise_scale_w, auto_play)\n", + "\n", + " def on_close_button_clicked(b):\n", + " clear_output()\n", + " if enhanced_accessibility:\n", + " playaudio(\"exit\")\n", + "\n", + " synthesize_button.on_click(on_synthesize_button_clicked)\n", + " close_button.on_click(on_close_button_clicked)\n", + " display(text_input)\n", + " display(speed_slider)\n", + " display(noise_scale_slider)\n", + " display(noise_scale_w_slider)\n", + " display(play)\n", + " display(synthesize_button)\n", + " display(close_button)\n", + "\n", + "def load_ckpt(model):\n", + " _LOGGER.debug(\"Loading model from %s\", model)\n", + " config = load_config(model)\n", + " model = VitsModel.load_from_checkpoint(str(model), dataset=None)\n", + " # Inference only\n", + " model.eval()\n", + " with torch.no_grad():\n", + " model.model_g.dec.remove_weight_norm()\n", + "\n", + " _LOGGER.info(\"Loaded model from %s\", model)\n", + " return model, config\n", + "\n", + "def load_config(model):\n", + " with open(\"config.json\", \"r\") as file:\n", + " config = json.load(file)\n", + " return config\n", + "\n", + "PAD = \"_\" # padding (0)\n", + "BOS = \"^\" # beginning of sentence\n", + "EOS = \"$\" # end of sentence\n", + "\n", + "class PhonemeType(str, Enum):\n", + " ESPEAK = \"espeak\"\n", + " TEXT = \"text\"\n", + "\n", + "def phonemize(config, text: str) -> List[List[str]]:\n", + " \"\"\"Text to phonemes grouped by sentence.\"\"\"\n", + " if config[\"phoneme_type\"] == PhonemeType.ESPEAK:\n", + " if config[\"espeak\"][\"voice\"] == \"ar\":\n", + " # Arabic diacritization\n", + " # https://github.com/mush42/libtashkeel/\n", + " text = tashkeel_run(text)\n", + " return phonemize_espeak(text, config[\"espeak\"][\"voice\"])\n", + " if config[\"phoneme_type\"] == PhonemeType.TEXT:\n", + " return phonemize_codepoints(text)\n", + " raise ValueError(f\"Unexpected phoneme type: {self.config.phoneme_type}\")\n", + "\n", + "def phonemes_to_ids(config, phonemes: List[str]) -> List[int]:\n", + " \"\"\"Phonemes to ids.\"\"\"\n", + " id_map = config[\"phoneme_id_map\"]\n", + " ids: List[int] = list(id_map[BOS])\n", + " for phoneme in phonemes:\n", + " if phoneme not in id_map:\n", + " print(\"Missing phoneme from id map: %s\", phoneme)\n", + " continue\n", + " ids.extend(id_map[phoneme])\n", + " ids.extend(id_map[PAD])\n", + " ids.extend(id_map[EOS])\n", + " return ids\n", + "\n", + "def inferencing(model, config, sid, line, length_scale = 1, noise_scale = 0.667, noise_scale_w = 0.8, auto_play=True):\n", + " audios = []\n", + " text = phonemize(config, line)\n", + " for phonemes in text:\n", + " phoneme_ids = phonemes_to_ids(config, phonemes)\n", + " num_speakers = config[\"num_speakers\"]\n", + " if num_speakers == 1:\n", + " speaker_id = None # for now\n", + " else:\n", + " speaker_id = sid\n", + " text = torch.LongTensor(phoneme_ids).unsqueeze(0)\n", + " text_lengths = torch.LongTensor([len(phoneme_ids)])\n", + " scales = [\n", + " noise_scale,\n", + " length_scale,\n", + " noise_scale_w\n", + " ]\n", + " sid = torch.LongTensor([speaker_id]) if speaker_id is not None else None\n", + " audio = model(\n", + " text,\n", + " text_lengths,\n", + " scales,\n", + " sid=sid\n", + " ).detach().numpy()\n", + " audio = audio_float_to_int16(audio.squeeze())\n", + " audios.append(audio)\n", + " merged_audio = np.concatenate(audios)\n", + " sample_rate = config[\"audio\"][\"sample_rate\"]\n", + " display(Markdown(f\"{line}\"))\n", + " display(Audio(merged_audio, rate=sample_rate, autoplay=auto_play))\n", + "\n", + "def denoise(\n", + " audio: np.ndarray, bias_spec: np.ndarray, denoiser_strength: float\n", + ") -> np.ndarray:\n", + " audio_spec, audio_angles = transform(audio)\n", + "\n", + " a = bias_spec.shape[-1]\n", + " b = audio_spec.shape[-1]\n", + " repeats = max(1, math.ceil(b / a))\n", + " bias_spec_repeat = np.repeat(bias_spec, repeats, axis=-1)[..., :b]\n", + "\n", + " audio_spec_denoised = audio_spec - (bias_spec_repeat * denoiser_strength)\n", + " audio_spec_denoised = np.clip(audio_spec_denoised, a_min=0.0, a_max=None)\n", + " audio_denoised = inverse(audio_spec_denoised, audio_angles)\n", + "\n", + " return audio_denoised\n", + "\n", + "\n", + "def stft(x, fft_size, hopsamp):\n", + " \"\"\"Compute and return the STFT of the supplied time domain signal x.\n", + " Args:\n", + " x (1-dim Numpy array): A time domain signal.\n", + " fft_size (int): FFT size. Should be a power of 2, otherwise DFT will be used.\n", + " hopsamp (int):\n", + " Returns:\n", + " The STFT. The rows are the time slices and columns are the frequency bins.\n", + " \"\"\"\n", + " window = np.hanning(fft_size)\n", + " fft_size = int(fft_size)\n", + " hopsamp = int(hopsamp)\n", + " return np.array(\n", + " [\n", + " np.fft.rfft(window * x[i : i + fft_size])\n", + " for i in range(0, len(x) - fft_size, hopsamp)\n", + " ]\n", + " )\n", + "\n", + "\n", + "def istft(X, fft_size, hopsamp):\n", + " \"\"\"Invert a STFT into a time domain signal.\n", + " Args:\n", + " X (2-dim Numpy array): Input spectrogram. The rows are the time slices and columns are the frequency bins.\n", + " fft_size (int):\n", + " hopsamp (int): The hop size, in samples.\n", + " Returns:\n", + " The inverse STFT.\n", + " \"\"\"\n", + " fft_size = int(fft_size)\n", + " hopsamp = int(hopsamp)\n", + " window = np.hanning(fft_size)\n", + " time_slices = X.shape[0]\n", + " len_samples = int(time_slices * hopsamp + fft_size)\n", + " x = np.zeros(len_samples)\n", + " for n, i in enumerate(range(0, len(x) - fft_size, hopsamp)):\n", + " x[i : i + fft_size] += window * np.real(np.fft.irfft(X[n]))\n", + " return x\n", + "\n", + "\n", + "def inverse(magnitude, phase):\n", + " recombine_magnitude_phase = np.concatenate(\n", + " [magnitude * np.cos(phase), magnitude * np.sin(phase)], axis=1\n", + " )\n", + "\n", + " x_org = recombine_magnitude_phase\n", + " n_b, n_f, n_t = x_org.shape # pylint: disable=unpacking-non-sequence\n", + " x = np.empty([n_b, n_f // 2, n_t], dtype=np.complex64)\n", + " x.real = x_org[:, : n_f // 2]\n", + " x.imag = x_org[:, n_f // 2 :]\n", + " inverse_transform = []\n", + " for y in x:\n", + " y_ = istft(y.T, fft_size=1024, hopsamp=256)\n", + " inverse_transform.append(y_[None, :])\n", + "\n", + " inverse_transform = np.concatenate(inverse_transform, 0)\n", + "\n", + " return inverse_transform\n", + "\n", + "\n", + "def transform(input_data):\n", + " x = input_data\n", + " real_part = []\n", + " imag_part = []\n", + " for y in x:\n", + " y_ = stft(y, fft_size=1024, hopsamp=256).T\n", + " real_part.append(y_.real[None, :, :]) # pylint: disable=unsubscriptable-object\n", + " imag_part.append(y_.imag[None, :, :]) # pylint: disable=unsubscriptable-object\n", + " real_part = np.concatenate(real_part, 0)\n", + " imag_part = np.concatenate(imag_part, 0)\n", + "\n", + " magnitude = np.sqrt(real_part**2 + imag_part**2)\n", + " phase = np.arctan2(imag_part.data, real_part.data)\n", + "\n", + " return magnitude, phase\n", + "\n", + "main()" + ], + "metadata": { + "id": "hcKk8M2ug8kM", + "cellView": "form" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "# I suggest you export this model to use it in piper!\n", + "\n", + "Well, have you tried it yet? What do you think about it? If both answers are acceptable, it's time to disconnect your session in this notebook and [export this model](https://colab.research.google.com/github/rmcpantoja/piper/blob/master/notebooks/piper_model_exporter.ipynb)!" + ], + "metadata": { + "id": "NPow8JT7R0WM" + } + } + ] +} \ No newline at end of file diff --git a/piper/piper/notebooks/piper_model_exporter.ipynb b/piper/piper/notebooks/piper_model_exporter.ipynb new file mode 100644 index 0000000..df894a0 --- /dev/null +++ b/piper/piper/notebooks/piper_model_exporter.ipynb @@ -0,0 +1,209 @@ +{ + "nbformat": 4, + "nbformat_minor": 0, + "metadata": { + "colab": { + "provenance": [], + "gpuType": "T4", + "authorship_tag": "ABX9TyPKhrhJQuxhFJG2C1A+aMsQ", + "include_colab_link": true + }, + "kernelspec": { + "name": "python3", + "display_name": "Python 3" + }, + "language_info": { + "name": "python" + } + }, + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "id": "view-in-github", + "colab_type": "text" + }, + "source": [ + "\"Open" + ] + }, + { + "cell_type": "markdown", + "source": [ + "# [Piper](https://github.com/rhasspy/piper) model exporter\n", + "## ![Piper logo](https://contribute.rhasspy.org/img/logo.png)\n", + "\n", + "Notebook created by [rmcpantoja](http://github.com/rmcpantoja)" + ], + "metadata": { + "id": "EOL-kjplZYEU" + } + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "cellView": "form", + "id": "FfMKr8v2RVOm" + }, + "outputs": [], + "source": [ + "#@title Install software\n", + "\n", + "print(\"Installing...\")\n", + "!git clone -q https://github.com/rhasspy/piper\n", + "%cd /content/piper/src/python\n", + "!pip install -q cython>=0.29.0 espeak-phonemizer>=1.1.0 librosa>=0.9.2 numpy>=1.19.0 pytorch-lightning~=1.7.0 torch~=1.11.0\n", + "!pip install -q onnx onnxruntime-gpu\n", + "!bash build_monotonic_align.sh\n", + "!apt-get install espeak-ng\n", + "!pip install -q torchtext==0.12.0\n", + "# fixing recent compativility isswes:\n", + "!pip install -q torchaudio==0.11.0 torchmetrics==0.11.4\n", + "print(\"Done!\")" + ] + }, + { + "cell_type": "code", + "source": [ + "#@title Voice package generation section\n", + "%cd /content/piper/src/python\n", + "import os\n", + "import ipywidgets as widgets\n", + "from IPython.display import display\n", + "import json\n", + "from google.colab import output\n", + "guideurl = \"https://github.com/rmcpantoja/piper/blob/master/notebooks/wav/en\"\n", + "#@markdown #### Download:\n", + "#@markdown **Drive ID or direct download link of the model in another cloud:**\n", + "model_id = \"\" #@param {type:\"string\"}\n", + "#@markdown **Drive ID or direct download link of the config.json file:**\n", + "config_id = \"\" #@param {type:\"string\"}\n", + "#@markdown ---\n", + "\n", + "#@markdown #### Creation process:\n", + "#@markdown **Choose the language code (iso639-1 format):**\n", + "\n", + "#@markdown You can see a list of language codes and names [here](https://www.loc.gov/standards/iso639-2/php/English_list.php)\n", + "\n", + "language = \"en-us\" #@param [\"ca\", \"da\", \"de\", \"en\", \"en-us\", \"es\", \"fi\", \"fr\", \"grc\", \"is\", \"it\", \"k\", \"nb\", \"ne\", \"nl\", \"pl\", \"pt-br\", \"ru\", \"sv\", \"uk\", \"vi-vn-x-central\", \"yue\"]\n", + "voice_name = \"Myvoice\" #@param {type:\"string\"}\n", + "voice_name = voice_name.lower()\n", + "quality = \"medium\" #@param [\"high\", \"low\", \"medium\", \"x-low\"]\n", + "def start_process():\n", + " if not os.path.exists(\"/content/project/model.ckpt\"):\n", + " raise Exception(\"Could not download model! make sure the file is shareable to everyone\")\n", + " output.eval_js(f'new Audio(\"{guideurl}/starting.wav?raw=true\").play()')\n", + " !python -m piper_train.export_onnx \"/content/project/model.ckpt\" \"{export_voice_path}/{export_voice_name}.onnx\"\n", + " print(\"compressing...\")\n", + " !tar -czvf \"{packages_path}/voice-{export_voice_name}.tar.gz\" -C \"{export_voice_path}\" .\n", + " output.eval_js(f'new Audio(\"{guideurl}/success.wav?raw=true\").play()')\n", + " print(\"Done!\")\n", + "\n", + "export_voice_name = f\"{language}-{voice_name}-{quality}\"\n", + "export_voice_path = \"/content/project/voice-\"+export_voice_name\n", + "packages_path = \"/content/project/packages\"\n", + "if not os.path.exists(export_voice_path):\n", + " os.makedirs(export_voice_path)\n", + "if not os.path.exists(packages_path):\n", + " os.makedirs(packages_path)\n", + "print(\"Downloading model and his config...\")\n", + "if model_id.startswith(\"1\"):\n", + " !gdown -q \"{model_id}\" -O /content/project/model.ckpt\n", + "elif model_id.startswith(\"https://drive.google.com/file/d/\"):\n", + " !gdown -q \"{model_id}\" -O \"/content/project/model.ckpt\" --fuzzy\n", + "else:\n", + " !wget \"{model_id}\" -O \"/content/project/model.ckpt\"\n", + "if config_id.startswith(\"1\"):\n", + " !gdown -q \"{config_id}\" -O \"{export_voice_path}/{export_voice_name}.onnx.json\"\n", + "elif config_id.startswith(\"https://drive.google.com/file/d/\"):\n", + " !gdown -q \"{config_id}\" -O \"{export_voice_path}/{export_voice_name}.onnx.json\" --fuzzy\n", + "else:\n", + " !wget \"{config_id}\" -O \"{export_voice_path}/{export_voice_name}.onnx.json\"\n", + "#@markdown **Do you want to write a model card?**\n", + "write_model_card = False #@param {type:\"boolean\"}\n", + "if write_model_card:\n", + " with open(f\"{export_voice_path}/{export_voice_name}.onnx.json\", \"r\") as file:\n", + " config = json.load(file)\n", + " sample_rate = config[\"audio\"][\"sample_rate\"]\n", + " num_speakers = config[\"num_speakers\"]\n", + " output.eval_js(f'new Audio(\"{guideurl}/waiting.wav?raw=true\").play()')\n", + " text_area = widgets.Textarea(\n", + " description = \"fill in this following template and press start to generate the voice package\",\n", + " value=f'# Model card for {voice_name} ({quality})\\n\\n* Language: {language} (normaliced)\\n* Speakers: {num_speakers}\\n* Quality: {quality}\\n* Samplerate: {sample_rate}Hz\\n\\n## Dataset\\n\\n* URL: \\n* License: \\n\\n## Training\\n\\nTrained from scratch.\\nOr finetuned from: ',\n", + " layout=widgets.Layout(width='500px', height='200px')\n", + " )\n", + " button = widgets.Button(description='Start')\n", + "\n", + " def create_model_card(button):\n", + " model_card_text = text_area.value.strip()\n", + " with open(f'{export_voice_path}/MODEL_CARD', 'w') as file:\n", + " file.write(model_card_text)\n", + " text_area.close()\n", + " button.close()\n", + " output.clear()\n", + " start_process()\n", + "\n", + " button.on_click(create_model_card)\n", + "\n", + " display(text_area, button)\n", + "else:\n", + " start_process()" + ], + "metadata": { + "cellView": "form", + "id": "PqcoBb26V5xA" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "#@title Download/export your generated voice package\n", + "\n", + "#@markdown #### How do you want to export your model?\n", + "export_mode = \"upload it to my Google Drive\" #@param [\"Download the voice package on my device (may take some time)\", \"upload it to my Google Drive\"]\n", + "print(\"Exporting package...\")\n", + "if export_mode == \"Download the voice package on my device (may take some time)\":\n", + " from google.colab import files\n", + " files.download(f\"{packages_path}/voice-{export_voice_name}.tar.gz\")\n", + " msg = \"Please wait a moment while the package is being downloaded.\"\n", + "else:\n", + " voicepacks_folder = \"/content/drive/MyDrive/piper voice packages\"\n", + " from google.colab import drive\n", + " drive.mount('/content/drive')\n", + " if not os.path.exists(voicepacks_folder):\n", + " os.makedirs(voicepacks_folder)\n", + " !cp \"{packages_path}/voice-{export_voice_name}.tar.gz\" \"{voicepacks_folder}\"\n", + " msg = f\"You can find the generated voice package at: {voicepacks_folder}.\"\n", + "print(f\"Done! {msg}\")" + ], + "metadata": { + "cellView": "form", + "id": "Hu3V9CJeWc4Y" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "# I want to test this model! I don't need anything else anymore?\n", + "\n", + "No, this is almost the end! Now you can share your generated package to your friends, upload to a cloud storage and/or test it on:\n", + "* [The inference notebook](https://colab.research.google.com/github/rmcpantoja/piper/blob/master/notebooks/piper_inference_(ONNX).ipynb)\n", + " * run the cells in order for it to work correctly, as well as all the notebooks. Also, the inference notebook will guide you through the process using the enhanced accessibility feature if you wish. It's easy to use. Test it!\n", + "* Or through the NVDA screen reader!\n", + " * Download and install the latest version of the [add-on](https://github.com/mush42/piper-nvda/releases).\n", + " * Once the plugin is installed, go to NVDA menu/preferences/settings... and look for the `Piper Voice Manager` category.\n", + " * Tab until you find the `Install from local file` button, press enter and select the generated package in your downloads.\n", + " * Once the package is selected and installed, apply the changes and restart NVDA to update the voice list.\n", + "* Enjoy your creation!" + ], + "metadata": { + "id": "IRiNBHkeoDbC" + } + } + ] +} \ No newline at end of file diff --git a/piper/piper/notebooks/piper_multilenguaje_cuaderno_de_entrenamiento.ipynb b/piper/piper/notebooks/piper_multilenguaje_cuaderno_de_entrenamiento.ipynb new file mode 100644 index 0000000..def80f7 --- /dev/null +++ b/piper/piper/notebooks/piper_multilenguaje_cuaderno_de_entrenamiento.ipynb @@ -0,0 +1,458 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "id": "view-in-github", + "colab_type": "text" + }, + "source": [ + "\"Open" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "eK3nmYDB6C1a" + }, + "source": [ + "# **Cuaderno de entrenamiento de [Piper.](https://github.com/rhasspy/piper)**\n", + "## ![Piper logo](https://contribute.rhasspy.org/img/logo.png)\n", + "\n", + "---\n", + "\n", + "- Cuaderno creado por [rmcpantoja](http://github.com/rmcpantoja)\n", + "- Colaborador y traductor: [Xx_Nessu_xX](https://fakeyou.com/profile/Xx_Nessu_xX)\n", + "- [Cuaderno original inglés.](https://colab.research.google.com/github/rmcpantoja/piper/blob/master/notebooks/piper_multilingual_training_notebook.ipynb#scrollTo=dOyx9Y6JYvRF)\n", + "\n", + "---\n", + "\n", + "# Notas:\n", + "\n", + "- **Las cosas en naranja significa que son importantes.**" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "AICh6p5OJybj" + }, + "source": [ + "# 🔧 ***Primeros pasos.*** 🔧" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "cellView": "form", + "id": "qyxSMuzjfQrz" + }, + "outputs": [], + "source": [ + "#@markdown ## **Google Colab Anti-Disconnect.** 🔌\n", + "#@markdown ---\n", + "#@markdown #### Evita la desconexión automática. Aún así, se desconectará después de **6 a 12 horas**.\n", + "\n", + "import IPython\n", + "js_code = '''\n", + "function ClickConnect(){\n", + "console.log(\"Working\");\n", + "document.querySelector(\"colab-toolbar-button#connect\").click()\n", + "}\n", + "setInterval(ClickConnect,60000)\n", + "'''\n", + "display(IPython.display.Javascript(js_code))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "cellView": "form", + "id": "ygxzp-xHTC7T" + }, + "outputs": [], + "source": [ + "#@markdown ## **Comprueba la GPU.** 👁️\n", + "#@markdown ---\n", + "#@markdown #### Una GPU de mayor capacidad puede aumentar la velocidad de entrenamiento. Por defecto, tendrás una **Tesla T4**.\n", + "!nvidia-smi" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "cellView": "form", + "id": "sUNjId07JfAK" + }, + "outputs": [], + "source": [ + "#@markdown # **Monta tu Google Drive.** 📂\n", + "from google.colab import drive\n", + "drive.mount('/content/drive', force_remount=True)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "cellView": "form", + "id": "_XwmTVlcUgCh" + }, + "outputs": [], + "source": [ + "#@markdown # **Instalar software.** 📦\n", + "\n", + "#@markdown ####En esta celda se instalará el sintetizador y sus dependencias necesarias para ejecutar el entrenamiento. (Esto puede llevar un rato.)\n", + "\n", + "#@markdown #### **¿Quieres usar el parche?**\n", + "#@markdown El parche ofrece la posibilidad de exportar archivos de audio a la carpeta de salida y guardar un único modelo durante el entrenamiento.\n", + "usepatch = True #@param {type:\"boolean\"}\n", + "#@markdown ---\n", + "# clone:\n", + "!git clone -q https://github.com/rmcpantoja/piper\n", + "%cd /content/piper/src/python\n", + "!wget -q \"https://raw.githubusercontent.com/coqui-ai/TTS/dev/TTS/bin/resample.py\"\n", + "!pip install -q -r requirements.txt\n", + "!pip install -q torchtext==0.12.0\n", + "!pip install -q torchvision==0.12.0\n", + "# fixing recent compativility isswes:\n", + "!pip install -q torchaudio==0.11.0 torchmetrics==0.11.4\n", + "!bash build_monotonic_align.sh\n", + "!apt-get install -q espeak-ng\n", + "# download patches:\n", + "print(\"Downloading patch...\")\n", + "!gdown -q \"1EWEb7amo1rgFGpBFfRD4BKX3pkjVK1I-\" -O \"/content/piper/src/python/patch.zip\"\n", + "!unzip -o -q \"patch.zip\"\n", + "%cd /content" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "A3bMzEE0V5Ma" + }, + "source": [ + "# 🤖 ***Entrenamiento.*** 🤖" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "cellView": "form", + "id": "SvEGjf0aV8eg" + }, + "outputs": [], + "source": [ + "#@markdown # **1. Extraer dataset.** 📥\n", + "#@markdown ####Importante: los audios deben estar en formato **wav, (16000 o 22050hz, 16-bits, mono), y, por comodidad, numerados. Ejemplo:**\n", + "\n", + "#@markdown * **1.wav**\n", + "#@markdown * **2.wav**\n", + "#@markdown * **3.wav**\n", + "#@markdown * **.....**\n", + "\n", + "#@markdown ---\n", + "\n", + "%cd /content\n", + "!mkdir /content/dataset\n", + "%cd /content/dataset\n", + "!mkdir /content/dataset/wavs\n", + "#@markdown ### Ruta del dataset para descomprimir:\n", + "zip_path = \"/content/drive/MyDrive/wavs.zip\" #@param {type:\"string\"}\n", + "!unzip \"{zip_path}\" -d /content/dataset/wavs\n", + "#@markdown ---" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "cellView": "form", + "id": "E0W0OCvXXvue" + }, + "outputs": [], + "source": [ + "#@markdown # **2. Cargar el archivo de transcripción.** 📝\n", + "#@markdown ---\n", + "#@markdown ####**Importante: la transcripción significa escribir lo que dice el personaje en cada uno de los audios, y debe tener la siguiente estructura:**\n", + "\n", + "#@markdown ##### Para un conjunto de datos de un solo hablante:\n", + "#@markdown * wavs/1.wav|Esto dice el personaje en el audio 1.\n", + "#@markdown * wavs/2.wav|Este, el texto que dice el personaje en el audio 2.\n", + "#@markdown * ...\n", + "\n", + "#@markdown ##### Para un conjunto de datos de varios hablantes:\n", + "\n", + "#@markdown * wavs/speaker1audio1.wav|speaker1|Esto es lo que dice el primer hablante.\n", + "#@markdown * wavs/speaker1audio2.wav|speaker1|Este es otro audio del primer hablante.\n", + "#@markdown * wavs/speaker2audio1.wav|speaker2|Esto es lo que dice el segundo hablante en el primer audio.\n", + "#@markdown * wavs/speaker2audio2.wav|speaker2|Este es otro audio del segundo hablante.\n", + "#@markdown * ...\n", + "\n", + "#@markdown #### Y así sucesivamente. Además, la transcripción debe estar en formato **.csv (UTF-8 sin BOM)**\n", + "#@markdown ---\n", + "%cd /content/dataset\n", + "from google.colab import files\n", + "!rm /content/dataset/metadata.csv\n", + "listfn, length = files.upload().popitem()\n", + "if listfn != \"metadata.csv\":\n", + " !mv \"$listfn\" metadata.csv\n", + "%cd .." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "cellView": "form", + "id": "dOyx9Y6JYvRF" + }, + "outputs": [], + "source": [ + "#@markdown # **3. Preprocesar el dataset.** 🔄\n", + "\n", + "import os\n", + "#@markdown ### En primer lugar, seleccione el idioma de su conjunto de datos.
(Está disponible para español los siguientes: Español y Español lationamericano.)\n", + "language = \"Español\" #@param [\"Català\", \"Dansk\", \"Deutsch\", \"Ελληνικά\", \"English (British)\", \"English (U.S.)\", \"Español\", \"Español (latinoamericano)\", \"Suomi\", \"Français\", \"ქართული\", \"hindy\", \"Icelandic\", \"Italiano\", \"қазақша\", \"नेपाली\", \"Nederlands\", \"Norsk\", \"Polski\", \"Português (Brasil)\", \"Русский\", \"Svenska\", \"украї́нська\", \"Tiếng Việt\", \"简体中文\"]\n", + "#@markdown ---\n", + "# language definition:\n", + "languages = {\n", + " \"Català\": \"ca\",\n", + " \"Dansk\": \"da\",\n", + " \"Deutsch\": \"de\",\n", + " \"Ελληνικά\": \"grc\",\n", + " \"English (British)\": \"en\",\n", + " \"English (U.S.)\": \"en-us\",\n", + " \"Español\": \"es\",\n", + " \"Español (latinoamericano)\": \"es-419\",\n", + " \"Suomi\": \"fi\",\n", + " \"Français\": \"fr\",\n", + " \"hindy\": \"hi\",\n", + " \"Icelandic\": \"is\",\n", + " \"Italiano\": \"it\",\n", + " \"ქართული\": \"ka\",\n", + " \"қазақша\": \"kk\",\n", + " \"नेपाली\": \"ne\",\n", + " \"Nederlands\": \"nl\",\n", + " \"Norsk\": \"nb\",\n", + " \"Polski\": \"pl\",\n", + " \"Português (Brasil)\": \"pt-br\",\n", + " \"Русский\": \"ru\",\n", + " \"Svenska\": \"sv\",\n", + " \"украї́нська\": \"uk\",\n", + " \"Tiếng Việt\": \"vi-vn-x-central\",\n", + " \"简体中文\": \"yue\"\n", + "}\n", + "\n", + "def _get_language(code):\n", + " return languages[code]\n", + "\n", + "final_language = _get_language(language)\n", + "#@markdown ### Elige un nombre para tu modelo:\n", + "model_name = \"Test\" #@param {type:\"string\"}\n", + "#@markdown ---\n", + "# output:\n", + "#@markdown ###Elige la carpeta de trabajo: (se recomienda guardar en Drive)\n", + "\n", + "#@markdown La carpeta de trabajo se utilizará en el preprocesamiento, pero también en el entrenamiento del modelo.\n", + "output_path = \"/content/drive/MyDrive/colab/piper\" #@param {type:\"string\"}\n", + "output_dir = output_path+\"/\"+model_name\n", + "if not os.path.exists(output_dir):\n", + " os.makedirs(output_dir)\n", + "#@markdown ---\n", + "#@markdown ### Elige el formato del dataset:\n", + "dataset_format = \"ljspeech\" #@param [\"ljspeech\", \"mycroft\"]\n", + "#@markdown ---\n", + "#@markdown ### ¿Se trata de un conjunto de datos de un solo hablante? Si no es así, desmarca la casilla:\n", + "single_speaker = True #@param {type:\"boolean\"}\n", + "if single_speaker:\n", + " force_sp = \" --single-speaker\"\n", + "else:\n", + " force_sp = \"\"\n", + "#@markdown ---\n", + "#@markdown ###Seleccione la frecuencia de muestreo del dataset:\n", + "sample_rate = \"22050\" #@param [\"16000\", \"22050\"]\n", + "#@markdown ---\n", + "%cd /content/piper/src/python\n", + "#@markdown ###¿Quieres entrenar utilizando esta frecuencia de muestreo, pero tus audios no la tienen?\n", + "#@markdown ¡El remuestreador te ayuda a hacerlo rápidamente!\n", + "resample = False #@param {type:\"boolean\"}\n", + "if resample:\n", + " !python resample.py --input_dir \"/content/dataset/wavs\" --output_dir \"/content/dataset/wavs_resampled\" --output_sr {sample_rate} --file_ext \"wav\"\n", + " !mv /content/dataset/wavs_resampled/* /content/dataset/wavs\n", + "#@markdown ---\n", + "\n", + "!python -m piper_train.preprocess \\\n", + " --language {final_language} \\\n", + " --input-dir /content/dataset \\\n", + " --output-dir \"{output_dir}\" \\\n", + " --dataset-format {dataset_format} \\\n", + " --sample-rate {sample_rate} \\\n", + " {force_sp}" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "cellView": "form", + "id": "ickQlOCRjkBL" + }, + "outputs": [], + "source": [ + "#@markdown # **4. Ajustes.** 🧰\n", + "import json\n", + "import ipywidgets as widgets\n", + "from IPython.display import display\n", + "from google.colab import output\n", + "import os\n", + "#@markdown ### Seleccione la acción para entrenar este conjunto de datos:\n", + "\n", + "#@markdown * La opción de continuar un entrenamiento se explica por sí misma. Si has entrenado previamente un modelo con colab gratuito, se te ha acabado el tiempo y estás considerando entrenarlo un poco más, esto es ideal para ti. Sólo tienes que establecer los mismos ajustes que estableciste cuando entrenaste este modelo por primera vez.\n", + "#@markdown * La opción para convertir un modelo de un solo hablante en un modelo multihablante se explica por sí misma, y para ello es importante que hayas procesado un conjunto de datos que contenga texto y audio de todos los posibles hablantes que quieras entrenar en tu modelo.\n", + "#@markdown * La opción finetune se utiliza para entrenar un conjunto de datos utilizando un modelo preentrenado, es decir, entrenar sobre esos datos. Esta opción es ideal si desea entrenar un conjunto de datos muy pequeño (se recomiendan más de cinco minutos).\n", + "#@markdown * La opción entrenar desde cero construye características como el diccionario y la forma del habla desde cero, y esto puede tardar más en converger. Para ello, se recomiendan horas de audio (8 como mínimo) que tengan una gran colección de fonemas.\n", + "action = \"finetune\" #@param [\"Continue training\", \"convert single-speaker to multi-speaker model\", \"finetune\", \"train from scratch\"]\n", + "#@markdown ---\n", + "if action == \"Continue training\":\n", + " if os.path.exists(f\"{output_dir}/lightning_logs/version_0/checkpoints/last.ckpt\"):\n", + " ft_command = f'--resume_from_checkpoint \"{output_dir}/lightning_logs/version_0/checkpoints/last.ckpt\" '\n", + " print(f\"Continuing {model_name}'s training at: {output_dir}/lightning_logs/version_0/checkpoints/last.ckpt\")\n", + " else:\n", + " raise Exception(\"Training cannot be continued as there is no checkpoint to continue at.\")\n", + "elif action == \"finetune\":\n", + " if os.path.exists(f\"{output_dir}/lightning_logs/version_0/checkpoints/last.ckpt\"):\n", + " raise Exception(\"Oh no! You have already trained this model before, you cannot choose this option since your progress will be lost, and then your previous time will not count. Please select the option to continue a training.\")\n", + " else:\n", + " ft_command = '--resume_from_checkpoint \"/content/pretrained.ckpt\" '\n", + "elif action == \"convert single-speaker to multi-speaker model\":\n", + " if not single_speaker:\n", + " ft_command = '--resume_from_single_speaker_checkpoint \"/content/pretrained.ckpt\" '\n", + " else:\n", + " raise Exception(\"This dataset is not a multi-speaker dataset!\")\n", + "else:\n", + " ft_command = \"\"\n", + "if action== \"convert single-speaker to multi-speaker model\" or action == \"finetune\":\n", + " try:\n", + " with open('/content/piper/notebooks/pretrained_models.json') as f:\n", + " pretrained_models = json.load(f)\n", + " if final_language in pretrained_models:\n", + " models = pretrained_models[final_language]\n", + " model_options = [(model_name, model_name) for model_name, model_url in models.items()]\n", + " model_dropdown = widgets.Dropdown(description = \"Choose pretrained model\", options=model_options)\n", + " download_button = widgets.Button(description=\"Download\")\n", + " def download_model(btn):\n", + " model_name = model_dropdown.value\n", + " model_url = pretrained_models[final_language][model_name]\n", + " print(\"Downloading pretrained model...\")\n", + " if model_url.startswith(\"1\"):\n", + " !gdown -q \"{model_url}\" -O \"/content/pretrained.ckpt\"\n", + " elif model_url.startswith(\"https://drive.google.com/file/d/\"):\n", + " !gdown -q \"{model_url}\" -O \"/content/pretrained.ckpt\" --fuzzy\n", + " else:\n", + " !wget -q \"{model_url}\" -O \"/content/pretrained.ckpt\"\n", + " model_dropdown.close()\n", + " download_button.close()\n", + " output.clear()\n", + " if os.path.exists(\"/content/pretrained.ckpt\"):\n", + " print(\"Model downloaded!\")\n", + " else:\n", + " raise Exception(\"Couldn't download the pretrained model!\")\n", + " download_button.on_click(download_model)\n", + " display(model_dropdown, download_button)\n", + " else:\n", + " raise Exception(f\"There are no pretrained models available for the language {final_language}\")\n", + " except FileNotFoundError:\n", + " raise Exception(\"The pretrained_models.json file was not found.\")\n", + "else:\n", + " print(\"Warning: this model will be trained from scratch. You need at least 8 hours of data for everything to work decent. Good luck!\")\n", + "#@markdown ### Elige el tamaño del lote basándose en este conjunto de datos:\n", + "batch_size = 12 #@param {type:\"integer\"}\n", + "#@markdown ---\n", + "validation_split = 0.01\n", + "#@markdown ### Elige la calidad para este modelo:\n", + "\n", + "#@markdown * x-low - 16Khz audio, 5-7M params\n", + "#@markdown * medium - 22.05Khz audio, 15-20 params\n", + "#@markdown * high - 22.05Khz audio, 28-32M params\n", + "quality = \"medium\" #@param [\"high\", \"x-low\", \"medium\"]\n", + "#@markdown ---\n", + "#@markdown ### Elige la calidad para este modelo: ¿Cada cuántas épocas quieres autoguardar los puntos de control de entrenamiento?\n", + "#@markdown Cuanto mayor sea tu conjunto de datos, debes establecer este intervalo de guardado en un valor menor, ya que las épocas pueden progresar durante más tiempo.\n", + "checkpoint_epochs = 5 #@param {type:\"integer\"}\n", + "#@markdown ---\n", + "#@markdown ### Intervalo de pasos para generar muestras de audio del modelo:\n", + "log_every_n_steps = 1000 #@param {type:\"integer\"}\n", + "#@markdown ---\n", + "#@markdown ### Número de épocas para el entrenamiento.\n", + "max_epochs = 10000 #@param {type:\"integer\"}\n", + "#@markdown ---" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "cellView": "form", + "colab": { + "background_save": true + }, + "id": "X4zbSjXg2J3N" + }, + "outputs": [], + "source": [ + "#@markdown # **5. Entrenar.** 🏋️‍♂️\n", + "#@markdown Ejecuta esta celda para entrenar tu modelo. Si es posible, se guardarán algunas muestras de audio durante el entrenamiento en la carpeta de salida.\n", + "\n", + "get_ipython().system(f'''\n", + "python -m piper_train \\\n", + "--dataset-dir \"{output_dir}\" \\\n", + "--accelerator 'gpu' \\\n", + "--devices 1 \\\n", + "--batch-size {batch_size} \\\n", + "--validation-split {validation_split} \\\n", + "--num-test-examples 2 \\\n", + "--quality {quality} \\\n", + "--checkpoint-epochs {checkpoint_epochs} \\\n", + "--log_every_n_steps {log_every_n_steps} \\\n", + "--max_epochs {max_epochs} \\\n", + "{ft_command}\\\n", + "--precision 32\n", + "''')" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "6ISG085SYn85" + }, + "source": [ + "# ¿Has terminado el entrenamiento y quieres probar el modelo?\n", + "\n", + "* ¡Si quieres ejecutar este modelo en cualquier software que Piper integre o en la misma app de Piper, exporta tu modelo usando el [cuaderno exportador de modelos](https://colab.research.google.com/github/rmcpantoja/piper/blob/master/notebooks/piper_model_exporter.ipynb)!\n", + "* Si quieres probar este modelo ahora mismo antes de exportarlo al formato soportado por Piper. ¡Prueba tu last.ckpt generado con [este cuaderno](https://colab.research.google.com/github/rmcpantoja/piper/blob/master/notebooks/piper_inference_(ckpt).ipynb)!" + ] + } + ], + "metadata": { + "accelerator": "GPU", + "colab": { + "provenance": [], + "include_colab_link": true + }, + "gpuClass": "standard", + "kernelspec": { + "display_name": "Python 3", + "name": "python3" + }, + "language_info": { + "name": "python" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} \ No newline at end of file diff --git a/piper/piper/notebooks/piper_multilingual_training_notebook.ipynb b/piper/piper/notebooks/piper_multilingual_training_notebook.ipynb new file mode 100644 index 0000000..d4c385f --- /dev/null +++ b/piper/piper/notebooks/piper_multilingual_training_notebook.ipynb @@ -0,0 +1,465 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "id": "view-in-github", + "colab_type": "text" + }, + "source": [ + "\"Open" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "eK3nmYDB6C1a" + }, + "source": [ + "# **[Piper](https://github.com/rhasspy/piper) training notebook.**\n", + "## ![Piper logo](https://contribute.rhasspy.org/img/logo.png)\n", + "\n", + "---\n", + "\n", + "- Notebook made by [rmcpantoja](http://github.com/rmcpantoja)\n", + "- Collaborator: [Xx_Nessu_xX](https://fakeyou.com/profile/Xx_Nessu_xX)\n", + "\n", + "---\n", + "\n", + "# Notes:\n", + "\n", + "- **Things in orange mean that they are important.**" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "AICh6p5OJybj" + }, + "source": [ + "# 🔧 ***First steps.*** 🔧" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "cellView": "form", + "id": "qyxSMuzjfQrz" + }, + "outputs": [], + "source": [ + "#@markdown ## **Google Colab Anti-Disconnect.** 🔌\n", + "#@markdown ---\n", + "#@markdown #### Avoid automatic disconnection. Still, it will disconnect after **6 to 12 hours**.\n", + "\n", + "import IPython\n", + "js_code = '''\n", + "function ClickConnect(){\n", + "console.log(\"Working\");\n", + "document.querySelector(\"colab-toolbar-button#connect\").click()\n", + "}\n", + "setInterval(ClickConnect,60000)\n", + "'''\n", + "display(IPython.display.Javascript(js_code))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "cellView": "form", + "id": "ygxzp-xHTC7T" + }, + "outputs": [], + "source": [ + "#@markdown ## **Check GPU type.** 👁️\n", + "#@markdown ---\n", + "#@markdown #### A higher capable GPU can lead to faster training speeds. By default, you will have a **Tesla T4**.\n", + "!nvidia-smi" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "cellView": "form", + "id": "sUNjId07JfAK" + }, + "outputs": [], + "source": [ + "#@markdown # **Mount Google Drive.** 📂\n", + "from google.colab import drive\n", + "drive.mount('/content/drive', force_remount=True)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "cellView": "form", + "id": "_XwmTVlcUgCh" + }, + "outputs": [], + "source": [ + "#@markdown # **Install software.** 📦\n", + "\n", + "#@markdown ####In this cell the synthesizer and its necessary dependencies to execute the training will be installed. (this may take a while)\n", + "\n", + "#@markdown #### **Do you want to use the patch?**\n", + "#@markdown The patch provides the ability to export audio files to the output folder and save a single model while training.\n", + "usepatch = True #@param {type:\"boolean\"}\n", + "#@markdown ---\n", + "# clone:\n", + "!git clone -q https://github.com/rmcpantoja/piper\n", + "%cd /content/piper/src/python\n", + "!wget -q \"https://raw.githubusercontent.com/coqui-ai/TTS/dev/TTS/bin/resample.py\"\n", + "#!pip install -q -r requirements.txt\n", + "!pip install -q cython>=0.29.0 piper-phonemize==1.1.0 librosa>=0.9.2 numpy>=1.19.0 onnxruntime>=1.11.0 pytorch-lightning==1.7.0 torch==1.11.0\n", + "!pip install -q torchtext==0.12.0 torchvision==0.12.0\n", + "# fixing recent compativility isswes:\n", + "!pip install -q torchaudio==0.11.0 torchmetrics==0.11.4\n", + "!bash build_monotonic_align.sh\n", + "!apt-get install -q espeak-ng\n", + "# download patches:\n", + "if usepatch:\n", + " print(\"Downloading patch...\")\n", + " !gdown -q \"1EWEb7amo1rgFGpBFfRD4BKX3pkjVK1I-\" -O \"/content/piper/src/python/patch.zip\"\n", + " !unzip -o -q \"patch.zip\"\n", + "%cd /content" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "A3bMzEE0V5Ma" + }, + "source": [ + "# 🤖 ***Training.*** 🤖" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "cellView": "form", + "id": "SvEGjf0aV8eg" + }, + "outputs": [], + "source": [ + "#@markdown # **1. Extract dataset.** 📥\n", + "#@markdown ####Important: the audios must be in **wav format, (16000 or 22050hz, 16-bits, mono), and, for convenience, numbered. Example:**\n", + "\n", + "#@markdown * **1.wav**\n", + "#@markdown * **2.wav**\n", + "#@markdown * **3.wav**\n", + "#@markdown * **.....**\n", + "\n", + "#@markdown ---\n", + "\n", + "%cd /content\n", + "!mkdir /content/dataset\n", + "%cd /content/dataset\n", + "!mkdir /content/dataset/wavs\n", + "#@markdown ### Audio dataset path to unzip:\n", + "zip_path = \"/content/drive/MyDrive/Wavs.zip\" #@param {type:\"string\"}\n", + "!unzip \"{zip_path}\" -d /content/dataset/wavs\n", + "#@markdown ---" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "cellView": "form", + "id": "E0W0OCvXXvue" + }, + "outputs": [], + "source": [ + "#@markdown # **2. Upload the transcript file.** 📝\n", + "#@markdown ---\n", + "#@markdown ####**Important: the transcription means writing what the character says in each of the audios, and it must have the following structure:**\n", + "\n", + "#@markdown ##### For a single-speaker dataset:\n", + "#@markdown * wavs/1.wav|This is what my character says in audio 1.\n", + "#@markdown * wavs/2.wav|This, the text that the character says in audio 2.\n", + "#@markdown * ...\n", + "\n", + "#@markdown ##### For a multi-speaker dataset:\n", + "\n", + "#@markdown * wavs/speaker1audio1.wav|speaker1|This is what the first speaker says.\n", + "#@markdown * wavs/speaker1audio2.wav|speaker1|This is another audio of the first speaker.\n", + "#@markdown * wavs/speaker2audio1.wav|speaker2|This is what the second speaker says in the first audio.\n", + "#@markdown * wavs/speaker2audio2.wav|speaker2|This is another audio of the second speaker.\n", + "#@markdown * ...\n", + "\n", + "#@markdown And so on. In addition, the transcript must be in a **.csv format. (UTF-8 without BOM)**\n", + "\n", + "#@markdown ---\n", + "%cd /content/dataset\n", + "from google.colab import files\n", + "!rm /content/dataset/metadata.csv\n", + "listfn, length = files.upload().popitem()\n", + "if listfn != \"metadata.csv\":\n", + " !mv \"$listfn\" metadata.csv\n", + "%cd .." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "cellView": "form", + "id": "dOyx9Y6JYvRF" + }, + "outputs": [], + "source": [ + "#@markdown # **3. Preprocess dataset.** 🔄\n", + "\n", + "import os\n", + "#@markdown ### First of all, select the language of your dataset.\n", + "language = \"English (U.S.)\" #@param [\"Català\", \"Dansk\", \"Deutsch\", \"Ελληνικά\", \"English (British)\", \"English (U.S.)\", \"Español\", \"Español (latinoamericano)\", \"Suomi\", \"Français\", \"Magyar\", \"Icelandic\", \"Italiano\", \"ქართული\", \"қазақша\", \"Lëtzebuergesch\", \"नेपाली\", \"Nederlands\", \"Norsk\", \"Polski\", \"Português (Brasil)\", \"Română\", \"Русский\", \"Српски\", \"Svenska\", \"Kiswahili\", \"Türkçe\", \"украї́нська\", \"Tiếng Việt\", \"简体中文\"]\n", + "#@markdown ---\n", + "# language definition:\n", + "languages = {\n", + " \"Català\": \"ca\",\n", + " \"Dansk\": \"da\",\n", + " \"Deutsch\": \"de\",\n", + " \"Ελληνικά\": \"grc\",\n", + " \"English (British)\": \"en\",\n", + " \"English (U.S.)\": \"en-us\",\n", + " \"Español\": \"es\",\n", + " \"Español (latinoamericano)\": \"es-419\",\n", + " \"Suomi\": \"fi\",\n", + " \"Français\": \"fr\",\n", + " \"Magyar\": \"hu\",\n", + " \"Icelandic\": \"is\",\n", + " \"Italiano\": \"it\",\n", + " \"ქართული\": \"ka\",\n", + " \"қазақша\": \"kk\",\n", + " \"Lëtzebuergesch\": \"lb\",\n", + " \"नेपाली\": \"ne\",\n", + " \"Nederlands\": \"nl\",\n", + " \"Norsk\": \"nb\",\n", + " \"Polski\": \"pl\",\n", + " \"Português (Brasil)\": \"pt-br\",\n", + " \"Română\": \"ro\",\n", + " \"Русский\": \"ru\",\n", + " \"Српски\": \"sr\",\n", + " \"Svenska\": \"sv\",\n", + " \"Kiswahili\": \"sw\",\n", + " \"Türkçe\": \"tr\",\n", + " \"украї́нська\": \"uk\",\n", + " \"Tiếng Việt\": \"vi\",\n", + " \"简体中文\": \"zh\"\n", + "}\n", + "\n", + "def _get_language(code):\n", + " return languages[code]\n", + "\n", + "final_language = _get_language(language)\n", + "#@markdown ### Choose a name for your model:\n", + "model_name = \"Test\" #@param {type:\"string\"}\n", + "#@markdown ---\n", + "# output:\n", + "#@markdown ### Choose the working folder: (recommended to save to Drive)\n", + "\n", + "#@markdown The working folder will be used in preprocessing, but also in training the model.\n", + "output_path = \"/content/drive/MyDrive/colab/piper\" #@param {type:\"string\"}\n", + "output_dir = output_path+\"/\"+model_name\n", + "if not os.path.exists(output_dir):\n", + " os.makedirs(output_dir)\n", + "#@markdown ---\n", + "#@markdown ### Choose dataset format:\n", + "dataset_format = \"ljspeech\" #@param [\"ljspeech\", \"mycroft\"]\n", + "#@markdown ---\n", + "#@markdown ### Is this a single speaker dataset? Otherwise, uncheck:\n", + "single_speaker = True #@param {type:\"boolean\"}\n", + "if single_speaker:\n", + " force_sp = \" --single-speaker\"\n", + "else:\n", + " force_sp = \"\"\n", + "#@markdown ---\n", + "#@markdown ### Select the sample rate of the dataset:\n", + "sample_rate = \"22050\" #@param [\"16000\", \"22050\"]\n", + "#@markdown ---\n", + "%cd /content/piper/src/python\n", + "#@markdown ### Do you want to train using this sample rate, but your audios don't have it?\n", + "#@markdown The resampler helps you do it quickly!\n", + "resample = False #@param {type:\"boolean\"}\n", + "if resample:\n", + " !python resample.py --input_dir \"/content/dataset/wavs\" --output_dir \"/content/dataset/wavs_resampled\" --output_sr {sample_rate} --file_ext \"wav\"\n", + " !mv /content/dataset/wavs_resampled/* /content/dataset/wavs\n", + "#@markdown ---\n", + "\n", + "!python -m piper_train.preprocess \\\n", + " --language {final_language} \\\n", + " --input-dir /content/dataset \\\n", + " --output-dir \"{output_dir}\" \\\n", + " --dataset-format {dataset_format} \\\n", + " --sample-rate {sample_rate} \\\n", + " {force_sp}" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "cellView": "form", + "id": "ickQlOCRjkBL" + }, + "outputs": [], + "source": [ + "#@markdown # **4. Settings.** 🧰\n", + "import json\n", + "import ipywidgets as widgets\n", + "from IPython.display import display\n", + "from google.colab import output\n", + "import os\n", + "#@markdown ### Select the action to train this dataset:\n", + "\n", + "#@markdown * The option to continue a training is self-explanatory. If you've previously trained a model with free colab, your time is up and you're considering training it some more, this is ideal for you. You just have to set the same settings that you set when you first trained this model.\n", + "#@markdown * The option to convert a single-speaker model to a multi-speaker model is self-explanatory, and for this it is important that you have processed a dataset that contains text and audio from all possible speakers that you want to train in your model.\n", + "#@markdown * The finetune option is used to train a dataset using a pretrained model, that is, train on that data. This option is ideal if you want to train a very small dataset (more than five minutes recommended).\n", + "#@markdown * The train from scratch option builds features such as dictionary and speech form from scratch, and this may take longer to converge. For this, hours of audio (8 at least) are recommended, which have a large collection of phonemes.\n", + "\n", + "action = \"finetune\" #@param [\"Continue training\", \"convert single-speaker to multi-speaker model\", \"finetune\", \"train from scratch\"]\n", + "#@markdown ---\n", + "if action == \"Continue training\":\n", + " if os.path.exists(f\"{output_dir}/lightning_logs/version_0/checkpoints/last.ckpt\"):\n", + " ft_command = f'--resume_from_checkpoint \"{output_dir}/lightning_logs/version_0/checkpoints/last.ckpt\" '\n", + " print(f\"Continuing {model_name}'s training at: {output_dir}/lightning_logs/version_0/checkpoints/last.ckpt\")\n", + " else:\n", + " raise Exception(\"Training cannot be continued as there is no checkpoint to continue at.\")\n", + "elif action == \"finetune\":\n", + " if os.path.exists(f\"{output_dir}/lightning_logs/version_0/checkpoints/last.ckpt\"):\n", + " raise Exception(\"Oh no! You have already trained this model before, you cannot choose this option since your progress will be lost, and then your previous time will not count. Please select the option to continue a training.\")\n", + " else:\n", + " ft_command = '--resume_from_checkpoint \"/content/pretrained.ckpt\" '\n", + "elif action == \"convert single-speaker to multi-speaker model\":\n", + " if not single_speaker:\n", + " ft_command = '--resume_from_single_speaker_checkpoint \"/content/pretrained.ckpt\" '\n", + " else:\n", + " raise Exception(\"This dataset is not a multi-speaker dataset!\")\n", + "else:\n", + " ft_command = \"\"\n", + "if action== \"convert single-speaker to multi-speaker model\" or action == \"finetune\":\n", + " try:\n", + " with open('/content/piper/notebooks/pretrained_models.json') as f:\n", + " pretrained_models = json.load(f)\n", + " if final_language in pretrained_models:\n", + " models = pretrained_models[final_language]\n", + " model_options = [(model_name, model_name) for model_name, model_url in models.items()]\n", + " model_dropdown = widgets.Dropdown(description = \"Choose pretrained model\", options=model_options)\n", + " download_button = widgets.Button(description=\"Download\")\n", + " def download_model(btn):\n", + " model_name = model_dropdown.value\n", + " model_url = pretrained_models[final_language][model_name]\n", + " print(\"Downloading pretrained model...\")\n", + " if model_url.startswith(\"1\"):\n", + " !gdown -q \"{model_url}\" -O \"/content/pretrained.ckpt\"\n", + " elif model_url.startswith(\"https://drive.google.com/file/d/\"):\n", + " !gdown -q \"{model_url}\" -O \"/content/pretrained.ckpt\" --fuzzy\n", + " else:\n", + " !wget -q \"{model_url}\" -O \"/content/pretrained.ckpt\"\n", + " model_dropdown.close()\n", + " download_button.close()\n", + " output.clear()\n", + " if os.path.exists(\"/content/pretrained.ckpt\"):\n", + " print(\"Model downloaded!\")\n", + " else:\n", + " raise Exception(\"Couldn't download the pretrained model!\")\n", + " download_button.on_click(download_model)\n", + " display(model_dropdown, download_button)\n", + " else:\n", + " raise Exception(f\"There are no pretrained models available for the language {final_language}\")\n", + " except FileNotFoundError:\n", + " raise Exception(\"The pretrained_models.json file was not found.\")\n", + "else:\n", + " print(\"Warning: this model will be trained from scratch. You need at least 8 hours of data for everything to work decent. Good luck!\")\n", + "#@markdown ### Choose batch size based on this dataset:\n", + "batch_size = 12 #@param {type:\"integer\"}\n", + "#@markdown ---\n", + "validation_split = 0.01\n", + "#@markdown ### Choose the quality for this model:\n", + "\n", + "#@markdown * x-low - 16Khz audio, 5-7M params\n", + "#@markdown * medium - 22.05Khz audio, 15-20 params\n", + "#@markdown * high - 22.05Khz audio, 28-32M params\n", + "quality = \"medium\" #@param [\"high\", \"x-low\", \"medium\"]\n", + "#@markdown ---\n", + "#@markdown ### For how many epochs to save training checkpoints?\n", + "#@markdown The larger your dataset, you should set this saving interval to a smaller value, as epochs can progress longer time.\n", + "checkpoint_epochs = 5 #@param {type:\"integer\"}\n", + "#@markdown ---\n", + "#@markdown ### Step interval to generate model samples:\n", + "log_every_n_steps = 1000 #@param {type:\"integer\"}\n", + "#@markdown ---\n", + "#@markdown ### Training epochs:\n", + "max_epochs = 10000 #@param {type:\"integer\"}\n", + "#@markdown ---" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "cellView": "form", + "colab": { + "background_save": true + }, + "id": "X4zbSjXg2J3N" + }, + "outputs": [], + "source": [ + "#@markdown # **5. Train.** 🏋️‍♂️\n", + "#@markdown Run this cell to train your final model! If possible, some audio samples will be saved during training in the output folder.\n", + "\n", + "get_ipython().system(f'''\n", + "python -m piper_train \\\n", + "--dataset-dir \"{output_dir}\" \\\n", + "--accelerator 'gpu' \\\n", + "--devices 1 \\\n", + "--batch-size {batch_size} \\\n", + "--validation-split {validation_split} \\\n", + "--num-test-examples 2 \\\n", + "--quality {quality} \\\n", + "--checkpoint-epochs {checkpoint_epochs} \\\n", + "--log_every_n_steps {log_every_n_steps} \\\n", + "--max_epochs {max_epochs} \\\n", + "{ft_command}\\\n", + "--precision 32\n", + "''')" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "6ISG085SYn85" + }, + "source": [ + "# Have you finished training and want to test the model?\n", + "\n", + "* If you want to run this model in any software that Piper integrates or the same Piper app, export your model using the [model exporter notebook](https://colab.research.google.com/github/rmcpantoja/piper/blob/master/notebooks/piper_model_exporter.ipynb)!\n", + "* Wait! I want to test this right now before exporting it to the supported format for Piper. Test your generated last.ckpt with [this notebook](https://colab.research.google.com/github/rmcpantoja/piper/blob/master/notebooks/piper_inference_(ckpt).ipynb)!" + ] + } + ], + "metadata": { + "accelerator": "GPU", + "colab": { + "provenance": [], + "include_colab_link": true + }, + "gpuClass": "standard", + "kernelspec": { + "display_name": "Python 3", + "name": "python3" + }, + "language_info": { + "name": "python" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} \ No newline at end of file diff --git a/piper/piper/notebooks/pretrained_models.json b/piper/piper/notebooks/pretrained_models.json new file mode 100644 index 0000000..6211815 --- /dev/null +++ b/piper/piper/notebooks/pretrained_models.json @@ -0,0 +1,106 @@ +{ + "ar": { + "qasr-low": "1H9y8nlJ3K6_elXsB6YaJKsnbEBYCSF-_", + "qasr-high": "10xcE_l1DMQorjnQoRcUF7KP2uRgSr11q" + }, + "ca": { + "upc_ona-medium (fine-tuned)": "https://huggingface.co/datasets/rhasspy/piper-checkpoints/resolve/main/ca/ca_ES/upc_ona/medium/epoch%3D3184-step%3D1641140.ckpt" + }, + "da": { + "talesyntese-medium": "https://huggingface.co/datasets/rhasspy/piper-checkpoints/resolve/main/da/da_DK/talesyntese/medium/epoch%3D3264-step%3D1634940.ckpt" + }, + "de": { + "thorsten-medium (fine-tuned)": "https://huggingface.co/datasets/rhasspy/piper-checkpoints/resolve/main/de/de_DE/thorsten/medium/epoch%3D3135-step%3D2702056.ckpt", + "thorsten_emotional (fine-tuned)": "https://huggingface.co/datasets/rhasspy/piper-checkpoints/resolve/main/de/de_DE/thorsten_emotional/medium/epoch%3D6069-step%3D230660.ckpt" + }, + "en-gb": { + "alan-medium (fine-tuned)": "https://huggingface.co/datasets/rhasspy/piper-checkpoints/resolve/main/en/en_GB/alan/medium/epoch%3D6339-step%3D1647790.ckpt", + "alba-medium (fine-tuned)": "https://huggingface.co/datasets/rhasspy/piper-checkpoints/resolve/main/en/en_GB/alba/medium/epoch%3D4179-step%3D2101090.ckpt", + "aru-medium (fine-tuned)": "https://huggingface.co/datasets/rhasspy/piper-checkpoints/resolve/main/en/en_GB/aru/medium/epoch%3D3479-step%3D939600.ckpt", + "jenny_dioco-medium (fine-tuned)": "https://huggingface.co/datasets/rhasspy/piper-checkpoints/resolve/main/en/en_GB/jenny_dioco/medium/epoch%3D2748-step%3D1729300.ckpt", + "northern_english_male-medium (fine-tuned)": "https://huggingface.co/datasets/rhasspy/piper-checkpoints/resolve/main/en/en_GB/northern_english_male/medium/epoch%3D9029-step%3D2261720.ckpt", + "semaine-medium (fine-tuned)": "https://huggingface.co/datasets/rhasspy/piper-checkpoints/resolve/main/en/en_GB/semaine/medium/epoch%3D1849-step%3D214600.ckpt", + "vctk-medium (fine-tuned)": "https://huggingface.co/datasets/rhasspy/piper-checkpoints/resolve/main/en/en_GB/vctk/medium/epoch%3D545-step%3D1511328.ckpt" + }, + "en-us": { + "amy_medium (fine-tuned)": "https://huggingface.co/datasets/rhasspy/piper-checkpoints/resolve/main/en/en_US/amy/medium/epoch%3D6679-step%3D1554200.ckpt", + "arctic_medium (fine-tuned)": "https://huggingface.co/datasets/rhasspy/piper-checkpoints/resolve/main/en/en_US/arctic/medium/epoch%3D663-step%3D646736.ckpt", + "joe_medium (fine-tuned)": "https://huggingface.co/datasets/rhasspy/piper-checkpoints/resolve/main/en/en_US/joe/medium/epoch%3D7889-step%3D1221224.ckpt", + "kusal_medium (fine-tuned)": "https://huggingface.co/datasets/rhasspy/piper-checkpoints/resolve/main/en/en_US/kusal/medium/epoch%3D2652-step%3D1953828.ckpt", + "l2arctic_medium (fine-tuned)": "https://huggingface.co/datasets/rhasspy/piper-checkpoints/resolve/main/en/en_US/l2arctic/medium/epoch%3D536-step%3D902160.ckpt", + "lessac-high": "https://huggingface.co/datasets/rhasspy/piper-checkpoints/resolve/main/en/en_US/lessac/high/epoch%3D2218-step%3D838782.ckpt", + "lessac-low": "https://huggingface.co/datasets/rhasspy/piper-checkpoints/resolve/main/en/en_US/lessac/low/epoch%3D2307-step%3D558536.ckpt", + "lessac-medium": "https://huggingface.co/datasets/rhasspy/piper-checkpoints/resolve/main/en/en_US/lessac/medium/epoch%3D2164-step%3D1355540.ckpt", + "Ryan-medium (fine-tuned)": "https://huggingface.co/datasets/rhasspy/piper-checkpoints/resolve/main/en/en_US/ryan/medium/epoch%3D4641-step%3D3104302.ckpt" + }, + "es": { + "davefx-medium (fine-tuned)": "https://huggingface.co/datasets/rhasspy/piper-checkpoints/resolve/main/es/es_ES/davefx/medium/epoch%3D5629-step%3D1605020.ckpt", + "sharvard-medium (fine-tuned)": "https://huggingface.co/datasets/rhasspy/piper-checkpoints/resolve/main/es/es_ES/sharvard/medium/epoch%3D4899-step%3D215600.ckpt" + }, + "es-419": { + "aldo-medium (fine-tuned)": "https://huggingface.co/datasets/rhasspy/piper-checkpoints/resolve/main/es/es_MX/ald/medium/epoch%3D9999-step%3D1753600.ckpt" + }, + "fi": { + "harri-medium (fine-tuned)": "https://huggingface.co/datasets/rhasspy/piper-checkpoints/resolve/main/fi/fi_FI/harri/medium/epoch%3D3369-step%3D1714630.ckpt" + }, + "fr": { + "siwis-medium (fine-tuned)": "https://huggingface.co/datasets/rhasspy/piper-checkpoints/resolve/main/fr/fr_FR/siwis/medium/epoch%3D3304-step%3D2050940.ckpt", + "upmc-medium (fine-tuned)": "https://huggingface.co/datasets/rhasspy/piper-checkpoints/resolve/main/fr/fr_FR/upmc/medium/epoch%3D2999-step%3D702000.ckpt" + }, + "hu": { + "berta-medium (fine-tuned)": "https://huggingface.co/datasets/rhasspy/piper-checkpoints/blob/main/hu/hu_HU/berta/epoch%3D5249-step%3D1429580.ckpt" + }, + "ka": { + "natia-medium (fine-tuned)": "https://huggingface.co/datasets/rhasspy/piper-checkpoints/resolve/main/ka/ka_GE/natia/medium/epoch%3D5239-step%3D1607690.ckpt" + }, + "kk": { + "iseke-low": "1kIcnqTr6DI4JRibooe7ZvCIkGHez8kQT", + "raya-low": "11UuZBPqjgn09S4Vkv7yi7_rIp7yB0UCt" + }, + "lb": { + "marylux-medium (fine-tuned)": "https://huggingface.co/datasets/rhasspy/piper-checkpoints/resolve/main/lb/lb_LU/marylux/medium/epoch%3D4419-step%3D1558490.ckpt" + }, + "ne": { + "Google-medium (fine-tuned)": "https://huggingface.co/datasets/rhasspy/piper-checkpoints/resolve/main/ne/ne_NP/google/medium/epoch%3D2829-step%3D367900.ckpt" + }, + "nl": { + "nathalie-medium (fine-tuned)": "https://huggingface.co/datasets/rhasspy/piper-checkpoints/resolve/main/nl/nl_NL/nathalie/medium/epoch%3D6119-step%3D1806410.ckpt" + }, + "no": { + "talesyntese-medium (fine-tuned)": "https://huggingface.co/datasets/rhasspy/piper-checkpoints/resolve/main/no/no_NO/talesyntese/medium/epoch%3D3459-step%3D2052250.ckpt" + }, + "pl": { + "darkman-medium (fine-tuned)": "https://huggingface.co/datasets/rhasspy/piper-checkpoints/resolve/main/pl/pl_PL/darkman/medium/epoch%3D4909-step%3D1454360.ckpt", + "gosia-medium (fine-tuned)": "https://huggingface.co/datasets/rhasspy/piper-checkpoints/resolve/main/pl/pl_PL/gosia/medium/epoch%3D5001-step%3D1457672.ckpt" + }, + "pt": { + "faber-medium (fine-tuned)": "https://huggingface.co/datasets/rhasspy/piper-checkpoints/resolve/main/pt/pt_BR/faber/medium/epoch%3D6159-step%3D1230728.ckpt" + }, + "ro": { + "mihai-medium (fine-tuned)": "https://huggingface.co/datasets/rhasspy/piper-checkpoints/resolve/main/ro/ro_RO/mihai/medium/epoch%3D7809-step%3D1558760.ckpt" + }, + "ru": { + "denis-medium (fine-tuned)": "https://huggingface.co/datasets/rhasspy/piper-checkpoints/resolve/main/ru/ru_RU/denis/medium/epoch%3D4474-step%3D1521860.ckpt", + "dmitri-medium (fine-tuned)": "https://huggingface.co/datasets/rhasspy/piper-checkpoints/resolve/main/ru/ru_RU/dmitri/medium/epoch%3D5589-step%3D1478840.ckpt", + "irina-medium (fine-tuned)": "https://huggingface.co/datasets/rhasspy/piper-checkpoints/resolve/main/ru/ru_RU/irina/medium/epoch%3D4139-step%3D929464.ckpt", + "ruslan-medium (fine-tuned)": "https://huggingface.co/datasets/rhasspy/piper-checkpoints/resolve/main/ru/ru_RU/ruslan/medium/epoch%3D2436-step%3D1724372.ckpt" + }, + "sr": { + "serbski_institut-medium (fine-tuned)": "https://huggingface.co/datasets/rhasspy/piper-checkpoints/resolve/main/sr/sr_RS/serbski_institut/medium/epoch%3D1899-step%3D178600.ckpt" + }, + "sw": { + "lanfrica-medium (fine-tuned)": "https://huggingface.co/datasets/rhasspy/piper-checkpoints/resolve/main/sw/sw_CD/lanfrica/medium/epoch%3D2619-step%3D1635820.ckpt" + }, + "tr": { + "dfki-medium (fine-tuned)": "https://huggingface.co/datasets/rhasspy/piper-checkpoints/resolve/main/tr/tr_TR/dfki/medium/epoch%3D5679-step%3D1489110.ckpt" + }, + "uk": { + "ukrainian_tts-medium": "https://huggingface.co/datasets/rhasspy/piper-checkpoints/resolve/main/uk/uk_UK/ukrainian_tts/medium/epoch%3D2090-step%3D1166778.ckpt" + }, + "vi": { + "vais1000-medium (fine-tuned)": "https://huggingface.co/datasets/rhasspy/piper-checkpoints/resolve/main/vi/vi_VN/vais1000/medium/epoch%3D4769-step%3D919580.ckpt" + }, + "zh": { + "huayan-medium (fine-tuned)": "https://huggingface.co/datasets/rhasspy/piper-checkpoints/resolve/main/zh/zh_CN/huayan/medium/epoch%3D3269-step%3D2460540.ckpt" + } +} \ No newline at end of file diff --git a/piper/piper/notebooks/translator.py b/piper/piper/notebooks/translator.py new file mode 100644 index 0000000..85fb705 --- /dev/null +++ b/piper/piper/notebooks/translator.py @@ -0,0 +1,27 @@ +import configparser +import os + +class Translator: + def __init__(self): + self.configs = {} + + def load_language(self, language_name): + if language_name not in self.configs: + config = configparser.ConfigParser() + config.read(os.path.join(os.getcwd(), "lng", f"{language_name}.lang")) + self.configs[language_name] = config + + def translate(self, language_name, string): + if language_name == "en": + return string + elif language_name not in self.configs: + self.load_language(language_name) + config = self.configs[language_name] + try: + return config.get("Strings", string) + except (configparser.NoOptionError, configparser.NoSectionError): + if string: + return string + else: + raise Exception("language engine error: This translation is corrupt!") + return 0 diff --git a/piper/piper/notebooks/wav/en/downloaded.wav b/piper/piper/notebooks/wav/en/downloaded.wav new file mode 100644 index 0000000..198cd2a Binary files /dev/null and b/piper/piper/notebooks/wav/en/downloaded.wav differ diff --git a/piper/piper/notebooks/wav/en/downloading.wav b/piper/piper/notebooks/wav/en/downloading.wav new file mode 100644 index 0000000..7fa05b7 Binary files /dev/null and b/piper/piper/notebooks/wav/en/downloading.wav differ diff --git a/piper/piper/notebooks/wav/en/dwnerror.wav b/piper/piper/notebooks/wav/en/dwnerror.wav new file mode 100644 index 0000000..bf47cde Binary files /dev/null and b/piper/piper/notebooks/wav/en/dwnerror.wav differ diff --git a/piper/piper/notebooks/wav/en/exit.wav b/piper/piper/notebooks/wav/en/exit.wav new file mode 100644 index 0000000..ce74b02 Binary files /dev/null and b/piper/piper/notebooks/wav/en/exit.wav differ diff --git a/piper/piper/notebooks/wav/en/gpuavailable.wav b/piper/piper/notebooks/wav/en/gpuavailable.wav new file mode 100644 index 0000000..e98d8ec Binary files /dev/null and b/piper/piper/notebooks/wav/en/gpuavailable.wav differ diff --git a/piper/piper/notebooks/wav/en/installed.wav b/piper/piper/notebooks/wav/en/installed.wav new file mode 100644 index 0000000..9bf47bf Binary files /dev/null and b/piper/piper/notebooks/wav/en/installed.wav differ diff --git a/piper/piper/notebooks/wav/en/installing.wav b/piper/piper/notebooks/wav/en/installing.wav new file mode 100644 index 0000000..9b4dd7b Binary files /dev/null and b/piper/piper/notebooks/wav/en/installing.wav differ diff --git a/piper/piper/notebooks/wav/en/loaded.wav b/piper/piper/notebooks/wav/en/loaded.wav new file mode 100644 index 0000000..8d54d28 Binary files /dev/null and b/piper/piper/notebooks/wav/en/loaded.wav differ diff --git a/piper/piper/notebooks/wav/en/multispeaker.wav b/piper/piper/notebooks/wav/en/multispeaker.wav new file mode 100644 index 0000000..b3347c7 Binary files /dev/null and b/piper/piper/notebooks/wav/en/multispeaker.wav differ diff --git a/piper/piper/notebooks/wav/en/nogpu.wav b/piper/piper/notebooks/wav/en/nogpu.wav new file mode 100644 index 0000000..02f1b60 Binary files /dev/null and b/piper/piper/notebooks/wav/en/nogpu.wav differ diff --git a/piper/piper/notebooks/wav/en/noid.wav b/piper/piper/notebooks/wav/en/noid.wav new file mode 100644 index 0000000..346706f Binary files /dev/null and b/piper/piper/notebooks/wav/en/noid.wav differ diff --git a/piper/piper/notebooks/wav/en/nomodel.wav b/piper/piper/notebooks/wav/en/nomodel.wav new file mode 100644 index 0000000..7e7598c Binary files /dev/null and b/piper/piper/notebooks/wav/en/nomodel.wav differ diff --git a/piper/piper/notebooks/wav/en/novoices.wav b/piper/piper/notebooks/wav/en/novoices.wav new file mode 100644 index 0000000..5123c27 Binary files /dev/null and b/piper/piper/notebooks/wav/en/novoices.wav differ diff --git a/piper/piper/notebooks/wav/en/selectmodel.wav b/piper/piper/notebooks/wav/en/selectmodel.wav new file mode 100644 index 0000000..09f2b8c Binary files /dev/null and b/piper/piper/notebooks/wav/en/selectmodel.wav differ diff --git a/piper/piper/notebooks/wav/en/starting.wav b/piper/piper/notebooks/wav/en/starting.wav new file mode 100644 index 0000000..abfea1f Binary files /dev/null and b/piper/piper/notebooks/wav/en/starting.wav differ diff --git a/piper/piper/notebooks/wav/en/success.wav b/piper/piper/notebooks/wav/en/success.wav new file mode 100644 index 0000000..7afe380 Binary files /dev/null and b/piper/piper/notebooks/wav/en/success.wav differ diff --git a/piper/piper/notebooks/wav/en/waiting.wav b/piper/piper/notebooks/wav/en/waiting.wav new file mode 100644 index 0000000..a21aad5 Binary files /dev/null and b/piper/piper/notebooks/wav/en/waiting.wav differ diff --git a/piper/piper/notebooks/wav/es/downloaded.wav b/piper/piper/notebooks/wav/es/downloaded.wav new file mode 100644 index 0000000..fb8a601 Binary files /dev/null and b/piper/piper/notebooks/wav/es/downloaded.wav differ diff --git a/piper/piper/notebooks/wav/es/downloading.wav b/piper/piper/notebooks/wav/es/downloading.wav new file mode 100644 index 0000000..3973139 Binary files /dev/null and b/piper/piper/notebooks/wav/es/downloading.wav differ diff --git a/piper/piper/notebooks/wav/es/dwnerror.wav b/piper/piper/notebooks/wav/es/dwnerror.wav new file mode 100644 index 0000000..1e84a41 Binary files /dev/null and b/piper/piper/notebooks/wav/es/dwnerror.wav differ diff --git a/piper/piper/notebooks/wav/es/exit.wav b/piper/piper/notebooks/wav/es/exit.wav new file mode 100644 index 0000000..dbdc7d6 Binary files /dev/null and b/piper/piper/notebooks/wav/es/exit.wav differ diff --git a/piper/piper/notebooks/wav/es/gpuavailable.wav b/piper/piper/notebooks/wav/es/gpuavailable.wav new file mode 100644 index 0000000..7530140 Binary files /dev/null and b/piper/piper/notebooks/wav/es/gpuavailable.wav differ diff --git a/piper/piper/notebooks/wav/es/installed.wav b/piper/piper/notebooks/wav/es/installed.wav new file mode 100644 index 0000000..539c004 Binary files /dev/null and b/piper/piper/notebooks/wav/es/installed.wav differ diff --git a/piper/piper/notebooks/wav/es/installing.wav b/piper/piper/notebooks/wav/es/installing.wav new file mode 100644 index 0000000..32ed1b2 Binary files /dev/null and b/piper/piper/notebooks/wav/es/installing.wav differ diff --git a/piper/piper/notebooks/wav/es/loaded.wav b/piper/piper/notebooks/wav/es/loaded.wav new file mode 100644 index 0000000..565e5d9 Binary files /dev/null and b/piper/piper/notebooks/wav/es/loaded.wav differ diff --git a/piper/piper/notebooks/wav/es/multispeaker.wav b/piper/piper/notebooks/wav/es/multispeaker.wav new file mode 100644 index 0000000..d5204ce Binary files /dev/null and b/piper/piper/notebooks/wav/es/multispeaker.wav differ diff --git a/piper/piper/notebooks/wav/es/nogpu.wav b/piper/piper/notebooks/wav/es/nogpu.wav new file mode 100644 index 0000000..6ee0792 Binary files /dev/null and b/piper/piper/notebooks/wav/es/nogpu.wav differ diff --git a/piper/piper/notebooks/wav/es/noid.wav b/piper/piper/notebooks/wav/es/noid.wav new file mode 100644 index 0000000..fe3af5d Binary files /dev/null and b/piper/piper/notebooks/wav/es/noid.wav differ diff --git a/piper/piper/notebooks/wav/es/nomodel.wav b/piper/piper/notebooks/wav/es/nomodel.wav new file mode 100644 index 0000000..2a59502 Binary files /dev/null and b/piper/piper/notebooks/wav/es/nomodel.wav differ diff --git a/piper/piper/notebooks/wav/es/novoices.wav b/piper/piper/notebooks/wav/es/novoices.wav new file mode 100644 index 0000000..b2667f1 Binary files /dev/null and b/piper/piper/notebooks/wav/es/novoices.wav differ diff --git a/piper/piper/notebooks/wav/es/selectmodel.wav b/piper/piper/notebooks/wav/es/selectmodel.wav new file mode 100644 index 0000000..21aa1bf Binary files /dev/null and b/piper/piper/notebooks/wav/es/selectmodel.wav differ diff --git a/piper/piper/script/generate_supported_languages.py b/piper/piper/script/generate_supported_languages.py new file mode 100644 index 0000000..b6fc5b4 --- /dev/null +++ b/piper/piper/script/generate_supported_languages.py @@ -0,0 +1,61 @@ +#!/usr/bin/env python3 +from dataclasses import dataclass + + +@dataclass +class Language: + native: str + english: str + country: str + + +_LANGUAGES = { + "ar_JO": Language("العربية", "Arabic", "Jordan"), + "ca_ES": Language("Català", "Catalan", "Spain"), + "cs_CZ": Language("Čeština", "Czech", "Czech Republic"), + "cy_GB": Language("Cymraeg", "Welsh", "Great Britain"), + "da_DK": Language("Dansk", "Danish", "Denmark"), + "de_DE": Language("Deutsch", "German", "Germany"), + "el_GR": Language("Ελληνικά", "Greek", "Greece"), + "en_GB": Language("English", "English", "Great Britain"), + "en_US": Language("English", "English", "United States"), + "es_ES": Language("Español", "Spanish", "Spain"), + "es_MX": Language("Español", "Spanish", "Mexico"), + "fa_IR": Language("فارسی", "Farsi", "Iran"), + "fi_FI": Language("Suomi", "Finnish", "Finland"), + "fr_FR": Language("Français", "French", "France"), + "is_IS": Language("íslenska", "Icelandic", "Iceland"), + "it_IT": Language("Italiano", "Italian", "Italy"), + "hu_HU": Language("Magyar", "Hungarian", "Hungary"), + "ka_GE": Language("ქართული ენა", "Georgian", "Georgia"), + "kk_KZ": Language("қазақша", "Kazakh", "Kazakhstan"), + "lb_LU": Language("Lëtzebuergesch", "Luxembourgish", "Luxembourg"), + "lv_LV": Language("Latviešu", "Latvian", "Latvia"), + "ne_NP": Language("नेपाली", "Nepali", "Nepal"), + "nl_BE": Language("Nederlands", "Dutch", "Belgium"), + "nl_NL": Language("Nederlands", "Dutch", "Netherlands"), + "no_NO": Language("Norsk", "Norwegian", "Norway"), + "ml_IN": Language("മലയാളം", "Malayalam", "India"), + "pl_PL": Language("Polski", "Polish", "Poland"), + "pt_BR": Language("Português", "Portuguese", "Brazil"), + "pt_PT": Language("Português", "Portuguese", "Portugal"), + "ro_RO": Language("Română", "Romanian", "Romania"), + "ru_RU": Language("Русский", "Russian", "Russia"), + "sk_SK": Language("Slovenčina", "Slovak", "Slovakia"), + "sl_SI": Language("Slovenščina", "Slovenian", "Slovenia"), + "sr_RS": Language("srpski", "Serbian", "Serbia"), + "sv_SE": Language("Svenska", "Swedish", "Sweden"), + "sw_CD": Language("Kiswahili", "Swahili", "Democratic Republic of the Congo"), + "tr_TR": Language("Türkçe", "Turkish", "Turkey"), + "uk_UA": Language("украї́нська мо́ва", "Ukrainian", "Ukraine"), + "vi_VN": Language("Tiếng Việt", "Vietnamese", "Vietnam"), + "zh_CN": Language("简体中文", "Chinese", "China"), +} + +def main() -> None: + for lang_code, lang in sorted(_LANGUAGES.items()): + print("*", f"{lang.native}, {lang.country}", f"({lang.english}, {lang_code})") + + +if __name__ == "__main__": + main() diff --git a/piper/piper/script/generate_voices_md.py b/piper/piper/script/generate_voices_md.py new file mode 100644 index 0000000..9229ae4 --- /dev/null +++ b/piper/piper/script/generate_voices_md.py @@ -0,0 +1,158 @@ +#!/usr/bin/env python3 +import argparse +import logging +from collections import defaultdict +from dataclasses import dataclass +from pathlib import Path + + +@dataclass +class Voice: + lang_family: str + lang_code: str + dataset: str + quality: str + model_url: str + config_url: str + + +@dataclass +class Language: + native: str + english: str + country: str + + +_LANGUAGES = { + "ar_JO": Language("العربية", "Arabic", "Jordan"), + "ca_ES": Language("Català", "Catalan", "Spain"), + "cs_CZ": Language("Čeština", "Czech", "Czech Republic"), + "cy_GB": Language("Cymraeg", "Welsh", "Great Britain"), + "da_DK": Language("Dansk", "Danish", "Denmark"), + "de_DE": Language("Deutsch", "German", "Germany"), + "el_GR": Language("Ελληνικά", "Greek", "Greece"), + "en_GB": Language("English", "English", "Great Britain"), + "en_US": Language("English", "English", "United States"), + "es_ES": Language("Español", "Spanish", "Spain"), + "es_MX": Language("Español", "Spanish", "Mexico"), + "fa_IR": Language("فارسی", "Farsi", "Iran"), + "fi_FI": Language("Suomi", "Finnish", "Finland"), + "fr_FR": Language("Français", "French", "France"), + "is_IS": Language("íslenska", "Icelandic", "Iceland"), + "it_IT": Language("Italiano", "Italian", "Italy"), + "hu_HU": Language("Magyar", "Hungarian", "Hungary"), + "ka_GE": Language("ქართული ენა", "Georgian", "Georgia"), + "kk_KZ": Language("қазақша", "Kazakh", "Kazakhstan"), + "lb_LU": Language("Lëtzebuergesch", "Luxembourgish", "Luxembourg"), + "lv_LV": Language("Latviešu", "Latvian", "Latvia"), + "ne_NP": Language("नेपाली", "Nepali", "Nepal"), + "nl_BE": Language("Nederlands", "Dutch", "Belgium"), + "nl_NL": Language("Nederlands", "Dutch", "Netherlands"), + "no_NO": Language("Norsk", "Norwegian", "Norway"), + "ml_IN": Language("മലയാളം", "Malayalam", "India"), + "pl_PL": Language("Polski", "Polish", "Poland"), + "pt_BR": Language("Português", "Portuguese", "Brazil"), + "pt_PT": Language("Português", "Portuguese", "Portugal"), + "ro_RO": Language("Română", "Romanian", "Romania"), + "ru_RU": Language("Русский", "Russian", "Russia"), + "sk_SK": Language("Slovenčina", "Slovak", "Slovakia"), + "sl_SI": Language("Slovenščina", "Slovenian", "Slovenia"), + "sr_RS": Language("srpski", "Serbian", "Serbia"), + "sv_SE": Language("Svenska", "Swedish", "Sweden"), + "sw_CD": Language("Kiswahili", "Swahili", "Democratic Republic of the Congo"), + "tr_TR": Language("Türkçe", "Turkish", "Turkey"), + "uk_UA": Language("украї́нська мо́ва", "Ukrainian", "Ukraine"), + "vi_VN": Language("Tiếng Việt", "Vietnamese", "Vietnam"), + "zh_CN": Language("简体中文", "Chinese", "China"), +} + +_QUALITY = {"x_low": 0, "low": 1, "medium": 2, "high": 3} + + +_LOGGER = logging.getLogger() + + +def main() -> None: + parser = argparse.ArgumentParser() + parser.add_argument( + "--piper-voices", required=True, help="Path to piper-voices root" + ) + parser.add_argument( + "--model-url-format", + default="https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/{lang_family}/{lang_code}/{dataset}/{quality}/{lang_code}-{dataset}-{quality}.onnx?download=true", + help="URL format for models with lang_family, lang_code, dataset, and quality", + ) + parser.add_argument( + "--config-url-format", + default="https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/{lang_family}/{lang_code}/{dataset}/{quality}/{lang_code}-{dataset}-{quality}.onnx.json?download=true", + help="URL format for configs with lang_family, lang_code, dataset, and quality", + ) + args = parser.parse_args() + logging.basicConfig(level=logging.DEBUG) + + voices_by_lang_code = defaultdict(list) + piper_voices = Path(args.piper_voices) + for onnx_path in piper_voices.rglob("*.onnx"): + _LOGGER.debug(onnx_path) + parts = onnx_path.stem.split("-") + if len(parts) != 3: + _LOGGER.warning("Skipping %s", onnx_path) + continue + + lang_code, dataset, quality = parts + assert lang_code in _LANGUAGES, f"Missing {lang_code}" + lang_family = lang_code.split("_")[0] + model_url = args.model_url_format.format( + lang_family=lang_family, + lang_code=lang_code, + dataset=dataset, + quality=quality, + ) + config_url = args.config_url_format.format( + lang_family=lang_family, + lang_code=lang_code, + dataset=dataset, + quality=quality, + ) + + voices_by_lang_code[lang_code].append( + Voice( + lang_family=lang_family, + lang_code=lang_code, + dataset=dataset, + quality=quality, + model_url=model_url, + config_url=config_url, + ) + ) + + print("# Voices") + print("") + + for lang_code in sorted(voices_by_lang_code): + lang_info = _LANGUAGES[lang_code] + if lang_code.startswith("en_"): + print("*", lang_info.english, f"({lang_code})") + else: + print("*", lang_info.english, f"(`{lang_code}`, {lang_info.native})") + + last_dataset = None + for voice in sorted( + voices_by_lang_code[lang_code], + key=lambda v: (v.dataset, _QUALITY[v.quality]), + ): + if voice.dataset != last_dataset: + print(" *", voice.dataset) + last_dataset = voice.dataset + + print( + " *", + voice.quality, + "-", + f"[[model]({voice.model_url})]", + f"[[config]({voice.config_url}.json)]", + ) + + +if __name__ == "__main__": + main() diff --git a/piper/piper/src/benchmark/benchmark_generator.py b/piper/piper/src/benchmark/benchmark_generator.py new file mode 100644 index 0000000..4dcb388 --- /dev/null +++ b/piper/piper/src/benchmark/benchmark_generator.py @@ -0,0 +1,96 @@ +#!/usr/bin/env python3 +import argparse +import logging +import json +import time +import statistics +import sys + +import torch + +_LOGGER = logging.getLogger(__name__) + + +def main() -> None: + parser = argparse.ArgumentParser() + parser.add_argument( + "-m", "--model", required=True, help="Path to generator file (.pt)" + ) + parser.add_argument("-c", "--config", help="Path to model config file (.json)") + args = parser.parse_args() + logging.basicConfig(level=logging.DEBUG) + + if not args.config: + args.config = f"{args.model}.json" + + with open(args.config, "r", encoding="utf-8") as config_file: + config = json.load(config_file) + + sample_rate = config["audio"]["sample_rate"] + utterances = [json.loads(line) for line in sys.stdin] + + start_time = time.monotonic_ns() + model = torch.load(args.model) + end_time = time.monotonic_ns() + + model.eval() + + load_sec = (end_time - start_time) / 1e9 + synthesize_rtf = [] + for utterance in utterances: + phoneme_ids = utterance["phoneme_ids"] + speaker_id = utterance.get("speaker_id") + synthesize_rtf.append( + synthesize( + model, + phoneme_ids, + speaker_id, + sample_rate, + ) + ) + + json.dump( + { + "load_sec": load_sec, + "rtf_mean": statistics.mean(synthesize_rtf), + "rtf_stdev": statistics.stdev(synthesize_rtf), + "synthesize_rtf": synthesize_rtf, + }, + sys.stdout, + ) + + +def synthesize(model, phoneme_ids, speaker_id, sample_rate) -> float: + text = torch.LongTensor(phoneme_ids).unsqueeze(0) + text_lengths = torch.LongTensor([len(phoneme_ids)]) + sid = torch.LongTensor([speaker_id]) if speaker_id is not None else None + + start_time = time.monotonic_ns() + audio = ( + model( + text, + text_lengths, + sid, + )[0] + .detach() + .numpy() + .squeeze() + ) + end_time = time.monotonic_ns() + + audio_sec = len(audio) / sample_rate + infer_sec = (end_time - start_time) / 1e9 + rtf = infer_sec / audio_sec + + _LOGGER.debug( + "Real-time factor: %s (infer=%s sec, audio=%s sec)", + rtf, + infer_sec, + audio_sec, + ) + + return rtf + + +if __name__ == "__main__": + main() diff --git a/piper/piper/src/benchmark/benchmark_onnx.py b/piper/piper/src/benchmark/benchmark_onnx.py new file mode 100644 index 0000000..3fa0c2b --- /dev/null +++ b/piper/piper/src/benchmark/benchmark_onnx.py @@ -0,0 +1,125 @@ +#!/usr/bin/env python3 +import argparse +import logging +import json +import time +import statistics +import sys + +import onnxruntime +import numpy as np + +_NOISE_SCALE = 0.667 +_LENGTH_SCALE = 1.0 +_NOISE_W = 0.8 + +_LOGGER = logging.getLogger(__name__) + + +def main() -> None: + parser = argparse.ArgumentParser() + parser.add_argument( + "-m", "--model", required=True, help="Path to Onnx model file (.onnx)" + ) + parser.add_argument("-c", "--config", help="Path to model config file (.json)") + args = parser.parse_args() + logging.basicConfig(level=logging.DEBUG) + + if not args.config: + args.config = f"{args.model}.json" + + with open(args.config, "r", encoding="utf-8") as config_file: + config = json.load(config_file) + + sample_rate = config["audio"]["sample_rate"] + utterances = [json.loads(line) for line in sys.stdin] + + start_time = time.monotonic_ns() + + session_options = onnxruntime.SessionOptions() + session_options.graph_optimization_level = ( + onnxruntime.GraphOptimizationLevel.ORT_DISABLE_ALL + ) + # session_options.enable_cpu_mem_arena = False + # session_options.enable_mem_pattern = False + session_options.enable_mem_reuse = False + # session_options.enable_profiling = False + # session_options.execution_mode = onnxruntime.ExecutionMode.ORT_PARALLEL + # session_options.execution_order = onnxruntime.ExecutionOrder.PRIORITY_BASED + + session = onnxruntime.InferenceSession( + args.model, + sess_options=session_options, + ) + # session.intra_op_num_threads = 1 + # session.inter_op_num_threads = 1 + + end_time = time.monotonic_ns() + + load_sec = (end_time - start_time) / 1e9 + synthesize_rtf = [] + for utterance in utterances: + phoneme_ids = utterance["phoneme_ids"] + speaker_id = utterance.get("speaker_id") + synthesize_rtf.append( + synthesize( + session, + phoneme_ids, + speaker_id, + sample_rate, + ) + ) + + json.dump( + { + "load_sec": load_sec, + "rtf_mean": statistics.mean(synthesize_rtf), + "rtf_stdev": statistics.stdev(synthesize_rtf), + "rtfs": synthesize_rtf, + }, + sys.stdout, + ) + + +def synthesize(session, phoneme_ids, speaker_id, sample_rate) -> float: + phoneme_ids_array = np.expand_dims(np.array(phoneme_ids, dtype=np.int64), 0) + phoneme_ids_lengths = np.array([phoneme_ids_array.shape[1]], dtype=np.int64) + scales = np.array( + [_NOISE_SCALE, _LENGTH_SCALE, _NOISE_W], + dtype=np.float32, + ) + + sid = None + + if speaker_id is not None: + sid = np.array([speaker_id], dtype=np.int64) + + # Synthesize through Onnx + start_time = time.monotonic_ns() + audio = session.run( + None, + { + "input": phoneme_ids_array, + "input_lengths": phoneme_ids_lengths, + "scales": scales, + "sid": sid, + }, + )[0].squeeze() + end_time = time.monotonic_ns() + + audio_sec = len(audio) / sample_rate + infer_sec = (end_time - start_time) / 1e9 + rtf = infer_sec / audio_sec + + _LOGGER.debug( + "Real-time factor: %s (infer=%s sec, audio=%s sec)", + rtf, + infer_sec, + audio_sec, + ) + + return rtf + + +if __name__ == "__main__": + main() diff --git a/piper/piper/src/benchmark/benchmark_torchscript.py b/piper/piper/src/benchmark/benchmark_torchscript.py new file mode 100644 index 0000000..d4bee21 --- /dev/null +++ b/piper/piper/src/benchmark/benchmark_torchscript.py @@ -0,0 +1,103 @@ +#!/usr/bin/env python3 +import argparse +import logging +import json +import time +import statistics +import sys + +import torch + +_NOISE_SCALE = 0.667 +_LENGTH_SCALE = 1.0 +_NOISE_W = 0.8 + +_LOGGER = logging.getLogger(__name__) + + +def main() -> None: + parser = argparse.ArgumentParser() + parser.add_argument( + "-m", "--model", required=True, help="Path to Torchscript file (.ts)" + ) + parser.add_argument("-c", "--config", help="Path to model config file (.json)") + args = parser.parse_args() + logging.basicConfig(level=logging.DEBUG) + + if not args.config: + args.config = f"{args.model}.json" + + with open(args.config, "r", encoding="utf-8") as config_file: + config = json.load(config_file) + + sample_rate = config["audio"]["sample_rate"] + utterances = [json.loads(line) for line in sys.stdin] + + start_time = time.monotonic_ns() + model = torch.jit.load(args.model) + end_time = time.monotonic_ns() + + model.eval() + + load_sec = (end_time - start_time) / 1e9 + synthesize_rtf = [] + for utterance in utterances: + phoneme_ids = utterance["phoneme_ids"] + speaker_id = utterance.get("speaker_id") + synthesize_rtf.append( + synthesize( + model, + phoneme_ids, + speaker_id, + sample_rate, + ) + ) + + json.dump( + { + "load_sec": load_sec, + "rtf_mean": statistics.mean(synthesize_rtf), + "rtf_stdev": statistics.stdev(synthesize_rtf), + "synthesize_rtf": synthesize_rtf, + }, + sys.stdout, + ) + + +def synthesize(model, phoneme_ids, speaker_id, sample_rate) -> float: + text = torch.LongTensor(phoneme_ids).unsqueeze(0) + text_lengths = torch.LongTensor([len(phoneme_ids)]) + sid = torch.LongTensor([speaker_id]) if speaker_id is not None else None + + start_time = time.monotonic_ns() + audio = ( + model( + text, + text_lengths, + sid, + torch.FloatTensor([_NOISE_SCALE]), + torch.FloatTensor([_LENGTH_SCALE]), + torch.FloatTensor([_NOISE_W]), + )[0] + .detach() + .numpy() + .squeeze() + ) + end_time = time.monotonic_ns() + + audio_sec = len(audio) / sample_rate + infer_sec = (end_time - start_time) / 1e9 + rtf = infer_sec / audio_sec + + _LOGGER.debug( + "Real-time factor: %s (infer=%s sec, audio=%s sec)", + rtf, + infer_sec, + audio_sec, + ) + + return rtf + + +if __name__ == "__main__": + main() diff --git a/piper/piper/src/benchmark/requirements.txt b/piper/piper/src/benchmark/requirements.txt new file mode 100644 index 0000000..26f8d83 --- /dev/null +++ b/piper/piper/src/benchmark/requirements.txt @@ -0,0 +1,2 @@ +onnxruntime~=1.11.0 +torch~=1.11.0 diff --git a/piper/piper/src/cpp/json.hpp b/piper/piper/src/cpp/json.hpp new file mode 100644 index 0000000..4d1a37a --- /dev/null +++ b/piper/piper/src/cpp/json.hpp @@ -0,0 +1,24596 @@ +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.11.2 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013-2022 Niels Lohmann +// SPDX-License-Identifier: MIT + +/****************************************************************************\ + * Note on documentation: The source files contain links to the online * + * documentation of the public API at https://json.nlohmann.me. This URL * + * contains the most recent documentation and should also be applicable to * + * previous versions; documentation for deprecated functions is not * + * removed, but marked deprecated. See "Generate documentation" section in * + * file docs/README.md. * +\****************************************************************************/ + +#ifndef INCLUDE_NLOHMANN_JSON_HPP_ +#define INCLUDE_NLOHMANN_JSON_HPP_ + +#include // all_of, find, for_each +#include // nullptr_t, ptrdiff_t, size_t +#include // hash, less +#include // initializer_list +#ifndef JSON_NO_IO + #include // istream, ostream +#endif // JSON_NO_IO +#include // random_access_iterator_tag +#include // unique_ptr +#include // accumulate +#include // string, stoi, to_string +#include // declval, forward, move, pair, swap +#include // vector + +// #include +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.11.2 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013-2022 Niels Lohmann +// SPDX-License-Identifier: MIT + + + +#include + +// #include +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.11.2 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013-2022 Niels Lohmann +// SPDX-License-Identifier: MIT + + + +// This file contains all macro definitions affecting or depending on the ABI + +#ifndef JSON_SKIP_LIBRARY_VERSION_CHECK + #if defined(NLOHMANN_JSON_VERSION_MAJOR) && defined(NLOHMANN_JSON_VERSION_MINOR) && defined(NLOHMANN_JSON_VERSION_PATCH) + #if NLOHMANN_JSON_VERSION_MAJOR != 3 || NLOHMANN_JSON_VERSION_MINOR != 11 || NLOHMANN_JSON_VERSION_PATCH != 2 + #warning "Already included a different version of the library!" + #endif + #endif +#endif + +#define NLOHMANN_JSON_VERSION_MAJOR 3 // NOLINT(modernize-macro-to-enum) +#define NLOHMANN_JSON_VERSION_MINOR 11 // NOLINT(modernize-macro-to-enum) +#define NLOHMANN_JSON_VERSION_PATCH 2 // NOLINT(modernize-macro-to-enum) + +#ifndef JSON_DIAGNOSTICS + #define JSON_DIAGNOSTICS 0 +#endif + +#ifndef JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON + #define JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON 0 +#endif + +#if JSON_DIAGNOSTICS + #define NLOHMANN_JSON_ABI_TAG_DIAGNOSTICS _diag +#else + #define NLOHMANN_JSON_ABI_TAG_DIAGNOSTICS +#endif + +#if JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON + #define NLOHMANN_JSON_ABI_TAG_LEGACY_DISCARDED_VALUE_COMPARISON _ldvcmp +#else + #define NLOHMANN_JSON_ABI_TAG_LEGACY_DISCARDED_VALUE_COMPARISON +#endif + +#ifndef NLOHMANN_JSON_NAMESPACE_NO_VERSION + #define NLOHMANN_JSON_NAMESPACE_NO_VERSION 0 +#endif + +// Construct the namespace ABI tags component +#define NLOHMANN_JSON_ABI_TAGS_CONCAT_EX(a, b) json_abi ## a ## b +#define NLOHMANN_JSON_ABI_TAGS_CONCAT(a, b) \ + NLOHMANN_JSON_ABI_TAGS_CONCAT_EX(a, b) + +#define NLOHMANN_JSON_ABI_TAGS \ + NLOHMANN_JSON_ABI_TAGS_CONCAT( \ + NLOHMANN_JSON_ABI_TAG_DIAGNOSTICS, \ + NLOHMANN_JSON_ABI_TAG_LEGACY_DISCARDED_VALUE_COMPARISON) + +// Construct the namespace version component +#define NLOHMANN_JSON_NAMESPACE_VERSION_CONCAT_EX(major, minor, patch) \ + _v ## major ## _ ## minor ## _ ## patch +#define NLOHMANN_JSON_NAMESPACE_VERSION_CONCAT(major, minor, patch) \ + NLOHMANN_JSON_NAMESPACE_VERSION_CONCAT_EX(major, minor, patch) + +#if NLOHMANN_JSON_NAMESPACE_NO_VERSION +#define NLOHMANN_JSON_NAMESPACE_VERSION +#else +#define NLOHMANN_JSON_NAMESPACE_VERSION \ + NLOHMANN_JSON_NAMESPACE_VERSION_CONCAT(NLOHMANN_JSON_VERSION_MAJOR, \ + NLOHMANN_JSON_VERSION_MINOR, \ + NLOHMANN_JSON_VERSION_PATCH) +#endif + +// Combine namespace components +#define NLOHMANN_JSON_NAMESPACE_CONCAT_EX(a, b) a ## b +#define NLOHMANN_JSON_NAMESPACE_CONCAT(a, b) \ + NLOHMANN_JSON_NAMESPACE_CONCAT_EX(a, b) + +#ifndef NLOHMANN_JSON_NAMESPACE +#define NLOHMANN_JSON_NAMESPACE \ + nlohmann::NLOHMANN_JSON_NAMESPACE_CONCAT( \ + NLOHMANN_JSON_ABI_TAGS, \ + NLOHMANN_JSON_NAMESPACE_VERSION) +#endif + +#ifndef NLOHMANN_JSON_NAMESPACE_BEGIN +#define NLOHMANN_JSON_NAMESPACE_BEGIN \ + namespace nlohmann \ + { \ + inline namespace NLOHMANN_JSON_NAMESPACE_CONCAT( \ + NLOHMANN_JSON_ABI_TAGS, \ + NLOHMANN_JSON_NAMESPACE_VERSION) \ + { +#endif + +#ifndef NLOHMANN_JSON_NAMESPACE_END +#define NLOHMANN_JSON_NAMESPACE_END \ + } /* namespace (inline namespace) NOLINT(readability/namespace) */ \ + } // namespace nlohmann +#endif + +// #include +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.11.2 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013-2022 Niels Lohmann +// SPDX-License-Identifier: MIT + + + +#include // transform +#include // array +#include // forward_list +#include // inserter, front_inserter, end +#include // map +#include // string +#include // tuple, make_tuple +#include // is_arithmetic, is_same, is_enum, underlying_type, is_convertible +#include // unordered_map +#include // pair, declval +#include // valarray + +// #include +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.11.2 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013-2022 Niels Lohmann +// SPDX-License-Identifier: MIT + + + +#include // nullptr_t +#include // exception +#include // runtime_error +#include // to_string +#include // vector + +// #include +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.11.2 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013-2022 Niels Lohmann +// SPDX-License-Identifier: MIT + + + +#include // array +#include // size_t +#include // uint8_t +#include // string + +// #include +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.11.2 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013-2022 Niels Lohmann +// SPDX-License-Identifier: MIT + + + +#include // declval, pair +// #include +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.11.2 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013-2022 Niels Lohmann +// SPDX-License-Identifier: MIT + + + +#include + +// #include +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.11.2 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013-2022 Niels Lohmann +// SPDX-License-Identifier: MIT + + + +// #include + + +NLOHMANN_JSON_NAMESPACE_BEGIN +namespace detail +{ + +template struct make_void +{ + using type = void; +}; +template using void_t = typename make_void::type; + +} // namespace detail +NLOHMANN_JSON_NAMESPACE_END + + +NLOHMANN_JSON_NAMESPACE_BEGIN +namespace detail +{ + +// https://en.cppreference.com/w/cpp/experimental/is_detected +struct nonesuch +{ + nonesuch() = delete; + ~nonesuch() = delete; + nonesuch(nonesuch const&) = delete; + nonesuch(nonesuch const&&) = delete; + void operator=(nonesuch const&) = delete; + void operator=(nonesuch&&) = delete; +}; + +template class Op, + class... Args> +struct detector +{ + using value_t = std::false_type; + using type = Default; +}; + +template class Op, class... Args> +struct detector>, Op, Args...> +{ + using value_t = std::true_type; + using type = Op; +}; + +template class Op, class... Args> +using is_detected = typename detector::value_t; + +template class Op, class... Args> +struct is_detected_lazy : is_detected { }; + +template class Op, class... Args> +using detected_t = typename detector::type; + +template class Op, class... Args> +using detected_or = detector; + +template class Op, class... Args> +using detected_or_t = typename detected_or::type; + +template class Op, class... Args> +using is_detected_exact = std::is_same>; + +template class Op, class... Args> +using is_detected_convertible = + std::is_convertible, To>; + +} // namespace detail +NLOHMANN_JSON_NAMESPACE_END + +// #include + + +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.11.2 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013-2022 Niels Lohmann +// SPDX-FileCopyrightText: 2016-2021 Evan Nemerson +// SPDX-License-Identifier: MIT + +/* Hedley - https://nemequ.github.io/hedley + * Created by Evan Nemerson + */ + +#if !defined(JSON_HEDLEY_VERSION) || (JSON_HEDLEY_VERSION < 15) +#if defined(JSON_HEDLEY_VERSION) + #undef JSON_HEDLEY_VERSION +#endif +#define JSON_HEDLEY_VERSION 15 + +#if defined(JSON_HEDLEY_STRINGIFY_EX) + #undef JSON_HEDLEY_STRINGIFY_EX +#endif +#define JSON_HEDLEY_STRINGIFY_EX(x) #x + +#if defined(JSON_HEDLEY_STRINGIFY) + #undef JSON_HEDLEY_STRINGIFY +#endif +#define JSON_HEDLEY_STRINGIFY(x) JSON_HEDLEY_STRINGIFY_EX(x) + +#if defined(JSON_HEDLEY_CONCAT_EX) + #undef JSON_HEDLEY_CONCAT_EX +#endif +#define JSON_HEDLEY_CONCAT_EX(a,b) a##b + +#if defined(JSON_HEDLEY_CONCAT) + #undef JSON_HEDLEY_CONCAT +#endif +#define JSON_HEDLEY_CONCAT(a,b) JSON_HEDLEY_CONCAT_EX(a,b) + +#if defined(JSON_HEDLEY_CONCAT3_EX) + #undef JSON_HEDLEY_CONCAT3_EX +#endif +#define JSON_HEDLEY_CONCAT3_EX(a,b,c) a##b##c + +#if defined(JSON_HEDLEY_CONCAT3) + #undef JSON_HEDLEY_CONCAT3 +#endif +#define JSON_HEDLEY_CONCAT3(a,b,c) JSON_HEDLEY_CONCAT3_EX(a,b,c) + +#if defined(JSON_HEDLEY_VERSION_ENCODE) + #undef JSON_HEDLEY_VERSION_ENCODE +#endif +#define JSON_HEDLEY_VERSION_ENCODE(major,minor,revision) (((major) * 1000000) + ((minor) * 1000) + (revision)) + +#if defined(JSON_HEDLEY_VERSION_DECODE_MAJOR) + #undef JSON_HEDLEY_VERSION_DECODE_MAJOR +#endif +#define JSON_HEDLEY_VERSION_DECODE_MAJOR(version) ((version) / 1000000) + +#if defined(JSON_HEDLEY_VERSION_DECODE_MINOR) + #undef JSON_HEDLEY_VERSION_DECODE_MINOR +#endif +#define JSON_HEDLEY_VERSION_DECODE_MINOR(version) (((version) % 1000000) / 1000) + +#if defined(JSON_HEDLEY_VERSION_DECODE_REVISION) + #undef JSON_HEDLEY_VERSION_DECODE_REVISION +#endif +#define JSON_HEDLEY_VERSION_DECODE_REVISION(version) ((version) % 1000) + +#if defined(JSON_HEDLEY_GNUC_VERSION) + #undef JSON_HEDLEY_GNUC_VERSION +#endif +#if defined(__GNUC__) && defined(__GNUC_PATCHLEVEL__) + #define JSON_HEDLEY_GNUC_VERSION JSON_HEDLEY_VERSION_ENCODE(__GNUC__, __GNUC_MINOR__, __GNUC_PATCHLEVEL__) +#elif defined(__GNUC__) + #define JSON_HEDLEY_GNUC_VERSION JSON_HEDLEY_VERSION_ENCODE(__GNUC__, __GNUC_MINOR__, 0) +#endif + +#if defined(JSON_HEDLEY_GNUC_VERSION_CHECK) + #undef JSON_HEDLEY_GNUC_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_GNUC_VERSION) + #define JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_GNUC_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_MSVC_VERSION) + #undef JSON_HEDLEY_MSVC_VERSION +#endif +#if defined(_MSC_FULL_VER) && (_MSC_FULL_VER >= 140000000) && !defined(__ICL) + #define JSON_HEDLEY_MSVC_VERSION JSON_HEDLEY_VERSION_ENCODE(_MSC_FULL_VER / 10000000, (_MSC_FULL_VER % 10000000) / 100000, (_MSC_FULL_VER % 100000) / 100) +#elif defined(_MSC_FULL_VER) && !defined(__ICL) + #define JSON_HEDLEY_MSVC_VERSION JSON_HEDLEY_VERSION_ENCODE(_MSC_FULL_VER / 1000000, (_MSC_FULL_VER % 1000000) / 10000, (_MSC_FULL_VER % 10000) / 10) +#elif defined(_MSC_VER) && !defined(__ICL) + #define JSON_HEDLEY_MSVC_VERSION JSON_HEDLEY_VERSION_ENCODE(_MSC_VER / 100, _MSC_VER % 100, 0) +#endif + +#if defined(JSON_HEDLEY_MSVC_VERSION_CHECK) + #undef JSON_HEDLEY_MSVC_VERSION_CHECK +#endif +#if !defined(JSON_HEDLEY_MSVC_VERSION) + #define JSON_HEDLEY_MSVC_VERSION_CHECK(major,minor,patch) (0) +#elif defined(_MSC_VER) && (_MSC_VER >= 1400) + #define JSON_HEDLEY_MSVC_VERSION_CHECK(major,minor,patch) (_MSC_FULL_VER >= ((major * 10000000) + (minor * 100000) + (patch))) +#elif defined(_MSC_VER) && (_MSC_VER >= 1200) + #define JSON_HEDLEY_MSVC_VERSION_CHECK(major,minor,patch) (_MSC_FULL_VER >= ((major * 1000000) + (minor * 10000) + (patch))) +#else + #define JSON_HEDLEY_MSVC_VERSION_CHECK(major,minor,patch) (_MSC_VER >= ((major * 100) + (minor))) +#endif + +#if defined(JSON_HEDLEY_INTEL_VERSION) + #undef JSON_HEDLEY_INTEL_VERSION +#endif +#if defined(__INTEL_COMPILER) && defined(__INTEL_COMPILER_UPDATE) && !defined(__ICL) + #define JSON_HEDLEY_INTEL_VERSION JSON_HEDLEY_VERSION_ENCODE(__INTEL_COMPILER / 100, __INTEL_COMPILER % 100, __INTEL_COMPILER_UPDATE) +#elif defined(__INTEL_COMPILER) && !defined(__ICL) + #define JSON_HEDLEY_INTEL_VERSION JSON_HEDLEY_VERSION_ENCODE(__INTEL_COMPILER / 100, __INTEL_COMPILER % 100, 0) +#endif + +#if defined(JSON_HEDLEY_INTEL_VERSION_CHECK) + #undef JSON_HEDLEY_INTEL_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_INTEL_VERSION) + #define JSON_HEDLEY_INTEL_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_INTEL_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_INTEL_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_INTEL_CL_VERSION) + #undef JSON_HEDLEY_INTEL_CL_VERSION +#endif +#if defined(__INTEL_COMPILER) && defined(__INTEL_COMPILER_UPDATE) && defined(__ICL) + #define JSON_HEDLEY_INTEL_CL_VERSION JSON_HEDLEY_VERSION_ENCODE(__INTEL_COMPILER, __INTEL_COMPILER_UPDATE, 0) +#endif + +#if defined(JSON_HEDLEY_INTEL_CL_VERSION_CHECK) + #undef JSON_HEDLEY_INTEL_CL_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_INTEL_CL_VERSION) + #define JSON_HEDLEY_INTEL_CL_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_INTEL_CL_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_INTEL_CL_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_PGI_VERSION) + #undef JSON_HEDLEY_PGI_VERSION +#endif +#if defined(__PGI) && defined(__PGIC__) && defined(__PGIC_MINOR__) && defined(__PGIC_PATCHLEVEL__) + #define JSON_HEDLEY_PGI_VERSION JSON_HEDLEY_VERSION_ENCODE(__PGIC__, __PGIC_MINOR__, __PGIC_PATCHLEVEL__) +#endif + +#if defined(JSON_HEDLEY_PGI_VERSION_CHECK) + #undef JSON_HEDLEY_PGI_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_PGI_VERSION) + #define JSON_HEDLEY_PGI_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_PGI_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_PGI_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_SUNPRO_VERSION) + #undef JSON_HEDLEY_SUNPRO_VERSION +#endif +#if defined(__SUNPRO_C) && (__SUNPRO_C > 0x1000) + #define JSON_HEDLEY_SUNPRO_VERSION JSON_HEDLEY_VERSION_ENCODE((((__SUNPRO_C >> 16) & 0xf) * 10) + ((__SUNPRO_C >> 12) & 0xf), (((__SUNPRO_C >> 8) & 0xf) * 10) + ((__SUNPRO_C >> 4) & 0xf), (__SUNPRO_C & 0xf) * 10) +#elif defined(__SUNPRO_C) + #define JSON_HEDLEY_SUNPRO_VERSION JSON_HEDLEY_VERSION_ENCODE((__SUNPRO_C >> 8) & 0xf, (__SUNPRO_C >> 4) & 0xf, (__SUNPRO_C) & 0xf) +#elif defined(__SUNPRO_CC) && (__SUNPRO_CC > 0x1000) + #define JSON_HEDLEY_SUNPRO_VERSION JSON_HEDLEY_VERSION_ENCODE((((__SUNPRO_CC >> 16) & 0xf) * 10) + ((__SUNPRO_CC >> 12) & 0xf), (((__SUNPRO_CC >> 8) & 0xf) * 10) + ((__SUNPRO_CC >> 4) & 0xf), (__SUNPRO_CC & 0xf) * 10) +#elif defined(__SUNPRO_CC) + #define JSON_HEDLEY_SUNPRO_VERSION JSON_HEDLEY_VERSION_ENCODE((__SUNPRO_CC >> 8) & 0xf, (__SUNPRO_CC >> 4) & 0xf, (__SUNPRO_CC) & 0xf) +#endif + +#if defined(JSON_HEDLEY_SUNPRO_VERSION_CHECK) + #undef JSON_HEDLEY_SUNPRO_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_SUNPRO_VERSION) + #define JSON_HEDLEY_SUNPRO_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_SUNPRO_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_SUNPRO_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_EMSCRIPTEN_VERSION) + #undef JSON_HEDLEY_EMSCRIPTEN_VERSION +#endif +#if defined(__EMSCRIPTEN__) + #define JSON_HEDLEY_EMSCRIPTEN_VERSION JSON_HEDLEY_VERSION_ENCODE(__EMSCRIPTEN_major__, __EMSCRIPTEN_minor__, __EMSCRIPTEN_tiny__) +#endif + +#if defined(JSON_HEDLEY_EMSCRIPTEN_VERSION_CHECK) + #undef JSON_HEDLEY_EMSCRIPTEN_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_EMSCRIPTEN_VERSION) + #define JSON_HEDLEY_EMSCRIPTEN_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_EMSCRIPTEN_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_EMSCRIPTEN_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_ARM_VERSION) + #undef JSON_HEDLEY_ARM_VERSION +#endif +#if defined(__CC_ARM) && defined(__ARMCOMPILER_VERSION) + #define JSON_HEDLEY_ARM_VERSION JSON_HEDLEY_VERSION_ENCODE(__ARMCOMPILER_VERSION / 1000000, (__ARMCOMPILER_VERSION % 1000000) / 10000, (__ARMCOMPILER_VERSION % 10000) / 100) +#elif defined(__CC_ARM) && defined(__ARMCC_VERSION) + #define JSON_HEDLEY_ARM_VERSION JSON_HEDLEY_VERSION_ENCODE(__ARMCC_VERSION / 1000000, (__ARMCC_VERSION % 1000000) / 10000, (__ARMCC_VERSION % 10000) / 100) +#endif + +#if defined(JSON_HEDLEY_ARM_VERSION_CHECK) + #undef JSON_HEDLEY_ARM_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_ARM_VERSION) + #define JSON_HEDLEY_ARM_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_ARM_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_ARM_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_IBM_VERSION) + #undef JSON_HEDLEY_IBM_VERSION +#endif +#if defined(__ibmxl__) + #define JSON_HEDLEY_IBM_VERSION JSON_HEDLEY_VERSION_ENCODE(__ibmxl_version__, __ibmxl_release__, __ibmxl_modification__) +#elif defined(__xlC__) && defined(__xlC_ver__) + #define JSON_HEDLEY_IBM_VERSION JSON_HEDLEY_VERSION_ENCODE(__xlC__ >> 8, __xlC__ & 0xff, (__xlC_ver__ >> 8) & 0xff) +#elif defined(__xlC__) + #define JSON_HEDLEY_IBM_VERSION JSON_HEDLEY_VERSION_ENCODE(__xlC__ >> 8, __xlC__ & 0xff, 0) +#endif + +#if defined(JSON_HEDLEY_IBM_VERSION_CHECK) + #undef JSON_HEDLEY_IBM_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_IBM_VERSION) + #define JSON_HEDLEY_IBM_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_IBM_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_IBM_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_TI_VERSION) + #undef JSON_HEDLEY_TI_VERSION +#endif +#if \ + defined(__TI_COMPILER_VERSION__) && \ + ( \ + defined(__TMS470__) || defined(__TI_ARM__) || \ + defined(__MSP430__) || \ + defined(__TMS320C2000__) \ + ) +#if (__TI_COMPILER_VERSION__ >= 16000000) + #define JSON_HEDLEY_TI_VERSION JSON_HEDLEY_VERSION_ENCODE(__TI_COMPILER_VERSION__ / 1000000, (__TI_COMPILER_VERSION__ % 1000000) / 1000, (__TI_COMPILER_VERSION__ % 1000)) +#endif +#endif + +#if defined(JSON_HEDLEY_TI_VERSION_CHECK) + #undef JSON_HEDLEY_TI_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_TI_VERSION) + #define JSON_HEDLEY_TI_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_TI_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_TI_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_TI_CL2000_VERSION) + #undef JSON_HEDLEY_TI_CL2000_VERSION +#endif +#if defined(__TI_COMPILER_VERSION__) && defined(__TMS320C2000__) + #define JSON_HEDLEY_TI_CL2000_VERSION JSON_HEDLEY_VERSION_ENCODE(__TI_COMPILER_VERSION__ / 1000000, (__TI_COMPILER_VERSION__ % 1000000) / 1000, (__TI_COMPILER_VERSION__ % 1000)) +#endif + +#if defined(JSON_HEDLEY_TI_CL2000_VERSION_CHECK) + #undef JSON_HEDLEY_TI_CL2000_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_TI_CL2000_VERSION) + #define JSON_HEDLEY_TI_CL2000_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_TI_CL2000_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_TI_CL2000_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_TI_CL430_VERSION) + #undef JSON_HEDLEY_TI_CL430_VERSION +#endif +#if defined(__TI_COMPILER_VERSION__) && defined(__MSP430__) + #define JSON_HEDLEY_TI_CL430_VERSION JSON_HEDLEY_VERSION_ENCODE(__TI_COMPILER_VERSION__ / 1000000, (__TI_COMPILER_VERSION__ % 1000000) / 1000, (__TI_COMPILER_VERSION__ % 1000)) +#endif + +#if defined(JSON_HEDLEY_TI_CL430_VERSION_CHECK) + #undef JSON_HEDLEY_TI_CL430_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_TI_CL430_VERSION) + #define JSON_HEDLEY_TI_CL430_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_TI_CL430_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_TI_CL430_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_TI_ARMCL_VERSION) + #undef JSON_HEDLEY_TI_ARMCL_VERSION +#endif +#if defined(__TI_COMPILER_VERSION__) && (defined(__TMS470__) || defined(__TI_ARM__)) + #define JSON_HEDLEY_TI_ARMCL_VERSION JSON_HEDLEY_VERSION_ENCODE(__TI_COMPILER_VERSION__ / 1000000, (__TI_COMPILER_VERSION__ % 1000000) / 1000, (__TI_COMPILER_VERSION__ % 1000)) +#endif + +#if defined(JSON_HEDLEY_TI_ARMCL_VERSION_CHECK) + #undef JSON_HEDLEY_TI_ARMCL_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_TI_ARMCL_VERSION) + #define JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_TI_ARMCL_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_TI_CL6X_VERSION) + #undef JSON_HEDLEY_TI_CL6X_VERSION +#endif +#if defined(__TI_COMPILER_VERSION__) && defined(__TMS320C6X__) + #define JSON_HEDLEY_TI_CL6X_VERSION JSON_HEDLEY_VERSION_ENCODE(__TI_COMPILER_VERSION__ / 1000000, (__TI_COMPILER_VERSION__ % 1000000) / 1000, (__TI_COMPILER_VERSION__ % 1000)) +#endif + +#if defined(JSON_HEDLEY_TI_CL6X_VERSION_CHECK) + #undef JSON_HEDLEY_TI_CL6X_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_TI_CL6X_VERSION) + #define JSON_HEDLEY_TI_CL6X_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_TI_CL6X_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_TI_CL6X_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_TI_CL7X_VERSION) + #undef JSON_HEDLEY_TI_CL7X_VERSION +#endif +#if defined(__TI_COMPILER_VERSION__) && defined(__C7000__) + #define JSON_HEDLEY_TI_CL7X_VERSION JSON_HEDLEY_VERSION_ENCODE(__TI_COMPILER_VERSION__ / 1000000, (__TI_COMPILER_VERSION__ % 1000000) / 1000, (__TI_COMPILER_VERSION__ % 1000)) +#endif + +#if defined(JSON_HEDLEY_TI_CL7X_VERSION_CHECK) + #undef JSON_HEDLEY_TI_CL7X_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_TI_CL7X_VERSION) + #define JSON_HEDLEY_TI_CL7X_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_TI_CL7X_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_TI_CL7X_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_TI_CLPRU_VERSION) + #undef JSON_HEDLEY_TI_CLPRU_VERSION +#endif +#if defined(__TI_COMPILER_VERSION__) && defined(__PRU__) + #define JSON_HEDLEY_TI_CLPRU_VERSION JSON_HEDLEY_VERSION_ENCODE(__TI_COMPILER_VERSION__ / 1000000, (__TI_COMPILER_VERSION__ % 1000000) / 1000, (__TI_COMPILER_VERSION__ % 1000)) +#endif + +#if defined(JSON_HEDLEY_TI_CLPRU_VERSION_CHECK) + #undef JSON_HEDLEY_TI_CLPRU_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_TI_CLPRU_VERSION) + #define JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_TI_CLPRU_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_CRAY_VERSION) + #undef JSON_HEDLEY_CRAY_VERSION +#endif +#if defined(_CRAYC) + #if defined(_RELEASE_PATCHLEVEL) + #define JSON_HEDLEY_CRAY_VERSION JSON_HEDLEY_VERSION_ENCODE(_RELEASE_MAJOR, _RELEASE_MINOR, _RELEASE_PATCHLEVEL) + #else + #define JSON_HEDLEY_CRAY_VERSION JSON_HEDLEY_VERSION_ENCODE(_RELEASE_MAJOR, _RELEASE_MINOR, 0) + #endif +#endif + +#if defined(JSON_HEDLEY_CRAY_VERSION_CHECK) + #undef JSON_HEDLEY_CRAY_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_CRAY_VERSION) + #define JSON_HEDLEY_CRAY_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_CRAY_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_CRAY_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_IAR_VERSION) + #undef JSON_HEDLEY_IAR_VERSION +#endif +#if defined(__IAR_SYSTEMS_ICC__) + #if __VER__ > 1000 + #define JSON_HEDLEY_IAR_VERSION JSON_HEDLEY_VERSION_ENCODE((__VER__ / 1000000), ((__VER__ / 1000) % 1000), (__VER__ % 1000)) + #else + #define JSON_HEDLEY_IAR_VERSION JSON_HEDLEY_VERSION_ENCODE(__VER__ / 100, __VER__ % 100, 0) + #endif +#endif + +#if defined(JSON_HEDLEY_IAR_VERSION_CHECK) + #undef JSON_HEDLEY_IAR_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_IAR_VERSION) + #define JSON_HEDLEY_IAR_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_IAR_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_IAR_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_TINYC_VERSION) + #undef JSON_HEDLEY_TINYC_VERSION +#endif +#if defined(__TINYC__) + #define JSON_HEDLEY_TINYC_VERSION JSON_HEDLEY_VERSION_ENCODE(__TINYC__ / 1000, (__TINYC__ / 100) % 10, __TINYC__ % 100) +#endif + +#if defined(JSON_HEDLEY_TINYC_VERSION_CHECK) + #undef JSON_HEDLEY_TINYC_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_TINYC_VERSION) + #define JSON_HEDLEY_TINYC_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_TINYC_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_TINYC_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_DMC_VERSION) + #undef JSON_HEDLEY_DMC_VERSION +#endif +#if defined(__DMC__) + #define JSON_HEDLEY_DMC_VERSION JSON_HEDLEY_VERSION_ENCODE(__DMC__ >> 8, (__DMC__ >> 4) & 0xf, __DMC__ & 0xf) +#endif + +#if defined(JSON_HEDLEY_DMC_VERSION_CHECK) + #undef JSON_HEDLEY_DMC_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_DMC_VERSION) + #define JSON_HEDLEY_DMC_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_DMC_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_DMC_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_COMPCERT_VERSION) + #undef JSON_HEDLEY_COMPCERT_VERSION +#endif +#if defined(__COMPCERT_VERSION__) + #define JSON_HEDLEY_COMPCERT_VERSION JSON_HEDLEY_VERSION_ENCODE(__COMPCERT_VERSION__ / 10000, (__COMPCERT_VERSION__ / 100) % 100, __COMPCERT_VERSION__ % 100) +#endif + +#if defined(JSON_HEDLEY_COMPCERT_VERSION_CHECK) + #undef JSON_HEDLEY_COMPCERT_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_COMPCERT_VERSION) + #define JSON_HEDLEY_COMPCERT_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_COMPCERT_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_COMPCERT_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_PELLES_VERSION) + #undef JSON_HEDLEY_PELLES_VERSION +#endif +#if defined(__POCC__) + #define JSON_HEDLEY_PELLES_VERSION JSON_HEDLEY_VERSION_ENCODE(__POCC__ / 100, __POCC__ % 100, 0) +#endif + +#if defined(JSON_HEDLEY_PELLES_VERSION_CHECK) + #undef JSON_HEDLEY_PELLES_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_PELLES_VERSION) + #define JSON_HEDLEY_PELLES_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_PELLES_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_PELLES_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_MCST_LCC_VERSION) + #undef JSON_HEDLEY_MCST_LCC_VERSION +#endif +#if defined(__LCC__) && defined(__LCC_MINOR__) + #define JSON_HEDLEY_MCST_LCC_VERSION JSON_HEDLEY_VERSION_ENCODE(__LCC__ / 100, __LCC__ % 100, __LCC_MINOR__) +#endif + +#if defined(JSON_HEDLEY_MCST_LCC_VERSION_CHECK) + #undef JSON_HEDLEY_MCST_LCC_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_MCST_LCC_VERSION) + #define JSON_HEDLEY_MCST_LCC_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_MCST_LCC_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_MCST_LCC_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_GCC_VERSION) + #undef JSON_HEDLEY_GCC_VERSION +#endif +#if \ + defined(JSON_HEDLEY_GNUC_VERSION) && \ + !defined(__clang__) && \ + !defined(JSON_HEDLEY_INTEL_VERSION) && \ + !defined(JSON_HEDLEY_PGI_VERSION) && \ + !defined(JSON_HEDLEY_ARM_VERSION) && \ + !defined(JSON_HEDLEY_CRAY_VERSION) && \ + !defined(JSON_HEDLEY_TI_VERSION) && \ + !defined(JSON_HEDLEY_TI_ARMCL_VERSION) && \ + !defined(JSON_HEDLEY_TI_CL430_VERSION) && \ + !defined(JSON_HEDLEY_TI_CL2000_VERSION) && \ + !defined(JSON_HEDLEY_TI_CL6X_VERSION) && \ + !defined(JSON_HEDLEY_TI_CL7X_VERSION) && \ + !defined(JSON_HEDLEY_TI_CLPRU_VERSION) && \ + !defined(__COMPCERT__) && \ + !defined(JSON_HEDLEY_MCST_LCC_VERSION) + #define JSON_HEDLEY_GCC_VERSION JSON_HEDLEY_GNUC_VERSION +#endif + +#if defined(JSON_HEDLEY_GCC_VERSION_CHECK) + #undef JSON_HEDLEY_GCC_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_GCC_VERSION) + #define JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_GCC_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_HAS_ATTRIBUTE) + #undef JSON_HEDLEY_HAS_ATTRIBUTE +#endif +#if \ + defined(__has_attribute) && \ + ( \ + (!defined(JSON_HEDLEY_IAR_VERSION) || JSON_HEDLEY_IAR_VERSION_CHECK(8,5,9)) \ + ) +# define JSON_HEDLEY_HAS_ATTRIBUTE(attribute) __has_attribute(attribute) +#else +# define JSON_HEDLEY_HAS_ATTRIBUTE(attribute) (0) +#endif + +#if defined(JSON_HEDLEY_GNUC_HAS_ATTRIBUTE) + #undef JSON_HEDLEY_GNUC_HAS_ATTRIBUTE +#endif +#if defined(__has_attribute) + #define JSON_HEDLEY_GNUC_HAS_ATTRIBUTE(attribute,major,minor,patch) JSON_HEDLEY_HAS_ATTRIBUTE(attribute) +#else + #define JSON_HEDLEY_GNUC_HAS_ATTRIBUTE(attribute,major,minor,patch) JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch) +#endif + +#if defined(JSON_HEDLEY_GCC_HAS_ATTRIBUTE) + #undef JSON_HEDLEY_GCC_HAS_ATTRIBUTE +#endif +#if defined(__has_attribute) + #define JSON_HEDLEY_GCC_HAS_ATTRIBUTE(attribute,major,minor,patch) JSON_HEDLEY_HAS_ATTRIBUTE(attribute) +#else + #define JSON_HEDLEY_GCC_HAS_ATTRIBUTE(attribute,major,minor,patch) JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch) +#endif + +#if defined(JSON_HEDLEY_HAS_CPP_ATTRIBUTE) + #undef JSON_HEDLEY_HAS_CPP_ATTRIBUTE +#endif +#if \ + defined(__has_cpp_attribute) && \ + defined(__cplusplus) && \ + (!defined(JSON_HEDLEY_SUNPRO_VERSION) || JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,15,0)) + #define JSON_HEDLEY_HAS_CPP_ATTRIBUTE(attribute) __has_cpp_attribute(attribute) +#else + #define JSON_HEDLEY_HAS_CPP_ATTRIBUTE(attribute) (0) +#endif + +#if defined(JSON_HEDLEY_HAS_CPP_ATTRIBUTE_NS) + #undef JSON_HEDLEY_HAS_CPP_ATTRIBUTE_NS +#endif +#if !defined(__cplusplus) || !defined(__has_cpp_attribute) + #define JSON_HEDLEY_HAS_CPP_ATTRIBUTE_NS(ns,attribute) (0) +#elif \ + !defined(JSON_HEDLEY_PGI_VERSION) && \ + !defined(JSON_HEDLEY_IAR_VERSION) && \ + (!defined(JSON_HEDLEY_SUNPRO_VERSION) || JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,15,0)) && \ + (!defined(JSON_HEDLEY_MSVC_VERSION) || JSON_HEDLEY_MSVC_VERSION_CHECK(19,20,0)) + #define JSON_HEDLEY_HAS_CPP_ATTRIBUTE_NS(ns,attribute) JSON_HEDLEY_HAS_CPP_ATTRIBUTE(ns::attribute) +#else + #define JSON_HEDLEY_HAS_CPP_ATTRIBUTE_NS(ns,attribute) (0) +#endif + +#if defined(JSON_HEDLEY_GNUC_HAS_CPP_ATTRIBUTE) + #undef JSON_HEDLEY_GNUC_HAS_CPP_ATTRIBUTE +#endif +#if defined(__has_cpp_attribute) && defined(__cplusplus) + #define JSON_HEDLEY_GNUC_HAS_CPP_ATTRIBUTE(attribute,major,minor,patch) __has_cpp_attribute(attribute) +#else + #define JSON_HEDLEY_GNUC_HAS_CPP_ATTRIBUTE(attribute,major,minor,patch) JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch) +#endif + +#if defined(JSON_HEDLEY_GCC_HAS_CPP_ATTRIBUTE) + #undef JSON_HEDLEY_GCC_HAS_CPP_ATTRIBUTE +#endif +#if defined(__has_cpp_attribute) && defined(__cplusplus) + #define JSON_HEDLEY_GCC_HAS_CPP_ATTRIBUTE(attribute,major,minor,patch) __has_cpp_attribute(attribute) +#else + #define JSON_HEDLEY_GCC_HAS_CPP_ATTRIBUTE(attribute,major,minor,patch) JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch) +#endif + +#if defined(JSON_HEDLEY_HAS_BUILTIN) + #undef JSON_HEDLEY_HAS_BUILTIN +#endif +#if defined(__has_builtin) + #define JSON_HEDLEY_HAS_BUILTIN(builtin) __has_builtin(builtin) +#else + #define JSON_HEDLEY_HAS_BUILTIN(builtin) (0) +#endif + +#if defined(JSON_HEDLEY_GNUC_HAS_BUILTIN) + #undef JSON_HEDLEY_GNUC_HAS_BUILTIN +#endif +#if defined(__has_builtin) + #define JSON_HEDLEY_GNUC_HAS_BUILTIN(builtin,major,minor,patch) __has_builtin(builtin) +#else + #define JSON_HEDLEY_GNUC_HAS_BUILTIN(builtin,major,minor,patch) JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch) +#endif + +#if defined(JSON_HEDLEY_GCC_HAS_BUILTIN) + #undef JSON_HEDLEY_GCC_HAS_BUILTIN +#endif +#if defined(__has_builtin) + #define JSON_HEDLEY_GCC_HAS_BUILTIN(builtin,major,minor,patch) __has_builtin(builtin) +#else + #define JSON_HEDLEY_GCC_HAS_BUILTIN(builtin,major,minor,patch) JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch) +#endif + +#if defined(JSON_HEDLEY_HAS_FEATURE) + #undef JSON_HEDLEY_HAS_FEATURE +#endif +#if defined(__has_feature) + #define JSON_HEDLEY_HAS_FEATURE(feature) __has_feature(feature) +#else + #define JSON_HEDLEY_HAS_FEATURE(feature) (0) +#endif + +#if defined(JSON_HEDLEY_GNUC_HAS_FEATURE) + #undef JSON_HEDLEY_GNUC_HAS_FEATURE +#endif +#if defined(__has_feature) + #define JSON_HEDLEY_GNUC_HAS_FEATURE(feature,major,minor,patch) __has_feature(feature) +#else + #define JSON_HEDLEY_GNUC_HAS_FEATURE(feature,major,minor,patch) JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch) +#endif + +#if defined(JSON_HEDLEY_GCC_HAS_FEATURE) + #undef JSON_HEDLEY_GCC_HAS_FEATURE +#endif +#if defined(__has_feature) + #define JSON_HEDLEY_GCC_HAS_FEATURE(feature,major,minor,patch) __has_feature(feature) +#else + #define JSON_HEDLEY_GCC_HAS_FEATURE(feature,major,minor,patch) JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch) +#endif + +#if defined(JSON_HEDLEY_HAS_EXTENSION) + #undef JSON_HEDLEY_HAS_EXTENSION +#endif +#if defined(__has_extension) + #define JSON_HEDLEY_HAS_EXTENSION(extension) __has_extension(extension) +#else + #define JSON_HEDLEY_HAS_EXTENSION(extension) (0) +#endif + +#if defined(JSON_HEDLEY_GNUC_HAS_EXTENSION) + #undef JSON_HEDLEY_GNUC_HAS_EXTENSION +#endif +#if defined(__has_extension) + #define JSON_HEDLEY_GNUC_HAS_EXTENSION(extension,major,minor,patch) __has_extension(extension) +#else + #define JSON_HEDLEY_GNUC_HAS_EXTENSION(extension,major,minor,patch) JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch) +#endif + +#if defined(JSON_HEDLEY_GCC_HAS_EXTENSION) + #undef JSON_HEDLEY_GCC_HAS_EXTENSION +#endif +#if defined(__has_extension) + #define JSON_HEDLEY_GCC_HAS_EXTENSION(extension,major,minor,patch) __has_extension(extension) +#else + #define JSON_HEDLEY_GCC_HAS_EXTENSION(extension,major,minor,patch) JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch) +#endif + +#if defined(JSON_HEDLEY_HAS_DECLSPEC_ATTRIBUTE) + #undef JSON_HEDLEY_HAS_DECLSPEC_ATTRIBUTE +#endif +#if defined(__has_declspec_attribute) + #define JSON_HEDLEY_HAS_DECLSPEC_ATTRIBUTE(attribute) __has_declspec_attribute(attribute) +#else + #define JSON_HEDLEY_HAS_DECLSPEC_ATTRIBUTE(attribute) (0) +#endif + +#if defined(JSON_HEDLEY_GNUC_HAS_DECLSPEC_ATTRIBUTE) + #undef JSON_HEDLEY_GNUC_HAS_DECLSPEC_ATTRIBUTE +#endif +#if defined(__has_declspec_attribute) + #define JSON_HEDLEY_GNUC_HAS_DECLSPEC_ATTRIBUTE(attribute,major,minor,patch) __has_declspec_attribute(attribute) +#else + #define JSON_HEDLEY_GNUC_HAS_DECLSPEC_ATTRIBUTE(attribute,major,minor,patch) JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch) +#endif + +#if defined(JSON_HEDLEY_GCC_HAS_DECLSPEC_ATTRIBUTE) + #undef JSON_HEDLEY_GCC_HAS_DECLSPEC_ATTRIBUTE +#endif +#if defined(__has_declspec_attribute) + #define JSON_HEDLEY_GCC_HAS_DECLSPEC_ATTRIBUTE(attribute,major,minor,patch) __has_declspec_attribute(attribute) +#else + #define JSON_HEDLEY_GCC_HAS_DECLSPEC_ATTRIBUTE(attribute,major,minor,patch) JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch) +#endif + +#if defined(JSON_HEDLEY_HAS_WARNING) + #undef JSON_HEDLEY_HAS_WARNING +#endif +#if defined(__has_warning) + #define JSON_HEDLEY_HAS_WARNING(warning) __has_warning(warning) +#else + #define JSON_HEDLEY_HAS_WARNING(warning) (0) +#endif + +#if defined(JSON_HEDLEY_GNUC_HAS_WARNING) + #undef JSON_HEDLEY_GNUC_HAS_WARNING +#endif +#if defined(__has_warning) + #define JSON_HEDLEY_GNUC_HAS_WARNING(warning,major,minor,patch) __has_warning(warning) +#else + #define JSON_HEDLEY_GNUC_HAS_WARNING(warning,major,minor,patch) JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch) +#endif + +#if defined(JSON_HEDLEY_GCC_HAS_WARNING) + #undef JSON_HEDLEY_GCC_HAS_WARNING +#endif +#if defined(__has_warning) + #define JSON_HEDLEY_GCC_HAS_WARNING(warning,major,minor,patch) __has_warning(warning) +#else + #define JSON_HEDLEY_GCC_HAS_WARNING(warning,major,minor,patch) JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch) +#endif + +#if \ + (defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) || \ + defined(__clang__) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(3,0,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0) || \ + JSON_HEDLEY_PGI_VERSION_CHECK(18,4,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \ + JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \ + JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4,7,0) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(2,0,1) || \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,1,0) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,0,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) || \ + JSON_HEDLEY_CRAY_VERSION_CHECK(5,0,0) || \ + JSON_HEDLEY_TINYC_VERSION_CHECK(0,9,17) || \ + JSON_HEDLEY_SUNPRO_VERSION_CHECK(8,0,0) || \ + (JSON_HEDLEY_IBM_VERSION_CHECK(10,1,0) && defined(__C99_PRAGMA_OPERATOR)) + #define JSON_HEDLEY_PRAGMA(value) _Pragma(#value) +#elif JSON_HEDLEY_MSVC_VERSION_CHECK(15,0,0) + #define JSON_HEDLEY_PRAGMA(value) __pragma(value) +#else + #define JSON_HEDLEY_PRAGMA(value) +#endif + +#if defined(JSON_HEDLEY_DIAGNOSTIC_PUSH) + #undef JSON_HEDLEY_DIAGNOSTIC_PUSH +#endif +#if defined(JSON_HEDLEY_DIAGNOSTIC_POP) + #undef JSON_HEDLEY_DIAGNOSTIC_POP +#endif +#if defined(__clang__) + #define JSON_HEDLEY_DIAGNOSTIC_PUSH _Pragma("clang diagnostic push") + #define JSON_HEDLEY_DIAGNOSTIC_POP _Pragma("clang diagnostic pop") +#elif JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) + #define JSON_HEDLEY_DIAGNOSTIC_PUSH _Pragma("warning(push)") + #define JSON_HEDLEY_DIAGNOSTIC_POP _Pragma("warning(pop)") +#elif JSON_HEDLEY_GCC_VERSION_CHECK(4,6,0) + #define JSON_HEDLEY_DIAGNOSTIC_PUSH _Pragma("GCC diagnostic push") + #define JSON_HEDLEY_DIAGNOSTIC_POP _Pragma("GCC diagnostic pop") +#elif \ + JSON_HEDLEY_MSVC_VERSION_CHECK(15,0,0) || \ + JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) + #define JSON_HEDLEY_DIAGNOSTIC_PUSH __pragma(warning(push)) + #define JSON_HEDLEY_DIAGNOSTIC_POP __pragma(warning(pop)) +#elif JSON_HEDLEY_ARM_VERSION_CHECK(5,6,0) + #define JSON_HEDLEY_DIAGNOSTIC_PUSH _Pragma("push") + #define JSON_HEDLEY_DIAGNOSTIC_POP _Pragma("pop") +#elif \ + JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \ + JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,4,0) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(8,1,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) + #define JSON_HEDLEY_DIAGNOSTIC_PUSH _Pragma("diag_push") + #define JSON_HEDLEY_DIAGNOSTIC_POP _Pragma("diag_pop") +#elif JSON_HEDLEY_PELLES_VERSION_CHECK(2,90,0) + #define JSON_HEDLEY_DIAGNOSTIC_PUSH _Pragma("warning(push)") + #define JSON_HEDLEY_DIAGNOSTIC_POP _Pragma("warning(pop)") +#else + #define JSON_HEDLEY_DIAGNOSTIC_PUSH + #define JSON_HEDLEY_DIAGNOSTIC_POP +#endif + +/* JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_ is for + HEDLEY INTERNAL USE ONLY. API subject to change without notice. */ +#if defined(JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_) + #undef JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_ +#endif +#if defined(__cplusplus) +# if JSON_HEDLEY_HAS_WARNING("-Wc++98-compat") +# if JSON_HEDLEY_HAS_WARNING("-Wc++17-extensions") +# if JSON_HEDLEY_HAS_WARNING("-Wc++1z-extensions") +# define JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_(xpr) \ + JSON_HEDLEY_DIAGNOSTIC_PUSH \ + _Pragma("clang diagnostic ignored \"-Wc++98-compat\"") \ + _Pragma("clang diagnostic ignored \"-Wc++17-extensions\"") \ + _Pragma("clang diagnostic ignored \"-Wc++1z-extensions\"") \ + xpr \ + JSON_HEDLEY_DIAGNOSTIC_POP +# else +# define JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_(xpr) \ + JSON_HEDLEY_DIAGNOSTIC_PUSH \ + _Pragma("clang diagnostic ignored \"-Wc++98-compat\"") \ + _Pragma("clang diagnostic ignored \"-Wc++17-extensions\"") \ + xpr \ + JSON_HEDLEY_DIAGNOSTIC_POP +# endif +# else +# define JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_(xpr) \ + JSON_HEDLEY_DIAGNOSTIC_PUSH \ + _Pragma("clang diagnostic ignored \"-Wc++98-compat\"") \ + xpr \ + JSON_HEDLEY_DIAGNOSTIC_POP +# endif +# endif +#endif +#if !defined(JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_(x) x +#endif + +#if defined(JSON_HEDLEY_CONST_CAST) + #undef JSON_HEDLEY_CONST_CAST +#endif +#if defined(__cplusplus) +# define JSON_HEDLEY_CONST_CAST(T, expr) (const_cast(expr)) +#elif \ + JSON_HEDLEY_HAS_WARNING("-Wcast-qual") || \ + JSON_HEDLEY_GCC_VERSION_CHECK(4,6,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) +# define JSON_HEDLEY_CONST_CAST(T, expr) (__extension__ ({ \ + JSON_HEDLEY_DIAGNOSTIC_PUSH \ + JSON_HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL \ + ((T) (expr)); \ + JSON_HEDLEY_DIAGNOSTIC_POP \ + })) +#else +# define JSON_HEDLEY_CONST_CAST(T, expr) ((T) (expr)) +#endif + +#if defined(JSON_HEDLEY_REINTERPRET_CAST) + #undef JSON_HEDLEY_REINTERPRET_CAST +#endif +#if defined(__cplusplus) + #define JSON_HEDLEY_REINTERPRET_CAST(T, expr) (reinterpret_cast(expr)) +#else + #define JSON_HEDLEY_REINTERPRET_CAST(T, expr) ((T) (expr)) +#endif + +#if defined(JSON_HEDLEY_STATIC_CAST) + #undef JSON_HEDLEY_STATIC_CAST +#endif +#if defined(__cplusplus) + #define JSON_HEDLEY_STATIC_CAST(T, expr) (static_cast(expr)) +#else + #define JSON_HEDLEY_STATIC_CAST(T, expr) ((T) (expr)) +#endif + +#if defined(JSON_HEDLEY_CPP_CAST) + #undef JSON_HEDLEY_CPP_CAST +#endif +#if defined(__cplusplus) +# if JSON_HEDLEY_HAS_WARNING("-Wold-style-cast") +# define JSON_HEDLEY_CPP_CAST(T, expr) \ + JSON_HEDLEY_DIAGNOSTIC_PUSH \ + _Pragma("clang diagnostic ignored \"-Wold-style-cast\"") \ + ((T) (expr)) \ + JSON_HEDLEY_DIAGNOSTIC_POP +# elif JSON_HEDLEY_IAR_VERSION_CHECK(8,3,0) +# define JSON_HEDLEY_CPP_CAST(T, expr) \ + JSON_HEDLEY_DIAGNOSTIC_PUSH \ + _Pragma("diag_suppress=Pe137") \ + JSON_HEDLEY_DIAGNOSTIC_POP +# else +# define JSON_HEDLEY_CPP_CAST(T, expr) ((T) (expr)) +# endif +#else +# define JSON_HEDLEY_CPP_CAST(T, expr) (expr) +#endif + +#if defined(JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED) + #undef JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED +#endif +#if JSON_HEDLEY_HAS_WARNING("-Wdeprecated-declarations") + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("clang diagnostic ignored \"-Wdeprecated-declarations\"") +#elif JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("warning(disable:1478 1786)") +#elif JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED __pragma(warning(disable:1478 1786)) +#elif JSON_HEDLEY_PGI_VERSION_CHECK(20,7,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("diag_suppress 1215,1216,1444,1445") +#elif JSON_HEDLEY_PGI_VERSION_CHECK(17,10,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("diag_suppress 1215,1444") +#elif JSON_HEDLEY_GCC_VERSION_CHECK(4,3,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("GCC diagnostic ignored \"-Wdeprecated-declarations\"") +#elif JSON_HEDLEY_MSVC_VERSION_CHECK(15,0,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED __pragma(warning(disable:4996)) +#elif JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("diag_suppress 1215,1444") +#elif \ + JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \ + (JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4,8,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \ + (JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,4,0) || \ + (JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \ + (JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,2,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,5,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("diag_suppress 1291,1718") +#elif JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,13,0) && !defined(__cplusplus) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("error_messages(off,E_DEPRECATED_ATT,E_DEPRECATED_ATT_MESS)") +#elif JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,13,0) && defined(__cplusplus) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("error_messages(off,symdeprecated,symdeprecated2)") +#elif JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("diag_suppress=Pe1444,Pe1215") +#elif JSON_HEDLEY_PELLES_VERSION_CHECK(2,90,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("warn(disable:2241)") +#else + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED +#endif + +#if defined(JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS) + #undef JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS +#endif +#if JSON_HEDLEY_HAS_WARNING("-Wunknown-pragmas") + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS _Pragma("clang diagnostic ignored \"-Wunknown-pragmas\"") +#elif JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS _Pragma("warning(disable:161)") +#elif JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS __pragma(warning(disable:161)) +#elif JSON_HEDLEY_PGI_VERSION_CHECK(17,10,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS _Pragma("diag_suppress 1675") +#elif JSON_HEDLEY_GCC_VERSION_CHECK(4,3,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS _Pragma("GCC diagnostic ignored \"-Wunknown-pragmas\"") +#elif JSON_HEDLEY_MSVC_VERSION_CHECK(15,0,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS __pragma(warning(disable:4068)) +#elif \ + JSON_HEDLEY_TI_VERSION_CHECK(16,9,0) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(8,0,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,3,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS _Pragma("diag_suppress 163") +#elif JSON_HEDLEY_TI_CL6X_VERSION_CHECK(8,0,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS _Pragma("diag_suppress 163") +#elif JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS _Pragma("diag_suppress=Pe161") +#elif JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS _Pragma("diag_suppress 161") +#else + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS +#endif + +#if defined(JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES) + #undef JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES +#endif +#if JSON_HEDLEY_HAS_WARNING("-Wunknown-attributes") + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES _Pragma("clang diagnostic ignored \"-Wunknown-attributes\"") +#elif JSON_HEDLEY_GCC_VERSION_CHECK(4,6,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES _Pragma("GCC diagnostic ignored \"-Wdeprecated-declarations\"") +#elif JSON_HEDLEY_INTEL_VERSION_CHECK(17,0,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES _Pragma("warning(disable:1292)") +#elif JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES __pragma(warning(disable:1292)) +#elif JSON_HEDLEY_MSVC_VERSION_CHECK(19,0,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES __pragma(warning(disable:5030)) +#elif JSON_HEDLEY_PGI_VERSION_CHECK(20,7,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES _Pragma("diag_suppress 1097,1098") +#elif JSON_HEDLEY_PGI_VERSION_CHECK(17,10,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES _Pragma("diag_suppress 1097") +#elif JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,14,0) && defined(__cplusplus) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES _Pragma("error_messages(off,attrskipunsup)") +#elif \ + JSON_HEDLEY_TI_VERSION_CHECK(18,1,0) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(8,3,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES _Pragma("diag_suppress 1173") +#elif JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES _Pragma("diag_suppress=Pe1097") +#elif JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES _Pragma("diag_suppress 1097") +#else + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES +#endif + +#if defined(JSON_HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL) + #undef JSON_HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL +#endif +#if JSON_HEDLEY_HAS_WARNING("-Wcast-qual") + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL _Pragma("clang diagnostic ignored \"-Wcast-qual\"") +#elif JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL _Pragma("warning(disable:2203 2331)") +#elif JSON_HEDLEY_GCC_VERSION_CHECK(3,0,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL _Pragma("GCC diagnostic ignored \"-Wcast-qual\"") +#else + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL +#endif + +#if defined(JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNUSED_FUNCTION) + #undef JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNUSED_FUNCTION +#endif +#if JSON_HEDLEY_HAS_WARNING("-Wunused-function") + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNUSED_FUNCTION _Pragma("clang diagnostic ignored \"-Wunused-function\"") +#elif JSON_HEDLEY_GCC_VERSION_CHECK(3,4,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNUSED_FUNCTION _Pragma("GCC diagnostic ignored \"-Wunused-function\"") +#elif JSON_HEDLEY_MSVC_VERSION_CHECK(1,0,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNUSED_FUNCTION __pragma(warning(disable:4505)) +#elif JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNUSED_FUNCTION _Pragma("diag_suppress 3142") +#else + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNUSED_FUNCTION +#endif + +#if defined(JSON_HEDLEY_DEPRECATED) + #undef JSON_HEDLEY_DEPRECATED +#endif +#if defined(JSON_HEDLEY_DEPRECATED_FOR) + #undef JSON_HEDLEY_DEPRECATED_FOR +#endif +#if \ + JSON_HEDLEY_MSVC_VERSION_CHECK(14,0,0) || \ + JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) + #define JSON_HEDLEY_DEPRECATED(since) __declspec(deprecated("Since " # since)) + #define JSON_HEDLEY_DEPRECATED_FOR(since, replacement) __declspec(deprecated("Since " #since "; use " #replacement)) +#elif \ + (JSON_HEDLEY_HAS_EXTENSION(attribute_deprecated_with_message) && !defined(JSON_HEDLEY_IAR_VERSION)) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(4,5,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(5,6,0) || \ + JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,13,0) || \ + JSON_HEDLEY_PGI_VERSION_CHECK(17,10,0) || \ + JSON_HEDLEY_TI_VERSION_CHECK(18,1,0) || \ + JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(18,1,0) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(8,3,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,3,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_DEPRECATED(since) __attribute__((__deprecated__("Since " #since))) + #define JSON_HEDLEY_DEPRECATED_FOR(since, replacement) __attribute__((__deprecated__("Since " #since "; use " #replacement))) +#elif defined(__cplusplus) && (__cplusplus >= 201402L) + #define JSON_HEDLEY_DEPRECATED(since) JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[deprecated("Since " #since)]]) + #define JSON_HEDLEY_DEPRECATED_FOR(since, replacement) JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[deprecated("Since " #since "; use " #replacement)]]) +#elif \ + JSON_HEDLEY_HAS_ATTRIBUTE(deprecated) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(3,1,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \ + JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \ + (JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4,8,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \ + (JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,4,0) || \ + (JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \ + (JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,2,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,5,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) || \ + JSON_HEDLEY_IAR_VERSION_CHECK(8,10,0) + #define JSON_HEDLEY_DEPRECATED(since) __attribute__((__deprecated__)) + #define JSON_HEDLEY_DEPRECATED_FOR(since, replacement) __attribute__((__deprecated__)) +#elif \ + JSON_HEDLEY_MSVC_VERSION_CHECK(13,10,0) || \ + JSON_HEDLEY_PELLES_VERSION_CHECK(6,50,0) || \ + JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) + #define JSON_HEDLEY_DEPRECATED(since) __declspec(deprecated) + #define JSON_HEDLEY_DEPRECATED_FOR(since, replacement) __declspec(deprecated) +#elif JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0) + #define JSON_HEDLEY_DEPRECATED(since) _Pragma("deprecated") + #define JSON_HEDLEY_DEPRECATED_FOR(since, replacement) _Pragma("deprecated") +#else + #define JSON_HEDLEY_DEPRECATED(since) + #define JSON_HEDLEY_DEPRECATED_FOR(since, replacement) +#endif + +#if defined(JSON_HEDLEY_UNAVAILABLE) + #undef JSON_HEDLEY_UNAVAILABLE +#endif +#if \ + JSON_HEDLEY_HAS_ATTRIBUTE(warning) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(4,3,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_UNAVAILABLE(available_since) __attribute__((__warning__("Not available until " #available_since))) +#else + #define JSON_HEDLEY_UNAVAILABLE(available_since) +#endif + +#if defined(JSON_HEDLEY_WARN_UNUSED_RESULT) + #undef JSON_HEDLEY_WARN_UNUSED_RESULT +#endif +#if defined(JSON_HEDLEY_WARN_UNUSED_RESULT_MSG) + #undef JSON_HEDLEY_WARN_UNUSED_RESULT_MSG +#endif +#if \ + JSON_HEDLEY_HAS_ATTRIBUTE(warn_unused_result) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(3,4,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \ + (JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4,8,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \ + (JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,4,0) || \ + (JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \ + (JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,2,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,5,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) || \ + (JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,15,0) && defined(__cplusplus)) || \ + JSON_HEDLEY_PGI_VERSION_CHECK(17,10,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_WARN_UNUSED_RESULT __attribute__((__warn_unused_result__)) + #define JSON_HEDLEY_WARN_UNUSED_RESULT_MSG(msg) __attribute__((__warn_unused_result__)) +#elif (JSON_HEDLEY_HAS_CPP_ATTRIBUTE(nodiscard) >= 201907L) + #define JSON_HEDLEY_WARN_UNUSED_RESULT JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[nodiscard]]) + #define JSON_HEDLEY_WARN_UNUSED_RESULT_MSG(msg) JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[nodiscard(msg)]]) +#elif JSON_HEDLEY_HAS_CPP_ATTRIBUTE(nodiscard) + #define JSON_HEDLEY_WARN_UNUSED_RESULT JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[nodiscard]]) + #define JSON_HEDLEY_WARN_UNUSED_RESULT_MSG(msg) JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[nodiscard]]) +#elif defined(_Check_return_) /* SAL */ + #define JSON_HEDLEY_WARN_UNUSED_RESULT _Check_return_ + #define JSON_HEDLEY_WARN_UNUSED_RESULT_MSG(msg) _Check_return_ +#else + #define JSON_HEDLEY_WARN_UNUSED_RESULT + #define JSON_HEDLEY_WARN_UNUSED_RESULT_MSG(msg) +#endif + +#if defined(JSON_HEDLEY_SENTINEL) + #undef JSON_HEDLEY_SENTINEL +#endif +#if \ + JSON_HEDLEY_HAS_ATTRIBUTE(sentinel) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(4,0,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(5,4,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_SENTINEL(position) __attribute__((__sentinel__(position))) +#else + #define JSON_HEDLEY_SENTINEL(position) +#endif + +#if defined(JSON_HEDLEY_NO_RETURN) + #undef JSON_HEDLEY_NO_RETURN +#endif +#if JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0) + #define JSON_HEDLEY_NO_RETURN __noreturn +#elif \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_NO_RETURN __attribute__((__noreturn__)) +#elif defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L + #define JSON_HEDLEY_NO_RETURN _Noreturn +#elif defined(__cplusplus) && (__cplusplus >= 201103L) + #define JSON_HEDLEY_NO_RETURN JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[noreturn]]) +#elif \ + JSON_HEDLEY_HAS_ATTRIBUTE(noreturn) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(3,2,0) || \ + JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,11,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \ + JSON_HEDLEY_IBM_VERSION_CHECK(10,1,0) || \ + JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \ + (JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4,8,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \ + (JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,4,0) || \ + (JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \ + (JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,2,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,5,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) || \ + JSON_HEDLEY_IAR_VERSION_CHECK(8,10,0) + #define JSON_HEDLEY_NO_RETURN __attribute__((__noreturn__)) +#elif JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,10,0) + #define JSON_HEDLEY_NO_RETURN _Pragma("does_not_return") +#elif \ + JSON_HEDLEY_MSVC_VERSION_CHECK(13,10,0) || \ + JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) + #define JSON_HEDLEY_NO_RETURN __declspec(noreturn) +#elif JSON_HEDLEY_TI_CL6X_VERSION_CHECK(6,0,0) && defined(__cplusplus) + #define JSON_HEDLEY_NO_RETURN _Pragma("FUNC_NEVER_RETURNS;") +#elif JSON_HEDLEY_COMPCERT_VERSION_CHECK(3,2,0) + #define JSON_HEDLEY_NO_RETURN __attribute((noreturn)) +#elif JSON_HEDLEY_PELLES_VERSION_CHECK(9,0,0) + #define JSON_HEDLEY_NO_RETURN __declspec(noreturn) +#else + #define JSON_HEDLEY_NO_RETURN +#endif + +#if defined(JSON_HEDLEY_NO_ESCAPE) + #undef JSON_HEDLEY_NO_ESCAPE +#endif +#if JSON_HEDLEY_HAS_ATTRIBUTE(noescape) + #define JSON_HEDLEY_NO_ESCAPE __attribute__((__noescape__)) +#else + #define JSON_HEDLEY_NO_ESCAPE +#endif + +#if defined(JSON_HEDLEY_UNREACHABLE) + #undef JSON_HEDLEY_UNREACHABLE +#endif +#if defined(JSON_HEDLEY_UNREACHABLE_RETURN) + #undef JSON_HEDLEY_UNREACHABLE_RETURN +#endif +#if defined(JSON_HEDLEY_ASSUME) + #undef JSON_HEDLEY_ASSUME +#endif +#if \ + JSON_HEDLEY_MSVC_VERSION_CHECK(13,10,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) + #define JSON_HEDLEY_ASSUME(expr) __assume(expr) +#elif JSON_HEDLEY_HAS_BUILTIN(__builtin_assume) + #define JSON_HEDLEY_ASSUME(expr) __builtin_assume(expr) +#elif \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,2,0) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(4,0,0) + #if defined(__cplusplus) + #define JSON_HEDLEY_ASSUME(expr) std::_nassert(expr) + #else + #define JSON_HEDLEY_ASSUME(expr) _nassert(expr) + #endif +#endif +#if \ + (JSON_HEDLEY_HAS_BUILTIN(__builtin_unreachable) && (!defined(JSON_HEDLEY_ARM_VERSION))) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(4,5,0) || \ + JSON_HEDLEY_PGI_VERSION_CHECK(18,10,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_IBM_VERSION_CHECK(13,1,5) || \ + JSON_HEDLEY_CRAY_VERSION_CHECK(10,0,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_UNREACHABLE() __builtin_unreachable() +#elif defined(JSON_HEDLEY_ASSUME) + #define JSON_HEDLEY_UNREACHABLE() JSON_HEDLEY_ASSUME(0) +#endif +#if !defined(JSON_HEDLEY_ASSUME) + #if defined(JSON_HEDLEY_UNREACHABLE) + #define JSON_HEDLEY_ASSUME(expr) JSON_HEDLEY_STATIC_CAST(void, ((expr) ? 1 : (JSON_HEDLEY_UNREACHABLE(), 1))) + #else + #define JSON_HEDLEY_ASSUME(expr) JSON_HEDLEY_STATIC_CAST(void, expr) + #endif +#endif +#if defined(JSON_HEDLEY_UNREACHABLE) + #if \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,2,0) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(4,0,0) + #define JSON_HEDLEY_UNREACHABLE_RETURN(value) return (JSON_HEDLEY_STATIC_CAST(void, JSON_HEDLEY_ASSUME(0)), (value)) + #else + #define JSON_HEDLEY_UNREACHABLE_RETURN(value) JSON_HEDLEY_UNREACHABLE() + #endif +#else + #define JSON_HEDLEY_UNREACHABLE_RETURN(value) return (value) +#endif +#if !defined(JSON_HEDLEY_UNREACHABLE) + #define JSON_HEDLEY_UNREACHABLE() JSON_HEDLEY_ASSUME(0) +#endif + +JSON_HEDLEY_DIAGNOSTIC_PUSH +#if JSON_HEDLEY_HAS_WARNING("-Wpedantic") + #pragma clang diagnostic ignored "-Wpedantic" +#endif +#if JSON_HEDLEY_HAS_WARNING("-Wc++98-compat-pedantic") && defined(__cplusplus) + #pragma clang diagnostic ignored "-Wc++98-compat-pedantic" +#endif +#if JSON_HEDLEY_GCC_HAS_WARNING("-Wvariadic-macros",4,0,0) + #if defined(__clang__) + #pragma clang diagnostic ignored "-Wvariadic-macros" + #elif defined(JSON_HEDLEY_GCC_VERSION) + #pragma GCC diagnostic ignored "-Wvariadic-macros" + #endif +#endif +#if defined(JSON_HEDLEY_NON_NULL) + #undef JSON_HEDLEY_NON_NULL +#endif +#if \ + JSON_HEDLEY_HAS_ATTRIBUTE(nonnull) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(3,3,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) + #define JSON_HEDLEY_NON_NULL(...) __attribute__((__nonnull__(__VA_ARGS__))) +#else + #define JSON_HEDLEY_NON_NULL(...) +#endif +JSON_HEDLEY_DIAGNOSTIC_POP + +#if defined(JSON_HEDLEY_PRINTF_FORMAT) + #undef JSON_HEDLEY_PRINTF_FORMAT +#endif +#if defined(__MINGW32__) && JSON_HEDLEY_GCC_HAS_ATTRIBUTE(format,4,4,0) && !defined(__USE_MINGW_ANSI_STDIO) + #define JSON_HEDLEY_PRINTF_FORMAT(string_idx,first_to_check) __attribute__((__format__(ms_printf, string_idx, first_to_check))) +#elif defined(__MINGW32__) && JSON_HEDLEY_GCC_HAS_ATTRIBUTE(format,4,4,0) && defined(__USE_MINGW_ANSI_STDIO) + #define JSON_HEDLEY_PRINTF_FORMAT(string_idx,first_to_check) __attribute__((__format__(gnu_printf, string_idx, first_to_check))) +#elif \ + JSON_HEDLEY_HAS_ATTRIBUTE(format) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(3,1,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(5,6,0) || \ + JSON_HEDLEY_IBM_VERSION_CHECK(10,1,0) || \ + JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \ + (JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4,8,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \ + (JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,4,0) || \ + (JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \ + (JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,2,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,5,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_PRINTF_FORMAT(string_idx,first_to_check) __attribute__((__format__(__printf__, string_idx, first_to_check))) +#elif JSON_HEDLEY_PELLES_VERSION_CHECK(6,0,0) + #define JSON_HEDLEY_PRINTF_FORMAT(string_idx,first_to_check) __declspec(vaformat(printf,string_idx,first_to_check)) +#else + #define JSON_HEDLEY_PRINTF_FORMAT(string_idx,first_to_check) +#endif + +#if defined(JSON_HEDLEY_CONSTEXPR) + #undef JSON_HEDLEY_CONSTEXPR +#endif +#if defined(__cplusplus) + #if __cplusplus >= 201103L + #define JSON_HEDLEY_CONSTEXPR JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_(constexpr) + #endif +#endif +#if !defined(JSON_HEDLEY_CONSTEXPR) + #define JSON_HEDLEY_CONSTEXPR +#endif + +#if defined(JSON_HEDLEY_PREDICT) + #undef JSON_HEDLEY_PREDICT +#endif +#if defined(JSON_HEDLEY_LIKELY) + #undef JSON_HEDLEY_LIKELY +#endif +#if defined(JSON_HEDLEY_UNLIKELY) + #undef JSON_HEDLEY_UNLIKELY +#endif +#if defined(JSON_HEDLEY_UNPREDICTABLE) + #undef JSON_HEDLEY_UNPREDICTABLE +#endif +#if JSON_HEDLEY_HAS_BUILTIN(__builtin_unpredictable) + #define JSON_HEDLEY_UNPREDICTABLE(expr) __builtin_unpredictable((expr)) +#endif +#if \ + (JSON_HEDLEY_HAS_BUILTIN(__builtin_expect_with_probability) && !defined(JSON_HEDLEY_PGI_VERSION)) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(9,0,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) +# define JSON_HEDLEY_PREDICT(expr, value, probability) __builtin_expect_with_probability( (expr), (value), (probability)) +# define JSON_HEDLEY_PREDICT_TRUE(expr, probability) __builtin_expect_with_probability(!!(expr), 1 , (probability)) +# define JSON_HEDLEY_PREDICT_FALSE(expr, probability) __builtin_expect_with_probability(!!(expr), 0 , (probability)) +# define JSON_HEDLEY_LIKELY(expr) __builtin_expect (!!(expr), 1 ) +# define JSON_HEDLEY_UNLIKELY(expr) __builtin_expect (!!(expr), 0 ) +#elif \ + (JSON_HEDLEY_HAS_BUILTIN(__builtin_expect) && !defined(JSON_HEDLEY_INTEL_CL_VERSION)) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(3,0,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + (JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,15,0) && defined(__cplusplus)) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \ + JSON_HEDLEY_IBM_VERSION_CHECK(10,1,0) || \ + JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \ + JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4,7,0) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(3,1,0) || \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,1,0) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(6,1,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) || \ + JSON_HEDLEY_TINYC_VERSION_CHECK(0,9,27) || \ + JSON_HEDLEY_CRAY_VERSION_CHECK(8,1,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) +# define JSON_HEDLEY_PREDICT(expr, expected, probability) \ + (((probability) >= 0.9) ? __builtin_expect((expr), (expected)) : (JSON_HEDLEY_STATIC_CAST(void, expected), (expr))) +# define JSON_HEDLEY_PREDICT_TRUE(expr, probability) \ + (__extension__ ({ \ + double hedley_probability_ = (probability); \ + ((hedley_probability_ >= 0.9) ? __builtin_expect(!!(expr), 1) : ((hedley_probability_ <= 0.1) ? __builtin_expect(!!(expr), 0) : !!(expr))); \ + })) +# define JSON_HEDLEY_PREDICT_FALSE(expr, probability) \ + (__extension__ ({ \ + double hedley_probability_ = (probability); \ + ((hedley_probability_ >= 0.9) ? __builtin_expect(!!(expr), 0) : ((hedley_probability_ <= 0.1) ? __builtin_expect(!!(expr), 1) : !!(expr))); \ + })) +# define JSON_HEDLEY_LIKELY(expr) __builtin_expect(!!(expr), 1) +# define JSON_HEDLEY_UNLIKELY(expr) __builtin_expect(!!(expr), 0) +#else +# define JSON_HEDLEY_PREDICT(expr, expected, probability) (JSON_HEDLEY_STATIC_CAST(void, expected), (expr)) +# define JSON_HEDLEY_PREDICT_TRUE(expr, probability) (!!(expr)) +# define JSON_HEDLEY_PREDICT_FALSE(expr, probability) (!!(expr)) +# define JSON_HEDLEY_LIKELY(expr) (!!(expr)) +# define JSON_HEDLEY_UNLIKELY(expr) (!!(expr)) +#endif +#if !defined(JSON_HEDLEY_UNPREDICTABLE) + #define JSON_HEDLEY_UNPREDICTABLE(expr) JSON_HEDLEY_PREDICT(expr, 1, 0.5) +#endif + +#if defined(JSON_HEDLEY_MALLOC) + #undef JSON_HEDLEY_MALLOC +#endif +#if \ + JSON_HEDLEY_HAS_ATTRIBUTE(malloc) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(3,1,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,11,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \ + JSON_HEDLEY_IBM_VERSION_CHECK(12,1,0) || \ + JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \ + (JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4,8,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \ + (JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,4,0) || \ + (JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \ + (JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,2,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,5,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_MALLOC __attribute__((__malloc__)) +#elif JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,10,0) + #define JSON_HEDLEY_MALLOC _Pragma("returns_new_memory") +#elif \ + JSON_HEDLEY_MSVC_VERSION_CHECK(14,0,0) || \ + JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) + #define JSON_HEDLEY_MALLOC __declspec(restrict) +#else + #define JSON_HEDLEY_MALLOC +#endif + +#if defined(JSON_HEDLEY_PURE) + #undef JSON_HEDLEY_PURE +#endif +#if \ + JSON_HEDLEY_HAS_ATTRIBUTE(pure) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(2,96,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,11,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \ + JSON_HEDLEY_IBM_VERSION_CHECK(10,1,0) || \ + JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \ + (JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4,8,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \ + (JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,4,0) || \ + (JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \ + (JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,2,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,5,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) || \ + JSON_HEDLEY_PGI_VERSION_CHECK(17,10,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) +# define JSON_HEDLEY_PURE __attribute__((__pure__)) +#elif JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,10,0) +# define JSON_HEDLEY_PURE _Pragma("does_not_write_global_data") +#elif defined(__cplusplus) && \ + ( \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(2,0,1) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(4,0,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) \ + ) +# define JSON_HEDLEY_PURE _Pragma("FUNC_IS_PURE;") +#else +# define JSON_HEDLEY_PURE +#endif + +#if defined(JSON_HEDLEY_CONST) + #undef JSON_HEDLEY_CONST +#endif +#if \ + JSON_HEDLEY_HAS_ATTRIBUTE(const) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(2,5,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,11,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \ + JSON_HEDLEY_IBM_VERSION_CHECK(10,1,0) || \ + JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \ + (JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4,8,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \ + (JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,4,0) || \ + (JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \ + (JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,2,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,5,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) || \ + JSON_HEDLEY_PGI_VERSION_CHECK(17,10,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_CONST __attribute__((__const__)) +#elif \ + JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,10,0) + #define JSON_HEDLEY_CONST _Pragma("no_side_effect") +#else + #define JSON_HEDLEY_CONST JSON_HEDLEY_PURE +#endif + +#if defined(JSON_HEDLEY_RESTRICT) + #undef JSON_HEDLEY_RESTRICT +#endif +#if defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) && !defined(__cplusplus) + #define JSON_HEDLEY_RESTRICT restrict +#elif \ + JSON_HEDLEY_GCC_VERSION_CHECK(3,1,0) || \ + JSON_HEDLEY_MSVC_VERSION_CHECK(14,0,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \ + JSON_HEDLEY_IBM_VERSION_CHECK(10,1,0) || \ + JSON_HEDLEY_PGI_VERSION_CHECK(17,10,0) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,2,4) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(8,1,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + (JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,14,0) && defined(__cplusplus)) || \ + JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0) || \ + defined(__clang__) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_RESTRICT __restrict +#elif JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,3,0) && !defined(__cplusplus) + #define JSON_HEDLEY_RESTRICT _Restrict +#else + #define JSON_HEDLEY_RESTRICT +#endif + +#if defined(JSON_HEDLEY_INLINE) + #undef JSON_HEDLEY_INLINE +#endif +#if \ + (defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) || \ + (defined(__cplusplus) && (__cplusplus >= 199711L)) + #define JSON_HEDLEY_INLINE inline +#elif \ + defined(JSON_HEDLEY_GCC_VERSION) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(6,2,0) + #define JSON_HEDLEY_INLINE __inline__ +#elif \ + JSON_HEDLEY_MSVC_VERSION_CHECK(12,0,0) || \ + JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \ + JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,1,0) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(3,1,0) || \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,2,0) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(8,0,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_INLINE __inline +#else + #define JSON_HEDLEY_INLINE +#endif + +#if defined(JSON_HEDLEY_ALWAYS_INLINE) + #undef JSON_HEDLEY_ALWAYS_INLINE +#endif +#if \ + JSON_HEDLEY_HAS_ATTRIBUTE(always_inline) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(4,0,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,11,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \ + JSON_HEDLEY_IBM_VERSION_CHECK(10,1,0) || \ + JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \ + (JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4,8,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \ + (JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,4,0) || \ + (JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \ + (JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,2,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,5,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) || \ + JSON_HEDLEY_IAR_VERSION_CHECK(8,10,0) +# define JSON_HEDLEY_ALWAYS_INLINE __attribute__((__always_inline__)) JSON_HEDLEY_INLINE +#elif \ + JSON_HEDLEY_MSVC_VERSION_CHECK(12,0,0) || \ + JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) +# define JSON_HEDLEY_ALWAYS_INLINE __forceinline +#elif defined(__cplusplus) && \ + ( \ + JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,4,0) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(6,1,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) \ + ) +# define JSON_HEDLEY_ALWAYS_INLINE _Pragma("FUNC_ALWAYS_INLINE;") +#elif JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0) +# define JSON_HEDLEY_ALWAYS_INLINE _Pragma("inline=forced") +#else +# define JSON_HEDLEY_ALWAYS_INLINE JSON_HEDLEY_INLINE +#endif + +#if defined(JSON_HEDLEY_NEVER_INLINE) + #undef JSON_HEDLEY_NEVER_INLINE +#endif +#if \ + JSON_HEDLEY_HAS_ATTRIBUTE(noinline) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(4,0,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,11,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \ + JSON_HEDLEY_IBM_VERSION_CHECK(10,1,0) || \ + JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \ + (JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4,8,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \ + (JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,4,0) || \ + (JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \ + (JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,2,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,5,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) || \ + JSON_HEDLEY_IAR_VERSION_CHECK(8,10,0) + #define JSON_HEDLEY_NEVER_INLINE __attribute__((__noinline__)) +#elif \ + JSON_HEDLEY_MSVC_VERSION_CHECK(13,10,0) || \ + JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) + #define JSON_HEDLEY_NEVER_INLINE __declspec(noinline) +#elif JSON_HEDLEY_PGI_VERSION_CHECK(10,2,0) + #define JSON_HEDLEY_NEVER_INLINE _Pragma("noinline") +#elif JSON_HEDLEY_TI_CL6X_VERSION_CHECK(6,0,0) && defined(__cplusplus) + #define JSON_HEDLEY_NEVER_INLINE _Pragma("FUNC_CANNOT_INLINE;") +#elif JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0) + #define JSON_HEDLEY_NEVER_INLINE _Pragma("inline=never") +#elif JSON_HEDLEY_COMPCERT_VERSION_CHECK(3,2,0) + #define JSON_HEDLEY_NEVER_INLINE __attribute((noinline)) +#elif JSON_HEDLEY_PELLES_VERSION_CHECK(9,0,0) + #define JSON_HEDLEY_NEVER_INLINE __declspec(noinline) +#else + #define JSON_HEDLEY_NEVER_INLINE +#endif + +#if defined(JSON_HEDLEY_PRIVATE) + #undef JSON_HEDLEY_PRIVATE +#endif +#if defined(JSON_HEDLEY_PUBLIC) + #undef JSON_HEDLEY_PUBLIC +#endif +#if defined(JSON_HEDLEY_IMPORT) + #undef JSON_HEDLEY_IMPORT +#endif +#if defined(_WIN32) || defined(__CYGWIN__) +# define JSON_HEDLEY_PRIVATE +# define JSON_HEDLEY_PUBLIC __declspec(dllexport) +# define JSON_HEDLEY_IMPORT __declspec(dllimport) +#else +# if \ + JSON_HEDLEY_HAS_ATTRIBUTE(visibility) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(3,3,0) || \ + JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,11,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \ + JSON_HEDLEY_IBM_VERSION_CHECK(13,1,0) || \ + ( \ + defined(__TI_EABI__) && \ + ( \ + (JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,2,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,5,0) \ + ) \ + ) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) +# define JSON_HEDLEY_PRIVATE __attribute__((__visibility__("hidden"))) +# define JSON_HEDLEY_PUBLIC __attribute__((__visibility__("default"))) +# else +# define JSON_HEDLEY_PRIVATE +# define JSON_HEDLEY_PUBLIC +# endif +# define JSON_HEDLEY_IMPORT extern +#endif + +#if defined(JSON_HEDLEY_NO_THROW) + #undef JSON_HEDLEY_NO_THROW +#endif +#if \ + JSON_HEDLEY_HAS_ATTRIBUTE(nothrow) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(3,3,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_NO_THROW __attribute__((__nothrow__)) +#elif \ + JSON_HEDLEY_MSVC_VERSION_CHECK(13,1,0) || \ + JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) + #define JSON_HEDLEY_NO_THROW __declspec(nothrow) +#else + #define JSON_HEDLEY_NO_THROW +#endif + +#if defined(JSON_HEDLEY_FALL_THROUGH) + #undef JSON_HEDLEY_FALL_THROUGH +#endif +#if \ + JSON_HEDLEY_HAS_ATTRIBUTE(fallthrough) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(7,0,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_FALL_THROUGH __attribute__((__fallthrough__)) +#elif JSON_HEDLEY_HAS_CPP_ATTRIBUTE_NS(clang,fallthrough) + #define JSON_HEDLEY_FALL_THROUGH JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[clang::fallthrough]]) +#elif JSON_HEDLEY_HAS_CPP_ATTRIBUTE(fallthrough) + #define JSON_HEDLEY_FALL_THROUGH JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[fallthrough]]) +#elif defined(__fallthrough) /* SAL */ + #define JSON_HEDLEY_FALL_THROUGH __fallthrough +#else + #define JSON_HEDLEY_FALL_THROUGH +#endif + +#if defined(JSON_HEDLEY_RETURNS_NON_NULL) + #undef JSON_HEDLEY_RETURNS_NON_NULL +#endif +#if \ + JSON_HEDLEY_HAS_ATTRIBUTE(returns_nonnull) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(4,9,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_RETURNS_NON_NULL __attribute__((__returns_nonnull__)) +#elif defined(_Ret_notnull_) /* SAL */ + #define JSON_HEDLEY_RETURNS_NON_NULL _Ret_notnull_ +#else + #define JSON_HEDLEY_RETURNS_NON_NULL +#endif + +#if defined(JSON_HEDLEY_ARRAY_PARAM) + #undef JSON_HEDLEY_ARRAY_PARAM +#endif +#if \ + defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) && \ + !defined(__STDC_NO_VLA__) && \ + !defined(__cplusplus) && \ + !defined(JSON_HEDLEY_PGI_VERSION) && \ + !defined(JSON_HEDLEY_TINYC_VERSION) + #define JSON_HEDLEY_ARRAY_PARAM(name) (name) +#else + #define JSON_HEDLEY_ARRAY_PARAM(name) +#endif + +#if defined(JSON_HEDLEY_IS_CONSTANT) + #undef JSON_HEDLEY_IS_CONSTANT +#endif +#if defined(JSON_HEDLEY_REQUIRE_CONSTEXPR) + #undef JSON_HEDLEY_REQUIRE_CONSTEXPR +#endif +/* JSON_HEDLEY_IS_CONSTEXPR_ is for + HEDLEY INTERNAL USE ONLY. API subject to change without notice. */ +#if defined(JSON_HEDLEY_IS_CONSTEXPR_) + #undef JSON_HEDLEY_IS_CONSTEXPR_ +#endif +#if \ + JSON_HEDLEY_HAS_BUILTIN(__builtin_constant_p) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(3,4,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_TINYC_VERSION_CHECK(0,9,19) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \ + JSON_HEDLEY_IBM_VERSION_CHECK(13,1,0) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(6,1,0) || \ + (JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,10,0) && !defined(__cplusplus)) || \ + JSON_HEDLEY_CRAY_VERSION_CHECK(8,1,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_IS_CONSTANT(expr) __builtin_constant_p(expr) +#endif +#if !defined(__cplusplus) +# if \ + JSON_HEDLEY_HAS_BUILTIN(__builtin_types_compatible_p) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(3,4,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_IBM_VERSION_CHECK(13,1,0) || \ + JSON_HEDLEY_CRAY_VERSION_CHECK(8,1,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(5,4,0) || \ + JSON_HEDLEY_TINYC_VERSION_CHECK(0,9,24) +#if defined(__INTPTR_TYPE__) + #define JSON_HEDLEY_IS_CONSTEXPR_(expr) __builtin_types_compatible_p(__typeof__((1 ? (void*) ((__INTPTR_TYPE__) ((expr) * 0)) : (int*) 0)), int*) +#else + #include + #define JSON_HEDLEY_IS_CONSTEXPR_(expr) __builtin_types_compatible_p(__typeof__((1 ? (void*) ((intptr_t) ((expr) * 0)) : (int*) 0)), int*) +#endif +# elif \ + ( \ + defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 201112L) && \ + !defined(JSON_HEDLEY_SUNPRO_VERSION) && \ + !defined(JSON_HEDLEY_PGI_VERSION) && \ + !defined(JSON_HEDLEY_IAR_VERSION)) || \ + (JSON_HEDLEY_HAS_EXTENSION(c_generic_selections) && !defined(JSON_HEDLEY_IAR_VERSION)) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(4,9,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(17,0,0) || \ + JSON_HEDLEY_IBM_VERSION_CHECK(12,1,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(5,3,0) +#if defined(__INTPTR_TYPE__) + #define JSON_HEDLEY_IS_CONSTEXPR_(expr) _Generic((1 ? (void*) ((__INTPTR_TYPE__) ((expr) * 0)) : (int*) 0), int*: 1, void*: 0) +#else + #include + #define JSON_HEDLEY_IS_CONSTEXPR_(expr) _Generic((1 ? (void*) ((intptr_t) * 0) : (int*) 0), int*: 1, void*: 0) +#endif +# elif \ + defined(JSON_HEDLEY_GCC_VERSION) || \ + defined(JSON_HEDLEY_INTEL_VERSION) || \ + defined(JSON_HEDLEY_TINYC_VERSION) || \ + defined(JSON_HEDLEY_TI_ARMCL_VERSION) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(18,12,0) || \ + defined(JSON_HEDLEY_TI_CL2000_VERSION) || \ + defined(JSON_HEDLEY_TI_CL6X_VERSION) || \ + defined(JSON_HEDLEY_TI_CL7X_VERSION) || \ + defined(JSON_HEDLEY_TI_CLPRU_VERSION) || \ + defined(__clang__) +# define JSON_HEDLEY_IS_CONSTEXPR_(expr) ( \ + sizeof(void) != \ + sizeof(*( \ + 1 ? \ + ((void*) ((expr) * 0L) ) : \ +((struct { char v[sizeof(void) * 2]; } *) 1) \ + ) \ + ) \ + ) +# endif +#endif +#if defined(JSON_HEDLEY_IS_CONSTEXPR_) + #if !defined(JSON_HEDLEY_IS_CONSTANT) + #define JSON_HEDLEY_IS_CONSTANT(expr) JSON_HEDLEY_IS_CONSTEXPR_(expr) + #endif + #define JSON_HEDLEY_REQUIRE_CONSTEXPR(expr) (JSON_HEDLEY_IS_CONSTEXPR_(expr) ? (expr) : (-1)) +#else + #if !defined(JSON_HEDLEY_IS_CONSTANT) + #define JSON_HEDLEY_IS_CONSTANT(expr) (0) + #endif + #define JSON_HEDLEY_REQUIRE_CONSTEXPR(expr) (expr) +#endif + +#if defined(JSON_HEDLEY_BEGIN_C_DECLS) + #undef JSON_HEDLEY_BEGIN_C_DECLS +#endif +#if defined(JSON_HEDLEY_END_C_DECLS) + #undef JSON_HEDLEY_END_C_DECLS +#endif +#if defined(JSON_HEDLEY_C_DECL) + #undef JSON_HEDLEY_C_DECL +#endif +#if defined(__cplusplus) + #define JSON_HEDLEY_BEGIN_C_DECLS extern "C" { + #define JSON_HEDLEY_END_C_DECLS } + #define JSON_HEDLEY_C_DECL extern "C" +#else + #define JSON_HEDLEY_BEGIN_C_DECLS + #define JSON_HEDLEY_END_C_DECLS + #define JSON_HEDLEY_C_DECL +#endif + +#if defined(JSON_HEDLEY_STATIC_ASSERT) + #undef JSON_HEDLEY_STATIC_ASSERT +#endif +#if \ + !defined(__cplusplus) && ( \ + (defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 201112L)) || \ + (JSON_HEDLEY_HAS_FEATURE(c_static_assert) && !defined(JSON_HEDLEY_INTEL_CL_VERSION)) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(6,0,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + defined(_Static_assert) \ + ) +# define JSON_HEDLEY_STATIC_ASSERT(expr, message) _Static_assert(expr, message) +#elif \ + (defined(__cplusplus) && (__cplusplus >= 201103L)) || \ + JSON_HEDLEY_MSVC_VERSION_CHECK(16,0,0) || \ + JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) +# define JSON_HEDLEY_STATIC_ASSERT(expr, message) JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_(static_assert(expr, message)) +#else +# define JSON_HEDLEY_STATIC_ASSERT(expr, message) +#endif + +#if defined(JSON_HEDLEY_NULL) + #undef JSON_HEDLEY_NULL +#endif +#if defined(__cplusplus) + #if __cplusplus >= 201103L + #define JSON_HEDLEY_NULL JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_(nullptr) + #elif defined(NULL) + #define JSON_HEDLEY_NULL NULL + #else + #define JSON_HEDLEY_NULL JSON_HEDLEY_STATIC_CAST(void*, 0) + #endif +#elif defined(NULL) + #define JSON_HEDLEY_NULL NULL +#else + #define JSON_HEDLEY_NULL ((void*) 0) +#endif + +#if defined(JSON_HEDLEY_MESSAGE) + #undef JSON_HEDLEY_MESSAGE +#endif +#if JSON_HEDLEY_HAS_WARNING("-Wunknown-pragmas") +# define JSON_HEDLEY_MESSAGE(msg) \ + JSON_HEDLEY_DIAGNOSTIC_PUSH \ + JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS \ + JSON_HEDLEY_PRAGMA(message msg) \ + JSON_HEDLEY_DIAGNOSTIC_POP +#elif \ + JSON_HEDLEY_GCC_VERSION_CHECK(4,4,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) +# define JSON_HEDLEY_MESSAGE(msg) JSON_HEDLEY_PRAGMA(message msg) +#elif JSON_HEDLEY_CRAY_VERSION_CHECK(5,0,0) +# define JSON_HEDLEY_MESSAGE(msg) JSON_HEDLEY_PRAGMA(_CRI message msg) +#elif JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0) +# define JSON_HEDLEY_MESSAGE(msg) JSON_HEDLEY_PRAGMA(message(msg)) +#elif JSON_HEDLEY_PELLES_VERSION_CHECK(2,0,0) +# define JSON_HEDLEY_MESSAGE(msg) JSON_HEDLEY_PRAGMA(message(msg)) +#else +# define JSON_HEDLEY_MESSAGE(msg) +#endif + +#if defined(JSON_HEDLEY_WARNING) + #undef JSON_HEDLEY_WARNING +#endif +#if JSON_HEDLEY_HAS_WARNING("-Wunknown-pragmas") +# define JSON_HEDLEY_WARNING(msg) \ + JSON_HEDLEY_DIAGNOSTIC_PUSH \ + JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS \ + JSON_HEDLEY_PRAGMA(clang warning msg) \ + JSON_HEDLEY_DIAGNOSTIC_POP +#elif \ + JSON_HEDLEY_GCC_VERSION_CHECK(4,8,0) || \ + JSON_HEDLEY_PGI_VERSION_CHECK(18,4,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) +# define JSON_HEDLEY_WARNING(msg) JSON_HEDLEY_PRAGMA(GCC warning msg) +#elif \ + JSON_HEDLEY_MSVC_VERSION_CHECK(15,0,0) || \ + JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) +# define JSON_HEDLEY_WARNING(msg) JSON_HEDLEY_PRAGMA(message(msg)) +#else +# define JSON_HEDLEY_WARNING(msg) JSON_HEDLEY_MESSAGE(msg) +#endif + +#if defined(JSON_HEDLEY_REQUIRE) + #undef JSON_HEDLEY_REQUIRE +#endif +#if defined(JSON_HEDLEY_REQUIRE_MSG) + #undef JSON_HEDLEY_REQUIRE_MSG +#endif +#if JSON_HEDLEY_HAS_ATTRIBUTE(diagnose_if) +# if JSON_HEDLEY_HAS_WARNING("-Wgcc-compat") +# define JSON_HEDLEY_REQUIRE(expr) \ + JSON_HEDLEY_DIAGNOSTIC_PUSH \ + _Pragma("clang diagnostic ignored \"-Wgcc-compat\"") \ + __attribute__((diagnose_if(!(expr), #expr, "error"))) \ + JSON_HEDLEY_DIAGNOSTIC_POP +# define JSON_HEDLEY_REQUIRE_MSG(expr,msg) \ + JSON_HEDLEY_DIAGNOSTIC_PUSH \ + _Pragma("clang diagnostic ignored \"-Wgcc-compat\"") \ + __attribute__((diagnose_if(!(expr), msg, "error"))) \ + JSON_HEDLEY_DIAGNOSTIC_POP +# else +# define JSON_HEDLEY_REQUIRE(expr) __attribute__((diagnose_if(!(expr), #expr, "error"))) +# define JSON_HEDLEY_REQUIRE_MSG(expr,msg) __attribute__((diagnose_if(!(expr), msg, "error"))) +# endif +#else +# define JSON_HEDLEY_REQUIRE(expr) +# define JSON_HEDLEY_REQUIRE_MSG(expr,msg) +#endif + +#if defined(JSON_HEDLEY_FLAGS) + #undef JSON_HEDLEY_FLAGS +#endif +#if JSON_HEDLEY_HAS_ATTRIBUTE(flag_enum) && (!defined(__cplusplus) || JSON_HEDLEY_HAS_WARNING("-Wbitfield-enum-conversion")) + #define JSON_HEDLEY_FLAGS __attribute__((__flag_enum__)) +#else + #define JSON_HEDLEY_FLAGS +#endif + +#if defined(JSON_HEDLEY_FLAGS_CAST) + #undef JSON_HEDLEY_FLAGS_CAST +#endif +#if JSON_HEDLEY_INTEL_VERSION_CHECK(19,0,0) +# define JSON_HEDLEY_FLAGS_CAST(T, expr) (__extension__ ({ \ + JSON_HEDLEY_DIAGNOSTIC_PUSH \ + _Pragma("warning(disable:188)") \ + ((T) (expr)); \ + JSON_HEDLEY_DIAGNOSTIC_POP \ + })) +#else +# define JSON_HEDLEY_FLAGS_CAST(T, expr) JSON_HEDLEY_STATIC_CAST(T, expr) +#endif + +#if defined(JSON_HEDLEY_EMPTY_BASES) + #undef JSON_HEDLEY_EMPTY_BASES +#endif +#if \ + (JSON_HEDLEY_MSVC_VERSION_CHECK(19,0,23918) && !JSON_HEDLEY_MSVC_VERSION_CHECK(20,0,0)) || \ + JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) + #define JSON_HEDLEY_EMPTY_BASES __declspec(empty_bases) +#else + #define JSON_HEDLEY_EMPTY_BASES +#endif + +/* Remaining macros are deprecated. */ + +#if defined(JSON_HEDLEY_GCC_NOT_CLANG_VERSION_CHECK) + #undef JSON_HEDLEY_GCC_NOT_CLANG_VERSION_CHECK +#endif +#if defined(__clang__) + #define JSON_HEDLEY_GCC_NOT_CLANG_VERSION_CHECK(major,minor,patch) (0) +#else + #define JSON_HEDLEY_GCC_NOT_CLANG_VERSION_CHECK(major,minor,patch) JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch) +#endif + +#if defined(JSON_HEDLEY_CLANG_HAS_ATTRIBUTE) + #undef JSON_HEDLEY_CLANG_HAS_ATTRIBUTE +#endif +#define JSON_HEDLEY_CLANG_HAS_ATTRIBUTE(attribute) JSON_HEDLEY_HAS_ATTRIBUTE(attribute) + +#if defined(JSON_HEDLEY_CLANG_HAS_CPP_ATTRIBUTE) + #undef JSON_HEDLEY_CLANG_HAS_CPP_ATTRIBUTE +#endif +#define JSON_HEDLEY_CLANG_HAS_CPP_ATTRIBUTE(attribute) JSON_HEDLEY_HAS_CPP_ATTRIBUTE(attribute) + +#if defined(JSON_HEDLEY_CLANG_HAS_BUILTIN) + #undef JSON_HEDLEY_CLANG_HAS_BUILTIN +#endif +#define JSON_HEDLEY_CLANG_HAS_BUILTIN(builtin) JSON_HEDLEY_HAS_BUILTIN(builtin) + +#if defined(JSON_HEDLEY_CLANG_HAS_FEATURE) + #undef JSON_HEDLEY_CLANG_HAS_FEATURE +#endif +#define JSON_HEDLEY_CLANG_HAS_FEATURE(feature) JSON_HEDLEY_HAS_FEATURE(feature) + +#if defined(JSON_HEDLEY_CLANG_HAS_EXTENSION) + #undef JSON_HEDLEY_CLANG_HAS_EXTENSION +#endif +#define JSON_HEDLEY_CLANG_HAS_EXTENSION(extension) JSON_HEDLEY_HAS_EXTENSION(extension) + +#if defined(JSON_HEDLEY_CLANG_HAS_DECLSPEC_DECLSPEC_ATTRIBUTE) + #undef JSON_HEDLEY_CLANG_HAS_DECLSPEC_DECLSPEC_ATTRIBUTE +#endif +#define JSON_HEDLEY_CLANG_HAS_DECLSPEC_ATTRIBUTE(attribute) JSON_HEDLEY_HAS_DECLSPEC_ATTRIBUTE(attribute) + +#if defined(JSON_HEDLEY_CLANG_HAS_WARNING) + #undef JSON_HEDLEY_CLANG_HAS_WARNING +#endif +#define JSON_HEDLEY_CLANG_HAS_WARNING(warning) JSON_HEDLEY_HAS_WARNING(warning) + +#endif /* !defined(JSON_HEDLEY_VERSION) || (JSON_HEDLEY_VERSION < X) */ + + +// This file contains all internal macro definitions (except those affecting ABI) +// You MUST include macro_unscope.hpp at the end of json.hpp to undef all of them + +// #include + + +// exclude unsupported compilers +#if !defined(JSON_SKIP_UNSUPPORTED_COMPILER_CHECK) + #if defined(__clang__) + #if (__clang_major__ * 10000 + __clang_minor__ * 100 + __clang_patchlevel__) < 30400 + #error "unsupported Clang version - see https://github.com/nlohmann/json#supported-compilers" + #endif + #elif defined(__GNUC__) && !(defined(__ICC) || defined(__INTEL_COMPILER)) + #if (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__) < 40800 + #error "unsupported GCC version - see https://github.com/nlohmann/json#supported-compilers" + #endif + #endif +#endif + +// C++ language standard detection +// if the user manually specified the used c++ version this is skipped +#if !defined(JSON_HAS_CPP_20) && !defined(JSON_HAS_CPP_17) && !defined(JSON_HAS_CPP_14) && !defined(JSON_HAS_CPP_11) + #if (defined(__cplusplus) && __cplusplus >= 202002L) || (defined(_MSVC_LANG) && _MSVC_LANG >= 202002L) + #define JSON_HAS_CPP_20 + #define JSON_HAS_CPP_17 + #define JSON_HAS_CPP_14 + #elif (defined(__cplusplus) && __cplusplus >= 201703L) || (defined(_HAS_CXX17) && _HAS_CXX17 == 1) // fix for issue #464 + #define JSON_HAS_CPP_17 + #define JSON_HAS_CPP_14 + #elif (defined(__cplusplus) && __cplusplus >= 201402L) || (defined(_HAS_CXX14) && _HAS_CXX14 == 1) + #define JSON_HAS_CPP_14 + #endif + // the cpp 11 flag is always specified because it is the minimal required version + #define JSON_HAS_CPP_11 +#endif + +#ifdef __has_include + #if __has_include() + #include + #endif +#endif + +#if !defined(JSON_HAS_FILESYSTEM) && !defined(JSON_HAS_EXPERIMENTAL_FILESYSTEM) + #ifdef JSON_HAS_CPP_17 + #if defined(__cpp_lib_filesystem) + #define JSON_HAS_FILESYSTEM 1 + #elif defined(__cpp_lib_experimental_filesystem) + #define JSON_HAS_EXPERIMENTAL_FILESYSTEM 1 + #elif !defined(__has_include) + #define JSON_HAS_EXPERIMENTAL_FILESYSTEM 1 + #elif __has_include() + #define JSON_HAS_FILESYSTEM 1 + #elif __has_include() + #define JSON_HAS_EXPERIMENTAL_FILESYSTEM 1 + #endif + + // std::filesystem does not work on MinGW GCC 8: https://sourceforge.net/p/mingw-w64/bugs/737/ + #if defined(__MINGW32__) && defined(__GNUC__) && __GNUC__ == 8 + #undef JSON_HAS_FILESYSTEM + #undef JSON_HAS_EXPERIMENTAL_FILESYSTEM + #endif + + // no filesystem support before GCC 8: https://en.cppreference.com/w/cpp/compiler_support + #if defined(__GNUC__) && !defined(__clang__) && __GNUC__ < 8 + #undef JSON_HAS_FILESYSTEM + #undef JSON_HAS_EXPERIMENTAL_FILESYSTEM + #endif + + // no filesystem support before Clang 7: https://en.cppreference.com/w/cpp/compiler_support + #if defined(__clang_major__) && __clang_major__ < 7 + #undef JSON_HAS_FILESYSTEM + #undef JSON_HAS_EXPERIMENTAL_FILESYSTEM + #endif + + // no filesystem support before MSVC 19.14: https://en.cppreference.com/w/cpp/compiler_support + #if defined(_MSC_VER) && _MSC_VER < 1914 + #undef JSON_HAS_FILESYSTEM + #undef JSON_HAS_EXPERIMENTAL_FILESYSTEM + #endif + + // no filesystem support before iOS 13 + #if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) && __IPHONE_OS_VERSION_MIN_REQUIRED < 130000 + #undef JSON_HAS_FILESYSTEM + #undef JSON_HAS_EXPERIMENTAL_FILESYSTEM + #endif + + // no filesystem support before macOS Catalina + #if defined(__MAC_OS_X_VERSION_MIN_REQUIRED) && __MAC_OS_X_VERSION_MIN_REQUIRED < 101500 + #undef JSON_HAS_FILESYSTEM + #undef JSON_HAS_EXPERIMENTAL_FILESYSTEM + #endif + #endif +#endif + +#ifndef JSON_HAS_EXPERIMENTAL_FILESYSTEM + #define JSON_HAS_EXPERIMENTAL_FILESYSTEM 0 +#endif + +#ifndef JSON_HAS_FILESYSTEM + #define JSON_HAS_FILESYSTEM 0 +#endif + +#ifndef JSON_HAS_THREE_WAY_COMPARISON + #if defined(__cpp_impl_three_way_comparison) && __cpp_impl_three_way_comparison >= 201907L \ + && defined(__cpp_lib_three_way_comparison) && __cpp_lib_three_way_comparison >= 201907L + #define JSON_HAS_THREE_WAY_COMPARISON 1 + #else + #define JSON_HAS_THREE_WAY_COMPARISON 0 + #endif +#endif + +#ifndef JSON_HAS_RANGES + // ranges header shipping in GCC 11.1.0 (released 2021-04-27) has syntax error + #if defined(__GLIBCXX__) && __GLIBCXX__ == 20210427 + #define JSON_HAS_RANGES 0 + #elif defined(__cpp_lib_ranges) + #define JSON_HAS_RANGES 1 + #else + #define JSON_HAS_RANGES 0 + #endif +#endif + +#ifdef JSON_HAS_CPP_17 + #define JSON_INLINE_VARIABLE inline +#else + #define JSON_INLINE_VARIABLE +#endif + +#if JSON_HEDLEY_HAS_ATTRIBUTE(no_unique_address) + #define JSON_NO_UNIQUE_ADDRESS [[no_unique_address]] +#else + #define JSON_NO_UNIQUE_ADDRESS +#endif + +// disable documentation warnings on clang +#if defined(__clang__) + #pragma clang diagnostic push + #pragma clang diagnostic ignored "-Wdocumentation" + #pragma clang diagnostic ignored "-Wdocumentation-unknown-command" +#endif + +// allow disabling exceptions +#if (defined(__cpp_exceptions) || defined(__EXCEPTIONS) || defined(_CPPUNWIND)) && !defined(JSON_NOEXCEPTION) + #define JSON_THROW(exception) throw exception + #define JSON_TRY try + #define JSON_CATCH(exception) catch(exception) + #define JSON_INTERNAL_CATCH(exception) catch(exception) +#else + #include + #define JSON_THROW(exception) std::abort() + #define JSON_TRY if(true) + #define JSON_CATCH(exception) if(false) + #define JSON_INTERNAL_CATCH(exception) if(false) +#endif + +// override exception macros +#if defined(JSON_THROW_USER) + #undef JSON_THROW + #define JSON_THROW JSON_THROW_USER +#endif +#if defined(JSON_TRY_USER) + #undef JSON_TRY + #define JSON_TRY JSON_TRY_USER +#endif +#if defined(JSON_CATCH_USER) + #undef JSON_CATCH + #define JSON_CATCH JSON_CATCH_USER + #undef JSON_INTERNAL_CATCH + #define JSON_INTERNAL_CATCH JSON_CATCH_USER +#endif +#if defined(JSON_INTERNAL_CATCH_USER) + #undef JSON_INTERNAL_CATCH + #define JSON_INTERNAL_CATCH JSON_INTERNAL_CATCH_USER +#endif + +// allow overriding assert +#if !defined(JSON_ASSERT) + #include // assert + #define JSON_ASSERT(x) assert(x) +#endif + +// allow to access some private functions (needed by the test suite) +#if defined(JSON_TESTS_PRIVATE) + #define JSON_PRIVATE_UNLESS_TESTED public +#else + #define JSON_PRIVATE_UNLESS_TESTED private +#endif + +/*! +@brief macro to briefly define a mapping between an enum and JSON +@def NLOHMANN_JSON_SERIALIZE_ENUM +@since version 3.4.0 +*/ +#define NLOHMANN_JSON_SERIALIZE_ENUM(ENUM_TYPE, ...) \ + template \ + inline void to_json(BasicJsonType& j, const ENUM_TYPE& e) \ + { \ + static_assert(std::is_enum::value, #ENUM_TYPE " must be an enum!"); \ + static const std::pair m[] = __VA_ARGS__; \ + auto it = std::find_if(std::begin(m), std::end(m), \ + [e](const std::pair& ej_pair) -> bool \ + { \ + return ej_pair.first == e; \ + }); \ + j = ((it != std::end(m)) ? it : std::begin(m))->second; \ + } \ + template \ + inline void from_json(const BasicJsonType& j, ENUM_TYPE& e) \ + { \ + static_assert(std::is_enum::value, #ENUM_TYPE " must be an enum!"); \ + static const std::pair m[] = __VA_ARGS__; \ + auto it = std::find_if(std::begin(m), std::end(m), \ + [&j](const std::pair& ej_pair) -> bool \ + { \ + return ej_pair.second == j; \ + }); \ + e = ((it != std::end(m)) ? it : std::begin(m))->first; \ + } + +// Ugly macros to avoid uglier copy-paste when specializing basic_json. They +// may be removed in the future once the class is split. + +#define NLOHMANN_BASIC_JSON_TPL_DECLARATION \ + template class ObjectType, \ + template class ArrayType, \ + class StringType, class BooleanType, class NumberIntegerType, \ + class NumberUnsignedType, class NumberFloatType, \ + template class AllocatorType, \ + template class JSONSerializer, \ + class BinaryType> + +#define NLOHMANN_BASIC_JSON_TPL \ + basic_json + +// Macros to simplify conversion from/to types + +#define NLOHMANN_JSON_EXPAND( x ) x +#define NLOHMANN_JSON_GET_MACRO(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, _61, _62, _63, _64, NAME,...) NAME +#define NLOHMANN_JSON_PASTE(...) NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_GET_MACRO(__VA_ARGS__, \ + NLOHMANN_JSON_PASTE64, \ + NLOHMANN_JSON_PASTE63, \ + NLOHMANN_JSON_PASTE62, \ + NLOHMANN_JSON_PASTE61, \ + NLOHMANN_JSON_PASTE60, \ + NLOHMANN_JSON_PASTE59, \ + NLOHMANN_JSON_PASTE58, \ + NLOHMANN_JSON_PASTE57, \ + NLOHMANN_JSON_PASTE56, \ + NLOHMANN_JSON_PASTE55, \ + NLOHMANN_JSON_PASTE54, \ + NLOHMANN_JSON_PASTE53, \ + NLOHMANN_JSON_PASTE52, \ + NLOHMANN_JSON_PASTE51, \ + NLOHMANN_JSON_PASTE50, \ + NLOHMANN_JSON_PASTE49, \ + NLOHMANN_JSON_PASTE48, \ + NLOHMANN_JSON_PASTE47, \ + NLOHMANN_JSON_PASTE46, \ + NLOHMANN_JSON_PASTE45, \ + NLOHMANN_JSON_PASTE44, \ + NLOHMANN_JSON_PASTE43, \ + NLOHMANN_JSON_PASTE42, \ + NLOHMANN_JSON_PASTE41, \ + NLOHMANN_JSON_PASTE40, \ + NLOHMANN_JSON_PASTE39, \ + NLOHMANN_JSON_PASTE38, \ + NLOHMANN_JSON_PASTE37, \ + NLOHMANN_JSON_PASTE36, \ + NLOHMANN_JSON_PASTE35, \ + NLOHMANN_JSON_PASTE34, \ + NLOHMANN_JSON_PASTE33, \ + NLOHMANN_JSON_PASTE32, \ + NLOHMANN_JSON_PASTE31, \ + NLOHMANN_JSON_PASTE30, \ + NLOHMANN_JSON_PASTE29, \ + NLOHMANN_JSON_PASTE28, \ + NLOHMANN_JSON_PASTE27, \ + NLOHMANN_JSON_PASTE26, \ + NLOHMANN_JSON_PASTE25, \ + NLOHMANN_JSON_PASTE24, \ + NLOHMANN_JSON_PASTE23, \ + NLOHMANN_JSON_PASTE22, \ + NLOHMANN_JSON_PASTE21, \ + NLOHMANN_JSON_PASTE20, \ + NLOHMANN_JSON_PASTE19, \ + NLOHMANN_JSON_PASTE18, \ + NLOHMANN_JSON_PASTE17, \ + NLOHMANN_JSON_PASTE16, \ + NLOHMANN_JSON_PASTE15, \ + NLOHMANN_JSON_PASTE14, \ + NLOHMANN_JSON_PASTE13, \ + NLOHMANN_JSON_PASTE12, \ + NLOHMANN_JSON_PASTE11, \ + NLOHMANN_JSON_PASTE10, \ + NLOHMANN_JSON_PASTE9, \ + NLOHMANN_JSON_PASTE8, \ + NLOHMANN_JSON_PASTE7, \ + NLOHMANN_JSON_PASTE6, \ + NLOHMANN_JSON_PASTE5, \ + NLOHMANN_JSON_PASTE4, \ + NLOHMANN_JSON_PASTE3, \ + NLOHMANN_JSON_PASTE2, \ + NLOHMANN_JSON_PASTE1)(__VA_ARGS__)) +#define NLOHMANN_JSON_PASTE2(func, v1) func(v1) +#define NLOHMANN_JSON_PASTE3(func, v1, v2) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE2(func, v2) +#define NLOHMANN_JSON_PASTE4(func, v1, v2, v3) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE3(func, v2, v3) +#define NLOHMANN_JSON_PASTE5(func, v1, v2, v3, v4) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE4(func, v2, v3, v4) +#define NLOHMANN_JSON_PASTE6(func, v1, v2, v3, v4, v5) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE5(func, v2, v3, v4, v5) +#define NLOHMANN_JSON_PASTE7(func, v1, v2, v3, v4, v5, v6) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE6(func, v2, v3, v4, v5, v6) +#define NLOHMANN_JSON_PASTE8(func, v1, v2, v3, v4, v5, v6, v7) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE7(func, v2, v3, v4, v5, v6, v7) +#define NLOHMANN_JSON_PASTE9(func, v1, v2, v3, v4, v5, v6, v7, v8) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE8(func, v2, v3, v4, v5, v6, v7, v8) +#define NLOHMANN_JSON_PASTE10(func, v1, v2, v3, v4, v5, v6, v7, v8, v9) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE9(func, v2, v3, v4, v5, v6, v7, v8, v9) +#define NLOHMANN_JSON_PASTE11(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE10(func, v2, v3, v4, v5, v6, v7, v8, v9, v10) +#define NLOHMANN_JSON_PASTE12(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE11(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11) +#define NLOHMANN_JSON_PASTE13(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE12(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12) +#define NLOHMANN_JSON_PASTE14(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE13(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13) +#define NLOHMANN_JSON_PASTE15(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE14(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14) +#define NLOHMANN_JSON_PASTE16(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE15(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15) +#define NLOHMANN_JSON_PASTE17(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE16(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16) +#define NLOHMANN_JSON_PASTE18(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE17(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17) +#define NLOHMANN_JSON_PASTE19(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE18(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18) +#define NLOHMANN_JSON_PASTE20(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE19(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19) +#define NLOHMANN_JSON_PASTE21(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE20(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20) +#define NLOHMANN_JSON_PASTE22(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE21(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21) +#define NLOHMANN_JSON_PASTE23(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE22(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22) +#define NLOHMANN_JSON_PASTE24(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE23(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23) +#define NLOHMANN_JSON_PASTE25(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE24(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24) +#define NLOHMANN_JSON_PASTE26(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE25(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25) +#define NLOHMANN_JSON_PASTE27(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE26(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26) +#define NLOHMANN_JSON_PASTE28(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE27(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27) +#define NLOHMANN_JSON_PASTE29(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE28(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28) +#define NLOHMANN_JSON_PASTE30(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE29(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29) +#define NLOHMANN_JSON_PASTE31(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE30(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30) +#define NLOHMANN_JSON_PASTE32(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE31(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31) +#define NLOHMANN_JSON_PASTE33(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE32(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32) +#define NLOHMANN_JSON_PASTE34(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE33(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33) +#define NLOHMANN_JSON_PASTE35(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE34(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34) +#define NLOHMANN_JSON_PASTE36(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE35(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35) +#define NLOHMANN_JSON_PASTE37(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE36(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36) +#define NLOHMANN_JSON_PASTE38(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE37(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37) +#define NLOHMANN_JSON_PASTE39(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE38(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38) +#define NLOHMANN_JSON_PASTE40(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE39(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39) +#define NLOHMANN_JSON_PASTE41(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE40(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40) +#define NLOHMANN_JSON_PASTE42(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE41(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41) +#define NLOHMANN_JSON_PASTE43(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE42(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42) +#define NLOHMANN_JSON_PASTE44(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE43(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43) +#define NLOHMANN_JSON_PASTE45(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE44(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44) +#define NLOHMANN_JSON_PASTE46(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE45(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45) +#define NLOHMANN_JSON_PASTE47(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE46(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46) +#define NLOHMANN_JSON_PASTE48(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE47(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47) +#define NLOHMANN_JSON_PASTE49(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE48(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48) +#define NLOHMANN_JSON_PASTE50(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE49(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49) +#define NLOHMANN_JSON_PASTE51(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE50(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50) +#define NLOHMANN_JSON_PASTE52(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE51(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51) +#define NLOHMANN_JSON_PASTE53(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE52(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52) +#define NLOHMANN_JSON_PASTE54(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE53(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53) +#define NLOHMANN_JSON_PASTE55(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE54(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54) +#define NLOHMANN_JSON_PASTE56(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE55(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55) +#define NLOHMANN_JSON_PASTE57(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE56(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56) +#define NLOHMANN_JSON_PASTE58(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE57(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57) +#define NLOHMANN_JSON_PASTE59(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE58(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58) +#define NLOHMANN_JSON_PASTE60(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE59(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59) +#define NLOHMANN_JSON_PASTE61(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59, v60) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE60(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59, v60) +#define NLOHMANN_JSON_PASTE62(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59, v60, v61) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE61(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59, v60, v61) +#define NLOHMANN_JSON_PASTE63(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59, v60, v61, v62) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE62(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59, v60, v61, v62) +#define NLOHMANN_JSON_PASTE64(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59, v60, v61, v62, v63) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE63(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59, v60, v61, v62, v63) + +#define NLOHMANN_JSON_TO(v1) nlohmann_json_j[#v1] = nlohmann_json_t.v1; +#define NLOHMANN_JSON_FROM(v1) nlohmann_json_j.at(#v1).get_to(nlohmann_json_t.v1); +#define NLOHMANN_JSON_FROM_WITH_DEFAULT(v1) nlohmann_json_t.v1 = nlohmann_json_j.value(#v1, nlohmann_json_default_obj.v1); + +/*! +@brief macro +@def NLOHMANN_DEFINE_TYPE_INTRUSIVE +@since version 3.9.0 +*/ +#define NLOHMANN_DEFINE_TYPE_INTRUSIVE(Type, ...) \ + friend void to_json(nlohmann::json& nlohmann_json_j, const Type& nlohmann_json_t) { NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_TO, __VA_ARGS__)) } \ + friend void from_json(const nlohmann::json& nlohmann_json_j, Type& nlohmann_json_t) { NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_FROM, __VA_ARGS__)) } + +#define NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT(Type, ...) \ + friend void to_json(nlohmann::json& nlohmann_json_j, const Type& nlohmann_json_t) { NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_TO, __VA_ARGS__)) } \ + friend void from_json(const nlohmann::json& nlohmann_json_j, Type& nlohmann_json_t) { Type nlohmann_json_default_obj; NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_FROM_WITH_DEFAULT, __VA_ARGS__)) } + +/*! +@brief macro +@def NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE +@since version 3.9.0 +*/ +#define NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE(Type, ...) \ + inline void to_json(nlohmann::json& nlohmann_json_j, const Type& nlohmann_json_t) { NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_TO, __VA_ARGS__)) } \ + inline void from_json(const nlohmann::json& nlohmann_json_j, Type& nlohmann_json_t) { NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_FROM, __VA_ARGS__)) } + +#define NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT(Type, ...) \ + inline void to_json(nlohmann::json& nlohmann_json_j, const Type& nlohmann_json_t) { NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_TO, __VA_ARGS__)) } \ + inline void from_json(const nlohmann::json& nlohmann_json_j, Type& nlohmann_json_t) { Type nlohmann_json_default_obj; NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_FROM_WITH_DEFAULT, __VA_ARGS__)) } + + +// inspired from https://stackoverflow.com/a/26745591 +// allows to call any std function as if (e.g. with begin): +// using std::begin; begin(x); +// +// it allows using the detected idiom to retrieve the return type +// of such an expression +#define NLOHMANN_CAN_CALL_STD_FUNC_IMPL(std_name) \ + namespace detail { \ + using std::std_name; \ + \ + template \ + using result_of_##std_name = decltype(std_name(std::declval()...)); \ + } \ + \ + namespace detail2 { \ + struct std_name##_tag \ + { \ + }; \ + \ + template \ + std_name##_tag std_name(T&&...); \ + \ + template \ + using result_of_##std_name = decltype(std_name(std::declval()...)); \ + \ + template \ + struct would_call_std_##std_name \ + { \ + static constexpr auto const value = ::nlohmann::detail:: \ + is_detected_exact::value; \ + }; \ + } /* namespace detail2 */ \ + \ + template \ + struct would_call_std_##std_name : detail2::would_call_std_##std_name \ + { \ + } + +#ifndef JSON_USE_IMPLICIT_CONVERSIONS + #define JSON_USE_IMPLICIT_CONVERSIONS 1 +#endif + +#if JSON_USE_IMPLICIT_CONVERSIONS + #define JSON_EXPLICIT +#else + #define JSON_EXPLICIT explicit +#endif + +#ifndef JSON_DISABLE_ENUM_SERIALIZATION + #define JSON_DISABLE_ENUM_SERIALIZATION 0 +#endif + +#ifndef JSON_USE_GLOBAL_UDLS + #define JSON_USE_GLOBAL_UDLS 1 +#endif + +#if JSON_HAS_THREE_WAY_COMPARISON + #include // partial_ordering +#endif + +NLOHMANN_JSON_NAMESPACE_BEGIN +namespace detail +{ + +/////////////////////////// +// JSON type enumeration // +/////////////////////////// + +/*! +@brief the JSON type enumeration + +This enumeration collects the different JSON types. It is internally used to +distinguish the stored values, and the functions @ref basic_json::is_null(), +@ref basic_json::is_object(), @ref basic_json::is_array(), +@ref basic_json::is_string(), @ref basic_json::is_boolean(), +@ref basic_json::is_number() (with @ref basic_json::is_number_integer(), +@ref basic_json::is_number_unsigned(), and @ref basic_json::is_number_float()), +@ref basic_json::is_discarded(), @ref basic_json::is_primitive(), and +@ref basic_json::is_structured() rely on it. + +@note There are three enumeration entries (number_integer, number_unsigned, and +number_float), because the library distinguishes these three types for numbers: +@ref basic_json::number_unsigned_t is used for unsigned integers, +@ref basic_json::number_integer_t is used for signed integers, and +@ref basic_json::number_float_t is used for floating-point numbers or to +approximate integers which do not fit in the limits of their respective type. + +@sa see @ref basic_json::basic_json(const value_t value_type) -- create a JSON +value with the default value for a given type + +@since version 1.0.0 +*/ +enum class value_t : std::uint8_t +{ + null, ///< null value + object, ///< object (unordered set of name/value pairs) + array, ///< array (ordered collection of values) + string, ///< string value + boolean, ///< boolean value + number_integer, ///< number value (signed integer) + number_unsigned, ///< number value (unsigned integer) + number_float, ///< number value (floating-point) + binary, ///< binary array (ordered collection of bytes) + discarded ///< discarded by the parser callback function +}; + +/*! +@brief comparison operator for JSON types + +Returns an ordering that is similar to Python: +- order: null < boolean < number < object < array < string < binary +- furthermore, each type is not smaller than itself +- discarded values are not comparable +- binary is represented as a b"" string in python and directly comparable to a + string; however, making a binary array directly comparable with a string would + be surprising behavior in a JSON file. + +@since version 1.0.0 +*/ +#if JSON_HAS_THREE_WAY_COMPARISON + inline std::partial_ordering operator<=>(const value_t lhs, const value_t rhs) noexcept // *NOPAD* +#else + inline bool operator<(const value_t lhs, const value_t rhs) noexcept +#endif +{ + static constexpr std::array order = {{ + 0 /* null */, 3 /* object */, 4 /* array */, 5 /* string */, + 1 /* boolean */, 2 /* integer */, 2 /* unsigned */, 2 /* float */, + 6 /* binary */ + } + }; + + const auto l_index = static_cast(lhs); + const auto r_index = static_cast(rhs); +#if JSON_HAS_THREE_WAY_COMPARISON + if (l_index < order.size() && r_index < order.size()) + { + return order[l_index] <=> order[r_index]; // *NOPAD* + } + return std::partial_ordering::unordered; +#else + return l_index < order.size() && r_index < order.size() && order[l_index] < order[r_index]; +#endif +} + +// GCC selects the built-in operator< over an operator rewritten from +// a user-defined spaceship operator +// Clang, MSVC, and ICC select the rewritten candidate +// (see GCC bug https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105200) +#if JSON_HAS_THREE_WAY_COMPARISON && defined(__GNUC__) +inline bool operator<(const value_t lhs, const value_t rhs) noexcept +{ + return std::is_lt(lhs <=> rhs); // *NOPAD* +} +#endif + +} // namespace detail +NLOHMANN_JSON_NAMESPACE_END + +// #include +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.11.2 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013-2022 Niels Lohmann +// SPDX-License-Identifier: MIT + + + +// #include + + +NLOHMANN_JSON_NAMESPACE_BEGIN +namespace detail +{ + +/*! +@brief replace all occurrences of a substring by another string + +@param[in,out] s the string to manipulate; changed so that all + occurrences of @a f are replaced with @a t +@param[in] f the substring to replace with @a t +@param[in] t the string to replace @a f + +@pre The search string @a f must not be empty. **This precondition is +enforced with an assertion.** + +@since version 2.0.0 +*/ +template +inline void replace_substring(StringType& s, const StringType& f, + const StringType& t) +{ + JSON_ASSERT(!f.empty()); + for (auto pos = s.find(f); // find first occurrence of f + pos != StringType::npos; // make sure f was found + s.replace(pos, f.size(), t), // replace with t, and + pos = s.find(f, pos + t.size())) // find next occurrence of f + {} +} + +/*! + * @brief string escaping as described in RFC 6901 (Sect. 4) + * @param[in] s string to escape + * @return escaped string + * + * Note the order of escaping "~" to "~0" and "/" to "~1" is important. + */ +template +inline StringType escape(StringType s) +{ + replace_substring(s, StringType{"~"}, StringType{"~0"}); + replace_substring(s, StringType{"/"}, StringType{"~1"}); + return s; +} + +/*! + * @brief string unescaping as described in RFC 6901 (Sect. 4) + * @param[in] s string to unescape + * @return unescaped string + * + * Note the order of escaping "~1" to "/" and "~0" to "~" is important. + */ +template +static void unescape(StringType& s) +{ + replace_substring(s, StringType{"~1"}, StringType{"/"}); + replace_substring(s, StringType{"~0"}, StringType{"~"}); +} + +} // namespace detail +NLOHMANN_JSON_NAMESPACE_END + +// #include +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.11.2 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013-2022 Niels Lohmann +// SPDX-License-Identifier: MIT + + + +#include // size_t + +// #include + + +NLOHMANN_JSON_NAMESPACE_BEGIN +namespace detail +{ + +/// struct to capture the start position of the current token +struct position_t +{ + /// the total number of characters read + std::size_t chars_read_total = 0; + /// the number of characters read in the current line + std::size_t chars_read_current_line = 0; + /// the number of lines read + std::size_t lines_read = 0; + + /// conversion to size_t to preserve SAX interface + constexpr operator size_t() const + { + return chars_read_total; + } +}; + +} // namespace detail +NLOHMANN_JSON_NAMESPACE_END + +// #include + +// #include +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.11.2 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013-2022 Niels Lohmann +// SPDX-FileCopyrightText: 2018 The Abseil Authors +// SPDX-License-Identifier: MIT + + + +#include // array +#include // size_t +#include // conditional, enable_if, false_type, integral_constant, is_constructible, is_integral, is_same, remove_cv, remove_reference, true_type +#include // index_sequence, make_index_sequence, index_sequence_for + +// #include + + +NLOHMANN_JSON_NAMESPACE_BEGIN +namespace detail +{ + +template +using uncvref_t = typename std::remove_cv::type>::type; + +#ifdef JSON_HAS_CPP_14 + +// the following utilities are natively available in C++14 +using std::enable_if_t; +using std::index_sequence; +using std::make_index_sequence; +using std::index_sequence_for; + +#else + +// alias templates to reduce boilerplate +template +using enable_if_t = typename std::enable_if::type; + +// The following code is taken from https://github.com/abseil/abseil-cpp/blob/10cb35e459f5ecca5b2ff107635da0bfa41011b4/absl/utility/utility.h +// which is part of Google Abseil (https://github.com/abseil/abseil-cpp), licensed under the Apache License 2.0. + +//// START OF CODE FROM GOOGLE ABSEIL + +// integer_sequence +// +// Class template representing a compile-time integer sequence. An instantiation +// of `integer_sequence` has a sequence of integers encoded in its +// type through its template arguments (which is a common need when +// working with C++11 variadic templates). `absl::integer_sequence` is designed +// to be a drop-in replacement for C++14's `std::integer_sequence`. +// +// Example: +// +// template< class T, T... Ints > +// void user_function(integer_sequence); +// +// int main() +// { +// // user_function's `T` will be deduced to `int` and `Ints...` +// // will be deduced to `0, 1, 2, 3, 4`. +// user_function(make_integer_sequence()); +// } +template +struct integer_sequence +{ + using value_type = T; + static constexpr std::size_t size() noexcept + { + return sizeof...(Ints); + } +}; + +// index_sequence +// +// A helper template for an `integer_sequence` of `size_t`, +// `absl::index_sequence` is designed to be a drop-in replacement for C++14's +// `std::index_sequence`. +template +using index_sequence = integer_sequence; + +namespace utility_internal +{ + +template +struct Extend; + +// Note that SeqSize == sizeof...(Ints). It's passed explicitly for efficiency. +template +struct Extend, SeqSize, 0> +{ + using type = integer_sequence < T, Ints..., (Ints + SeqSize)... >; +}; + +template +struct Extend, SeqSize, 1> +{ + using type = integer_sequence < T, Ints..., (Ints + SeqSize)..., 2 * SeqSize >; +}; + +// Recursion helper for 'make_integer_sequence'. +// 'Gen::type' is an alias for 'integer_sequence'. +template +struct Gen +{ + using type = + typename Extend < typename Gen < T, N / 2 >::type, N / 2, N % 2 >::type; +}; + +template +struct Gen +{ + using type = integer_sequence; +}; + +} // namespace utility_internal + +// Compile-time sequences of integers + +// make_integer_sequence +// +// This template alias is equivalent to +// `integer_sequence`, and is designed to be a drop-in +// replacement for C++14's `std::make_integer_sequence`. +template +using make_integer_sequence = typename utility_internal::Gen::type; + +// make_index_sequence +// +// This template alias is equivalent to `index_sequence<0, 1, ..., N-1>`, +// and is designed to be a drop-in replacement for C++14's +// `std::make_index_sequence`. +template +using make_index_sequence = make_integer_sequence; + +// index_sequence_for +// +// Converts a typename pack into an index sequence of the same length, and +// is designed to be a drop-in replacement for C++14's +// `std::index_sequence_for()` +template +using index_sequence_for = make_index_sequence; + +//// END OF CODE FROM GOOGLE ABSEIL + +#endif + +// dispatch utility (taken from ranges-v3) +template struct priority_tag : priority_tag < N - 1 > {}; +template<> struct priority_tag<0> {}; + +// taken from ranges-v3 +template +struct static_const +{ + static JSON_INLINE_VARIABLE constexpr T value{}; +}; + +#ifndef JSON_HAS_CPP_17 + template + constexpr T static_const::value; +#endif + +template +inline constexpr std::array make_array(Args&& ... args) +{ + return std::array {{static_cast(std::forward(args))...}}; +} + +} // namespace detail +NLOHMANN_JSON_NAMESPACE_END + +// #include +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.11.2 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013-2022 Niels Lohmann +// SPDX-License-Identifier: MIT + + + +#include // numeric_limits +#include // false_type, is_constructible, is_integral, is_same, true_type +#include // declval +#include // tuple + +// #include +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.11.2 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013-2022 Niels Lohmann +// SPDX-License-Identifier: MIT + + + +#include // random_access_iterator_tag + +// #include + +// #include + +// #include + + +NLOHMANN_JSON_NAMESPACE_BEGIN +namespace detail +{ + +template +struct iterator_types {}; + +template +struct iterator_types < + It, + void_t> +{ + using difference_type = typename It::difference_type; + using value_type = typename It::value_type; + using pointer = typename It::pointer; + using reference = typename It::reference; + using iterator_category = typename It::iterator_category; +}; + +// This is required as some compilers implement std::iterator_traits in a way that +// doesn't work with SFINAE. See https://github.com/nlohmann/json/issues/1341. +template +struct iterator_traits +{ +}; + +template +struct iterator_traits < T, enable_if_t < !std::is_pointer::value >> + : iterator_types +{ +}; + +template +struct iterator_traits::value>> +{ + using iterator_category = std::random_access_iterator_tag; + using value_type = T; + using difference_type = ptrdiff_t; + using pointer = T*; + using reference = T&; +}; + +} // namespace detail +NLOHMANN_JSON_NAMESPACE_END + +// #include + +// #include +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.11.2 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013-2022 Niels Lohmann +// SPDX-License-Identifier: MIT + + + +// #include + + +NLOHMANN_JSON_NAMESPACE_BEGIN + +NLOHMANN_CAN_CALL_STD_FUNC_IMPL(begin); + +NLOHMANN_JSON_NAMESPACE_END + +// #include +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.11.2 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013-2022 Niels Lohmann +// SPDX-License-Identifier: MIT + + + +// #include + + +NLOHMANN_JSON_NAMESPACE_BEGIN + +NLOHMANN_CAN_CALL_STD_FUNC_IMPL(end); + +NLOHMANN_JSON_NAMESPACE_END + +// #include + +// #include + +// #include +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.11.2 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013-2022 Niels Lohmann +// SPDX-License-Identifier: MIT + +#ifndef INCLUDE_NLOHMANN_JSON_FWD_HPP_ + #define INCLUDE_NLOHMANN_JSON_FWD_HPP_ + + #include // int64_t, uint64_t + #include // map + #include // allocator + #include // string + #include // vector + + // #include + + + /*! + @brief namespace for Niels Lohmann + @see https://github.com/nlohmann + @since version 1.0.0 + */ + NLOHMANN_JSON_NAMESPACE_BEGIN + + /*! + @brief default JSONSerializer template argument + + This serializer ignores the template arguments and uses ADL + ([argument-dependent lookup](https://en.cppreference.com/w/cpp/language/adl)) + for serialization. + */ + template + struct adl_serializer; + + /// a class to store JSON values + /// @sa https://json.nlohmann.me/api/basic_json/ + template class ObjectType = + std::map, + template class ArrayType = std::vector, + class StringType = std::string, class BooleanType = bool, + class NumberIntegerType = std::int64_t, + class NumberUnsignedType = std::uint64_t, + class NumberFloatType = double, + template class AllocatorType = std::allocator, + template class JSONSerializer = + adl_serializer, + class BinaryType = std::vector> + class basic_json; + + /// @brief JSON Pointer defines a string syntax for identifying a specific value within a JSON document + /// @sa https://json.nlohmann.me/api/json_pointer/ + template + class json_pointer; + + /*! + @brief default specialization + @sa https://json.nlohmann.me/api/json/ + */ + using json = basic_json<>; + + /// @brief a minimal map-like container that preserves insertion order + /// @sa https://json.nlohmann.me/api/ordered_map/ + template + struct ordered_map; + + /// @brief specialization that maintains the insertion order of object keys + /// @sa https://json.nlohmann.me/api/ordered_json/ + using ordered_json = basic_json; + + NLOHMANN_JSON_NAMESPACE_END + +#endif // INCLUDE_NLOHMANN_JSON_FWD_HPP_ + + +NLOHMANN_JSON_NAMESPACE_BEGIN +/*! +@brief detail namespace with internal helper functions + +This namespace collects functions that should not be exposed, +implementations of some @ref basic_json methods, and meta-programming helpers. + +@since version 2.1.0 +*/ +namespace detail +{ + +///////////// +// helpers // +///////////// + +// Note to maintainers: +// +// Every trait in this file expects a non CV-qualified type. +// The only exceptions are in the 'aliases for detected' section +// (i.e. those of the form: decltype(T::member_function(std::declval()))) +// +// In this case, T has to be properly CV-qualified to constraint the function arguments +// (e.g. to_json(BasicJsonType&, const T&)) + +template struct is_basic_json : std::false_type {}; + +NLOHMANN_BASIC_JSON_TPL_DECLARATION +struct is_basic_json : std::true_type {}; + +// used by exceptions create() member functions +// true_type for pointer to possibly cv-qualified basic_json or std::nullptr_t +// false_type otherwise +template +struct is_basic_json_context : + std::integral_constant < bool, + is_basic_json::type>::type>::value + || std::is_same::value > +{}; + +////////////////////// +// json_ref helpers // +////////////////////// + +template +class json_ref; + +template +struct is_json_ref : std::false_type {}; + +template +struct is_json_ref> : std::true_type {}; + +////////////////////////// +// aliases for detected // +////////////////////////// + +template +using mapped_type_t = typename T::mapped_type; + +template +using key_type_t = typename T::key_type; + +template +using value_type_t = typename T::value_type; + +template +using difference_type_t = typename T::difference_type; + +template +using pointer_t = typename T::pointer; + +template +using reference_t = typename T::reference; + +template +using iterator_category_t = typename T::iterator_category; + +template +using to_json_function = decltype(T::to_json(std::declval()...)); + +template +using from_json_function = decltype(T::from_json(std::declval()...)); + +template +using get_template_function = decltype(std::declval().template get()); + +// trait checking if JSONSerializer::from_json(json const&, udt&) exists +template +struct has_from_json : std::false_type {}; + +// trait checking if j.get is valid +// use this trait instead of std::is_constructible or std::is_convertible, +// both rely on, or make use of implicit conversions, and thus fail when T +// has several constructors/operator= (see https://github.com/nlohmann/json/issues/958) +template +struct is_getable +{ + static constexpr bool value = is_detected::value; +}; + +template +struct has_from_json < BasicJsonType, T, enable_if_t < !is_basic_json::value >> +{ + using serializer = typename BasicJsonType::template json_serializer; + + static constexpr bool value = + is_detected_exact::value; +}; + +// This trait checks if JSONSerializer::from_json(json const&) exists +// this overload is used for non-default-constructible user-defined-types +template +struct has_non_default_from_json : std::false_type {}; + +template +struct has_non_default_from_json < BasicJsonType, T, enable_if_t < !is_basic_json::value >> +{ + using serializer = typename BasicJsonType::template json_serializer; + + static constexpr bool value = + is_detected_exact::value; +}; + +// This trait checks if BasicJsonType::json_serializer::to_json exists +// Do not evaluate the trait when T is a basic_json type, to avoid template instantiation infinite recursion. +template +struct has_to_json : std::false_type {}; + +template +struct has_to_json < BasicJsonType, T, enable_if_t < !is_basic_json::value >> +{ + using serializer = typename BasicJsonType::template json_serializer; + + static constexpr bool value = + is_detected_exact::value; +}; + +template +using detect_key_compare = typename T::key_compare; + +template +struct has_key_compare : std::integral_constant::value> {}; + +// obtains the actual object key comparator +template +struct actual_object_comparator +{ + using object_t = typename BasicJsonType::object_t; + using object_comparator_t = typename BasicJsonType::default_object_comparator_t; + using type = typename std::conditional < has_key_compare::value, + typename object_t::key_compare, object_comparator_t>::type; +}; + +template +using actual_object_comparator_t = typename actual_object_comparator::type; + +/////////////////// +// is_ functions // +/////////////////// + +// https://en.cppreference.com/w/cpp/types/conjunction +template struct conjunction : std::true_type { }; +template struct conjunction : B { }; +template +struct conjunction +: std::conditional(B::value), conjunction, B>::type {}; + +// https://en.cppreference.com/w/cpp/types/negation +template struct negation : std::integral_constant < bool, !B::value > { }; + +// Reimplementation of is_constructible and is_default_constructible, due to them being broken for +// std::pair and std::tuple until LWG 2367 fix (see https://cplusplus.github.io/LWG/lwg-defects.html#2367). +// This causes compile errors in e.g. clang 3.5 or gcc 4.9. +template +struct is_default_constructible : std::is_default_constructible {}; + +template +struct is_default_constructible> + : conjunction, is_default_constructible> {}; + +template +struct is_default_constructible> + : conjunction, is_default_constructible> {}; + +template +struct is_default_constructible> + : conjunction...> {}; + +template +struct is_default_constructible> + : conjunction...> {}; + + +template +struct is_constructible : std::is_constructible {}; + +template +struct is_constructible> : is_default_constructible> {}; + +template +struct is_constructible> : is_default_constructible> {}; + +template +struct is_constructible> : is_default_constructible> {}; + +template +struct is_constructible> : is_default_constructible> {}; + + +template +struct is_iterator_traits : std::false_type {}; + +template +struct is_iterator_traits> +{ + private: + using traits = iterator_traits; + + public: + static constexpr auto value = + is_detected::value && + is_detected::value && + is_detected::value && + is_detected::value && + is_detected::value; +}; + +template +struct is_range +{ + private: + using t_ref = typename std::add_lvalue_reference::type; + + using iterator = detected_t; + using sentinel = detected_t; + + // to be 100% correct, it should use https://en.cppreference.com/w/cpp/iterator/input_or_output_iterator + // and https://en.cppreference.com/w/cpp/iterator/sentinel_for + // but reimplementing these would be too much work, as a lot of other concepts are used underneath + static constexpr auto is_iterator_begin = + is_iterator_traits>::value; + + public: + static constexpr bool value = !std::is_same::value && !std::is_same::value && is_iterator_begin; +}; + +template +using iterator_t = enable_if_t::value, result_of_begin())>>; + +template +using range_value_t = value_type_t>>; + +// The following implementation of is_complete_type is taken from +// https://blogs.msdn.microsoft.com/vcblog/2015/12/02/partial-support-for-expression-sfinae-in-vs-2015-update-1/ +// and is written by Xiang Fan who agreed to using it in this library. + +template +struct is_complete_type : std::false_type {}; + +template +struct is_complete_type : std::true_type {}; + +template +struct is_compatible_object_type_impl : std::false_type {}; + +template +struct is_compatible_object_type_impl < + BasicJsonType, CompatibleObjectType, + enable_if_t < is_detected::value&& + is_detected::value >> +{ + using object_t = typename BasicJsonType::object_t; + + // macOS's is_constructible does not play well with nonesuch... + static constexpr bool value = + is_constructible::value && + is_constructible::value; +}; + +template +struct is_compatible_object_type + : is_compatible_object_type_impl {}; + +template +struct is_constructible_object_type_impl : std::false_type {}; + +template +struct is_constructible_object_type_impl < + BasicJsonType, ConstructibleObjectType, + enable_if_t < is_detected::value&& + is_detected::value >> +{ + using object_t = typename BasicJsonType::object_t; + + static constexpr bool value = + (is_default_constructible::value && + (std::is_move_assignable::value || + std::is_copy_assignable::value) && + (is_constructible::value && + std::is_same < + typename object_t::mapped_type, + typename ConstructibleObjectType::mapped_type >::value)) || + (has_from_json::value || + has_non_default_from_json < + BasicJsonType, + typename ConstructibleObjectType::mapped_type >::value); +}; + +template +struct is_constructible_object_type + : is_constructible_object_type_impl {}; + +template +struct is_compatible_string_type +{ + static constexpr auto value = + is_constructible::value; +}; + +template +struct is_constructible_string_type +{ + // launder type through decltype() to fix compilation failure on ICPC +#ifdef __INTEL_COMPILER + using laundered_type = decltype(std::declval()); +#else + using laundered_type = ConstructibleStringType; +#endif + + static constexpr auto value = + conjunction < + is_constructible, + is_detected_exact>::value; +}; + +template +struct is_compatible_array_type_impl : std::false_type {}; + +template +struct is_compatible_array_type_impl < + BasicJsonType, CompatibleArrayType, + enable_if_t < + is_detected::value&& + is_iterator_traits>>::value&& +// special case for types like std::filesystem::path whose iterator's value_type are themselves +// c.f. https://github.com/nlohmann/json/pull/3073 + !std::is_same>::value >> +{ + static constexpr bool value = + is_constructible>::value; +}; + +template +struct is_compatible_array_type + : is_compatible_array_type_impl {}; + +template +struct is_constructible_array_type_impl : std::false_type {}; + +template +struct is_constructible_array_type_impl < + BasicJsonType, ConstructibleArrayType, + enable_if_t::value >> + : std::true_type {}; + +template +struct is_constructible_array_type_impl < + BasicJsonType, ConstructibleArrayType, + enable_if_t < !std::is_same::value&& + !is_compatible_string_type::value&& + is_default_constructible::value&& +(std::is_move_assignable::value || + std::is_copy_assignable::value)&& +is_detected::value&& +is_iterator_traits>>::value&& +is_detected::value&& +// special case for types like std::filesystem::path whose iterator's value_type are themselves +// c.f. https://github.com/nlohmann/json/pull/3073 +!std::is_same>::value&& + is_complete_type < + detected_t>::value >> +{ + using value_type = range_value_t; + + static constexpr bool value = + std::is_same::value || + has_from_json::value || + has_non_default_from_json < + BasicJsonType, + value_type >::value; +}; + +template +struct is_constructible_array_type + : is_constructible_array_type_impl {}; + +template +struct is_compatible_integer_type_impl : std::false_type {}; + +template +struct is_compatible_integer_type_impl < + RealIntegerType, CompatibleNumberIntegerType, + enable_if_t < std::is_integral::value&& + std::is_integral::value&& + !std::is_same::value >> +{ + // is there an assert somewhere on overflows? + using RealLimits = std::numeric_limits; + using CompatibleLimits = std::numeric_limits; + + static constexpr auto value = + is_constructible::value && + CompatibleLimits::is_integer && + RealLimits::is_signed == CompatibleLimits::is_signed; +}; + +template +struct is_compatible_integer_type + : is_compatible_integer_type_impl {}; + +template +struct is_compatible_type_impl: std::false_type {}; + +template +struct is_compatible_type_impl < + BasicJsonType, CompatibleType, + enable_if_t::value >> +{ + static constexpr bool value = + has_to_json::value; +}; + +template +struct is_compatible_type + : is_compatible_type_impl {}; + +template +struct is_constructible_tuple : std::false_type {}; + +template +struct is_constructible_tuple> : conjunction...> {}; + +template +struct is_json_iterator_of : std::false_type {}; + +template +struct is_json_iterator_of : std::true_type {}; + +template +struct is_json_iterator_of : std::true_type +{}; + +// checks if a given type T is a template specialization of Primary +template