# pyopenjtalk **Repository Path**: lmdown/pyopenjtalk ## Basic Information - **Project Name**: pyopenjtalk - **Description**: 原样复制pyopenjtalk项目,仅为了打包wheel文件存储于此 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-10-25 - **Last Updated**: 2025-10-25 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # pyopenjtalk [![PyPI](https://img.shields.io/pypi/v/pyopenjtalk.svg)](https://pypi.python.org/pypi/pyopenjtalk) [![Python package](https://github.com/r9y9/pyopenjtalk/actions/workflows/ci.yaml/badge.svg)](https://github.com/r9y9/pyopenjtalk/actions/workflows/ci.yaml) [![Build Status](https://app.travis-ci.com/r9y9/pyopenjtalk.svg?branch=master)](https://app.travis-ci.com/r9y9/pyopenjtalk) [![License](http://img.shields.io/badge/license-MIT-brightgreen.svg?style=flat)](LICENSE.md) [![DOI](https://zenodo.org/badge/143748865.svg)](https://zenodo.org/badge/latestdoi/143748865) A python wrapper for [OpenJTalk](http://open-jtalk.sp.nitech.ac.jp/). The package consists of two core components: - Text processing frontend based on OpenJTalk - Speech synthesis backend using HTSEngine ## Notice - The package is built with the [modified version of OpenJTalk](https://github.com/r9y9/open_jtalk). 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 the [modified version of hts_engine_API](https://github.com/r9y9/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 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) (see [this PR](https://github.com/r9y9/pyopenjtalk/pull/13)) ## 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 version [here (nbviewer)](https://nbviewer.jupyter.org/github/r9y9/pyopenjtalk/blob/master/docs/notebooks/Demo.ipynb). ### TTS ```py In [1]: import pyopenjtalk In [2]: from scipy.io import wavfile In [3]: x, sr = pyopenjtalk.tts("おめでとうございます") In [4]: wavfile.write("test.wav", sr, x.astype(np.int16)) ``` ### Run text processing frontend only ```py In [1]: import pyopenjtalk In [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 check `lab_format.pdf` in [HTS-demo_NIT-ATR503-M001.tar.bz2](http://hts.sp.nitech.ac.jp/archives/2.3/HTS-demo_NIT-ATR503-M001.tar.bz2) for more details about full-context labels. ### Grapheme-to-phoeneme (G2P) ```py In [1]: import pyopenjtalk In [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: ```csv GNU,,,1,名詞,一般,*,*,*,*,GNU,グヌー,グヌー,2/3,* ``` 2. Call `mecab_dict_index` to compile the CSV file. ```python In [1]: import pyopenjtalk In [2]: pyopenjtalk.mecab_dict_index("user.csv", "user.dic") reading user.csv ... 1 emitting double-array: 100% |###########################################| done! ``` 3. Call `update_global_jtalk_with_user_dict` to apply the user dictionary. ```python 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' ``` ### About `run_marine` option After v0.3.0, the `run_marine` option has been available for estimating the Japanese accent with the DNN-based method (see [marine](https://github.com/6gsn/marine)). If you want to use the feature, please install pyopenjtalk as below; ```shell pip install pyopenjtalk[marine] ``` And then, you can use the option as the following examples; ```python In [1]: import pyopenjtalk In [2]: x, sr = pyopenjtalk.tts("おめでとうございます", run_marine=True) # for TTS In [3]: label = pyopenjtalk.extract_fullcontext("こんにちは", run_marine=True) # for text processing frontend only ``` ## LICENSE - pyopenjtalk: MIT license ([LICENSE.md](LICENSE.md)) - Open JTalk: Modified BSD license ([COPYING](https://github.com/r9y9/open_jtalk/blob/1.10/src/COPYING)) - htsvoice in this repository: Please check [pyopenjtalk/htsvoice/README.md](pyopenjtalk/htsvoice/README.md). - marine: Apache 2.0 license ([LICENSE](https://github.com/6gsn/marine/blob/main/LICENSE)) ## Acknowledgements HTS Working Group for their dedicated efforts to develop and maintain Open JTalk.