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" | \ 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: 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":"इन्द्रेणी पूर्ण वृत्ताकार समेत हुन सक्ने भए पनि साधरण अवलोकनकर्ताले जमिन माथि बनेको आधा भाग मात्र देख्न सकिन्छ ।"} diff --git a/src/python/piper_train/__main__.py b/src/python/piper_train/__main__.py index a2ee0d3..3a4ff51 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", k) + new_state_dict[k] = v + + model.load_state_dict(new_state_dict) + + # -----------------------------------------------------------------------------