Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Python wrapper for OpenJTalk

License

NotificationsYou must be signed in to change notification settings

r9y9/pyopenjtalk

Repository files navigation

PyPIPython packageBuild StatusLicenseDOI

A python wrapper forOpenJTalk.

The package consists of two core components:

  • Text processing frontend based on OpenJTalk
  • Speech synthesis backend using HTSEngine

Notice

Before using the pyopenjtalk package, please have a look at the LICENSE for the two software.

Build requirements

The 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)
  • cmake
  • cython

Supported platforms

  • Linux
  • Mac OSX
  • Windows (MSVC) (seethis PR)

Installation

pip install pyopenjtalk

Development

To build the package locally, you will need to make sure to clone open_jtalk and hts_engine_API.

git submodule update --recursive --init

and then run

pip install -e .

Quick demo

Please check the notebook versionhere (nbviewer).

TTS

In [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 only

In [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.pdf inHTS-demo_NIT-ATR503-M001.tar.bz2 for 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 dictionary

  1. Create a CSV file (e.g.user.csv) and write custom words like below:
GNU,,,1,名詞,一般,*,*,*,*,GNU,グヌー,グヌー,2/3,*
  1. Callmecab_dict_index to compile the CSV file.
In [1]:importpyopenjtalkIn [2]:pyopenjtalk.mecab_dict_index("user.csv","user.dic")readinguser.csv ...1emittingdouble-array:100%|###########################################|done!
  1. Callupdate_global_jtalk_with_user_dict to 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_marine option

After v0.3.0, therun_marine option 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;

pip install pyopenjtalk[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 only

LICENSE

Acknowledgements

HTS Working Group for their dedicated efforts to develop and maintain Open JTalk.

About

Python wrapper for OpenJTalk

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors7


[8]ページ先頭

©2009-2025 Movatter.jp