Package: pyopenjtalk-dict
pyopenjtalkA python wrapper forOpenJTalk.The package consists of two core components:Text processing frontend based on OpenJTalkSpeech synthesis backend using HTSEngineNoticeThe package is built with themodified version of OpenJTalk. The modified version provides the same functionality with some improvements (e.g., cmake support) but is technically different from the one from HTS working group.The package also uses themodified version of hts_engine_API. The same applies as above.Before using the pyopenjtalk package, please have a look at the LICENSE for the two software.Build requirementsThe python package relies on cython to make python bindings for open_jtalk and hts_engine_API. You must need the following tools to build and install pyopenjtalk:C/C++ compilers (to build C/C++ extentions)cmakecythonSupported platformsLinuxMac OSXWindows (MSVC) (seethis PR)Installationpip install pyopenjtalkDevelopmentTo build the package locally, you will need to make sure to clone open_jtalk and hts_engine_API.git submodule update --recursive --initand then runpip install -e .Quick demoPlease check the notebook versionhere (nbviewer).TTSIn[1]:importpyopenjtalkIn[2]:fromscipy.ioimportwavfileIn[3]:x,sr=pyopenjtalk.tts("おめでとうございます")In[4]:wavfile.write("test.wav",sr,x.astype(np.int16))Run text processing frontend onlyIn[1]:importpyopenjtalkIn[2]:pyopenjtalk.extract_fullcontext("こんにちは")Out[2]:['xx^xx-sil+k=o/A:xx+xx+xx/B:xx-xx_xx/C:xx_xx+xx/D:xx+xx_xx/E:xx_xx!xx_xx-xx/F:xx_xx#xx_xx@xx_xx|xx_xx/G:5_5%0_xx_xx/H:xx_xx/I:xx-xx@xx+xx&xx-xx|xx+xx/J:1_5/K:1+1-5','xx^sil-k+o=N/A:-4+1+5/B:xx-xx_xx/C:09_xx+xx/D:xx+xx_xx/E:xx_xx!xx_xx-xx/F:5_5#0_xx@1_1|1_5/G:xx_xx%xx_xx_xx/H:xx_xx/I:1-5@1+1&1-1|1+5/J:xx_xx/K:1+1-5','sil^k-o+N=n/A:-4+1+5/B:xx-xx_xx/C:09_xx+xx/D:xx+xx_xx/E:xx_xx!xx_xx-xx/F:5_5#0_xx@1_1|1_5/G:xx_xx%xx_xx_xx/H:xx_xx/I:1-5@1+1&1-1|1+5/J:xx_xx/K:1+1-5','k^o-N+n=i/A:-3+2+4/B:xx-xx_xx/C:09_xx+xx/D:xx+xx_xx/E:xx_xx!xx_xx-xx/F:5_5#0_xx@1_1|1_5/G:xx_xx%xx_xx_xx/H:xx_xx/I:1-5@1+1&1-1|1+5/J:xx_xx/K:1+1-5','o^N-n+i=ch/A:-2+3+3/B:xx-xx_xx/C:09_xx+xx/D:xx+xx_xx/E:xx_xx!xx_xx-xx/F:5_5#0_xx@1_1|1_5/G:xx_xx%xx_xx_xx/H:xx_xx/I:1-5@1+1&1-1|1+5/J:xx_xx/K:1+1-5','N^n-i+ch=i/A:-2+3+3/B:xx-xx_xx/C:09_xx+xx/D:xx+xx_xx/E:xx_xx!xx_xx-xx/F:5_5#0_xx@1_1|1_5/G:xx_xx%xx_xx_xx/H:xx_xx/I:1-5@1+1&1-1|1+5/J:xx_xx/K:1+1-5','n^i-ch+i=w/A:-1+4+2/B:xx-xx_xx/C:09_xx+xx/D:xx+xx_xx/E:xx_xx!xx_xx-xx/F:5_5#0_xx@1_1|1_5/G:xx_xx%xx_xx_xx/H:xx_xx/I:1-5@1+1&1-1|1+5/J:xx_xx/K:1+1-5','i^ch-i+w=a/A:-1+4+2/B:xx-xx_xx/C:09_xx+xx/D:xx+xx_xx/E:xx_xx!xx_xx-xx/F:5_5#0_xx@1_1|1_5/G:xx_xx%xx_xx_xx/H:xx_xx/I:1-5@1+1&1-1|1+5/J:xx_xx/K:1+1-5','ch^i-w+a=sil/A:0+5+1/B:xx-xx_xx/C:09_xx+xx/D:xx+xx_xx/E:xx_xx!xx_xx-xx/F:5_5#0_xx@1_1|1_5/G:xx_xx%xx_xx_xx/H:xx_xx/I:1-5@1+1&1-1|1+5/J:xx_xx/K:1+1-5','i^w-a+sil=xx/A:0+5+1/B:xx-xx_xx/C:09_xx+xx/D:xx+xx_xx/E:xx_xx!xx_xx-xx/F:5_5#0_xx@1_1|1_5/G:xx_xx%xx_xx_xx/H:xx_xx/I:1-5@1+1&1-1|1+5/J:xx_xx/K:1+1-5','w^a-sil+xx=xx/A:xx+xx+xx/B:xx-xx_xx/C:xx_xx+xx/D:xx+xx_xx/E:5_5!0_xx-xx/F:xx_xx#xx_xx@xx_xx|xx_xx/G:xx_xx%xx_xx_xx/H:1_5/I:xx-xx@xx+xx&xx-xx|xx+xx/J:xx_xx/K:1+1-5']Please checklab_format.pdfinHTS-demo_NIT-ATR503-M001.tar.bz2for more details about full-context labels.Grapheme-to-phoeneme (G2P)In[1]:importpyopenjtalkIn[2]:pyopenjtalk.g2p("こんにちは")Out[2]:'k o N n i ch i w a'In[3]:pyopenjtalk.g2p("こんにちは",kana=True)Out[3]:'コンニチワ'Create/Apply user dictionaryCreate a CSV file (e.g.user.csv) and write custom words like below:ＧＮＵ,,,1,名詞,一般,*,*,*,*,ＧＮＵ,グヌー,グヌー,2/3,*Callmecab_dict_indexto compile the CSV file.In[1]:importpyopenjtalkIn[2]:pyopenjtalk.mecab_dict_index("user.csv","user.dic")readinguser.csv...1emittingdouble-array:100%|###########################################|done!Callupdate_global_jtalk_with_user_dictto apply the user dictionary.In[3]:pyopenjtalk.g2p("GNU")Out[3]:'j i i e n u y u u'In[4]:pyopenjtalk.update_global_jtalk_with_user_dict("user.dic")In[5]:pyopenjtalk.g2p("GNU")Out[5]:'g u n u u'Aboutrun_marineoptionAfter v0.3.0, therun_marineoption has been available for estimating the Japanese accent with the DNN-based method (seemarine). If you want to use the feature, please install pyopenjtalk as below;pipinstallpyopenjtalk[marine]And then, you can use the option as the following examples;In[1]:importpyopenjtalkIn[2]:x,sr=pyopenjtalk.tts("おめでとうございます",run_marine=True)# for TTSIn[3]:label=pyopenjtalk.extract_fullcontext("こんにちは",run_marine=True)# for text processing frontend onlyLICENSEpyopenjtalk: MIT license (LICENSE.md)Open JTalk: Modified BSD license (COPYING)htsvoice in this repository: Please checkpyopenjtalk/htsvoice/README.md.marine: Apache 2.0 license (LICENSE)AcknowledgementsHTS Working Group for their dedicated efforts to develop and maintain Open JTalk.