From 3f5d3b56a89fa2729badfba679a72e392f8a4c02 Mon Sep 17 00:00:00 2001 From: Michael Hansen Date: Mon, 12 Jun 2023 11:31:54 -0500 Subject: [PATCH 1/5] Use piper-phonimize for onnxruntime --- Dockerfile | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) diff --git a/Dockerfile b/Dockerfile index 1ad90b0..044bdbb 100644 --- a/Dockerfile +++ b/Dockerfile @@ -24,17 +24,7 @@ RUN curl -L "https://github.com/gabime/spdlog/archive/refs/tags/v${SPDLOG_VERSIO RUN mkdir -p "lib/Linux-$(uname -m)" -ARG ONNXRUNTIME_VERSION='1.14.1' -RUN if [ "${TARGETARCH}${TARGETVARIANT}" = 'amd64' ]; then \ - ONNXRUNTIME_ARCH='x64'; \ - else \ - ONNXRUNTIME_ARCH="$(uname -m)"; \ - fi && \ - curl -L "https://github.com/microsoft/onnxruntime/releases/download/v${ONNXRUNTIME_VERSION}/onnxruntime-linux-${ONNXRUNTIME_ARCH}-${ONNXRUNTIME_VERSION}.tgz" | \ - tar -C "lib/Linux-$(uname -m)" -xzvf - && \ - mv "lib/Linux-$(uname -m)"/onnxruntime-* \ - "lib/Linux-$(uname -m)/onnxruntime" - +# Use pre-compiled Piper phonemization library (includes onnxruntime) ARG PIPER_PHONEMIZE_VERSION='1.0.0' RUN mkdir -p "lib/Linux-$(uname -m)/piper_phonemize" && \ curl -L "https://github.com/rhasspy/piper-phonemize/releases/download/v${PIPER_PHONEMIZE_VERSION}/libpiper_phonemize-${TARGETARCH}${TARGETVARIANT}.tar.gz" | \ From ec25c8b4896cc6b2d78bf3695f05ef4d9f82cce9 Mon Sep 17 00:00:00 2001 From: Michael Hansen Date: Mon, 12 Jun 2023 11:45:06 -0500 Subject: [PATCH 2/5] Update README --- README.md | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 691d531..7391ab9 100644 --- a/README.md +++ b/README.md @@ -18,9 +18,7 @@ Voices are trained with [VITS](https://github.com/jaywalnut310/vits/) and export 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 from [the release](https://github.com/rhasspy/piper/releases/tag/v0.0.2). - -Supported languages: +[Download voices](https://github.com/rhasspy/piper/releases/tag/v0.0.2) for the supported languages: * Catalan (ca) * Danish (da) @@ -50,13 +48,12 @@ Supported languages: Download a release: -* [amd64](https://github.com/rhasspy/piper/releases/download/v0.0.2/piper_amd64.tar.gz) (desktop Linux) -* [arm64](https://github.com/rhasspy/piper/releases/download/v0.0.2/piper_arm64.tar.gz) (Raspberry Pi 4) +* [amd64](https://github.com/rhasspy/piper/releases/download/v1.0.0/piper_amd64.tar.gz) (desktop Linux) +* [arm64](https://github.com/rhasspy/piper/releases/download/v1.0.0/piper_arm64.tar.gz) (Raspberry Pi 4) -If you want to build from source, see the [Makefile](Makefile) and [C++ source](src/cpp). Piper depends on a patched `espeak-ng` in [lib](lib), which includes a way to get access to the "terminator" used to end each clause/sentence. - -The ONNX runtime is expected in `lib/Linux-$(uname -m)`, so `lib/Linux-x86_64`, etc. You can change this path in `src/cpp/CMakeLists.txt` if necessary. -Last tested with [onnxruntime](https://github.com/microsoft/onnxruntime) 1.14.1. +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 @@ -125,7 +122,7 @@ python3 -m piper_train.preprocess \ --sample-rate 22050 ``` -Datasets must either be in the [LJSpeech](https://keithito.com/LJ-Speech-Dataset/) format or from [Mimic Recording Studio](https://github.com/MycroftAI/mimic-recording-studio) (`--dataset-format mycroft`). +Datasets must either be in the [LJSpeech](https://keithito.com/LJ-Speech-Dataset/) format (with only id/text columns or id/speaker/text) or from [Mimic Recording Studio](https://github.com/MycroftAI/mimic-recording-studio) (`--dataset-format mycroft`). Finally, you can train: From b9c42da613fe7558c745e74646a6cee7a1066a25 Mon Sep 17 00:00:00 2001 From: Michael Hansen Date: Tue, 13 Jun 2023 13:58:19 -0500 Subject: [PATCH 3/5] More test sentences --- etc/test_sentences/fi.txt | 7 +++++++ etc/test_sentences/ne.txt | 4 ++++ etc/test_sentences/test_fi.jsonl | 7 +++++++ etc/test_sentences/test_ne.jsonl | 4 ++++ 4 files changed, 22 insertions(+) create mode 100644 etc/test_sentences/fi.txt create mode 100644 etc/test_sentences/ne.txt create mode 100644 etc/test_sentences/test_fi.jsonl create mode 100644 etc/test_sentences/test_ne.jsonl diff --git a/etc/test_sentences/fi.txt b/etc/test_sentences/fi.txt new file mode 100644 index 0000000..d6c9b54 --- /dev/null +++ b/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/etc/test_sentences/ne.txt b/etc/test_sentences/ne.txt new file mode 100644 index 0000000..e8deafe --- /dev/null +++ b/etc/test_sentences/ne.txt @@ -0,0 +1,4 @@ +इन्द्रेणी वा इन्द्रधनुष प्रकाश र रंगबाट उत्पन्न भएको यस्तो घटना हो जसमा रंगीन प्रकाशको एउटा अर्धवृत आकाशमा देखिन्छ। जब सूर्यको प्रकाश पृथ्वीको वायुमण्डलमा भएको पानीको थोपा माथि पर्छ, पानीको थोपाले प्रकाशलाई परावर्तन, आवर्तन र डिस्पर्सन गर्दछ। फलस्वरुप आकाशमा एउटा सप्तरङ्गी अर्धवृताकार प्रकाशीय आकृति उत्पन्न हुन्छ। यो आकृतिलाई नै इन्द्रेणी भनिन्छ। इन्द्रेणी देखिनुको कारण वायुमण्डलमा पानीका कणहरु हुनु नै हो। वर्षा, झरनाबाट उछिट्टिएको पानी, शीत, कुहिरो आदिको इन्द्रेणी देखिने प्रक्रियामा महत्त्वपूर्ण भूमिका हुन्छ। इन्द्रेणीमा सात रंगहरु रातो, सुन्तला, पहेंलो, हरियो, आकाशे निलो, गाढा निलो र बैजनी रंग क्रमैसँग देखिन्छ। यसमा सबैभन्दा माथिल्लो छेउमा रातो रंग र अर्को छेउमा बैजनी रंग देखिन्छ। इन्द्रेणी पूर्ण वृत्ताकार समेत हुन सक्ने भए पनि साधरण अवलोकनकर्ताले जमिन माथि बनेको आधा भाग मात्र देख्न सकिन्छ । +इन्द्रेणी देखिनुको कारण वायुमण्डलमा पानीका कणहरु हुनु नै हो। वर्षा, झरनाबाट उछिट्टिएको पानी, शीत, कुहिरो आदिको इन्द्रेणी देखिने प्रक्रियामा महत्त्वपूर्ण भूमिका हुन्छ। +इन्द्रेणीमा सात रंगहरु रातो, सुन्तला, पहेंलो, हरियो, आकाशे निलो, गाढा निलो र बैजनी रंग क्रमैसँग देखिन्छ। यसमा सबैभन्दा माथिल्लो छेउमा रातो रंग र अर्को छेउमा बैजनी रंग देखिन्छ। +इन्द्रेणी पूर्ण वृत्ताकार समेत हुन सक्ने भए पनि साधरण अवलोकनकर्ताले जमिन माथि बनेको आधा भाग मात्र देख्न सकिन्छ । diff --git a/etc/test_sentences/test_fi.jsonl b/etc/test_sentences/test_fi.jsonl new file mode 100644 index 0000000..6f4ae03 --- /dev/null +++ b/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/etc/test_sentences/test_ne.jsonl b/etc/test_sentences/test_ne.jsonl new file mode 100644 index 0000000..9e8d625 --- /dev/null +++ b/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":"इन्द्रेणी पूर्ण वृत्ताकार समेत हुन सक्ने भए पनि साधरण अवलोकनकर्ताले जमिन माथि बनेको आधा भाग मात्र देख्न सकिन्छ ।"} From 32410e36d97ba5df724403ca746be4ab8ace1e46 Mon Sep 17 00:00:00 2001 From: Michael Hansen Date: Tue, 13 Jun 2023 16:46:35 -0500 Subject: [PATCH 4/5] Add --resume_from_single_speaker_checkpoint --- src/python/piper_train/__main__.py | 54 +++++++++++++++++++++++++++++- 1 file changed, 53 insertions(+), 1 deletion(-) diff --git a/src/python/piper_train/__main__.py b/src/python/piper_train/__main__.py index a2ee0d3..0597c4c 100644 --- a/src/python/piper_train/__main__.py +++ b/src/python/piper_train/__main__.py @@ -30,6 +30,10 @@ def main(): choices=("x-low", "medium", "high"), help="Quality/size of model (default: medium)", ) + parser.add_argument( + "--resume_from_single_speaker_checkpoint", + help="For multi-speaker models only. Converts a single-speaker checkpoint to multi-speaker and resumes training", + ) Trainer.add_argparse_args(parser) VitsModel.add_model_specific_args(parser) parser.add_argument("--seed", type=int, default=1234) @@ -82,12 +86,60 @@ def main(): num_speakers=num_speakers, sample_rate=sample_rate, dataset=[dataset_path], - **dict_args + **dict_args, ) + if args.resume_from_single_speaker_checkpoint: + assert ( + num_speakers > 1 + ), "--resume_from_single_speaker_checkpoint is only for multi-speaker models. Use --resume_from_checkpoint for single-speaker models." + + # Load single-speaker checkpoint + _LOGGER.debug( + "Resuming from single-speaker checkpoint: %s", + args.resume_from_single_speaker_checkpoint, + ) + model_single = VitsModel.load_from_checkpoint( + args.resume_from_single_speaker_checkpoint, + dataset=None, + ) + g_dict = model_single.model_g.state_dict() + for key in list(g_dict.keys()): + # Remove keys that can't be copied over due to missing speaker embedding + if ( + key.startswith("dec.cond") + or key.startswith("dp.cond") + or ("enc.cond_layer" in key) + ): + g_dict.pop(key, None) + + # Copy over the multi-speaker model, excluding keys related to the + # speaker embedding (which is missing from the single-speaker model). + load_state_dict(model.model_g, g_dict) + load_state_dict(model.model_d, model_single.model_d.state_dict()) + _LOGGER.info( + "Successfully converted single-speaker checkpoint to multi-speaker" + ) + trainer.fit(model) +def load_state_dict(model, saved_state_dict): + state_dict = model.state_dict() + new_state_dict = {} + + for k, v in state_dict.items(): + if k in saved_state_dict: + # Use saved value + new_state_dict[k] = saved_state_dict[k] + else: + # Use initialized value + _LOGGER.debug("%s is not in the checkpoint for %s", k, key) + new_state_dict[k] = v + + model.load_state_dict(new_state_dict) + + # ----------------------------------------------------------------------------- From b0b196773efa8247c58601452ebf2b58dfb37435 Mon Sep 17 00:00:00 2001 From: Michael Hansen Date: Tue, 13 Jun 2023 17:05:19 -0500 Subject: [PATCH 5/5] Fix logging statement --- src/python/piper_train/__main__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/python/piper_train/__main__.py b/src/python/piper_train/__main__.py index 0597c4c..3a4ff51 100644 --- a/src/python/piper_train/__main__.py +++ b/src/python/piper_train/__main__.py @@ -134,7 +134,7 @@ def load_state_dict(model, saved_state_dict): new_state_dict[k] = saved_state_dict[k] else: # Use initialized value - _LOGGER.debug("%s is not in the checkpoint for %s", k, key) + _LOGGER.debug("%s is not in the checkpoint", k) new_state_dict[k] = v model.load_state_dict(new_state_dict)