Skip to main content

A Python wrapper for OpenJTalk with additional improvements

Project description

pyopenjtalk-plus

PyPI Python package License

pyopenjtalk-plus は、各フォークでの改善を一つのコードベースにまとめ、さらなる改善を加えることを目的とした、pyopenjtalk の派生ライブラリです。

Changes in this fork

  • パッケージ名を pyopenjtalk-plus に変更
    • ライブラリ名は pyopenjtalk から変更されておらず、pyopenjtalk 本家同様に import pyopenjtalk でインポートできる
    • pyopenjtalk 本家のドロップイン代替として利用できる
  • 明示的に Python 3.11 / 3.12 をサポート対象に追加
    • CI 対象の Python バージョンも 3.11 / 3.12 メインに変更した
  • Windows・macOS (x64 / arm64)・Linux すべての事前ビルド済み wheels を PyPI に公開
    • pyopenjtalk は hts_engine_API・OpenJTalk・Cython に依存しており、ビルド環境の構築難易度が比較的高い
      • 特に Windows においては MSVC のインストールが必要となる
    • 事前ビルド済みの wheels を PyPI に公開することで、ビルド環境のない PC でも簡単にインストール可能にすることを意図している
  • Python 側と Cython 側の両方に型ヒント (Type Hints) を追加
  • 依存関係の numpy を 1.x 系に固定
    • numpy 2.x では互換性のない変更が多数行われており、もとよりレガシーな設計である現行の pyopenjtalk(-plus) では動作しないと考えられるため
  • OpenJTalk 向けシステム辞書を、pyopenjtalk では初回実行時に自動ダウンロードされる open_jtalk_dic_utf_8-1.11.tar.gz から、独自にカスタマイズした pyopenjtalk-plus 向け辞書 (wheel に同梱) に変更
    • この辞書は n5-suzuki/pyopenjtalk に含まれていた bnken_jdic という謎の名前のカスタム辞書をベースに、さらに jpreprocess/naist-jdic での改良点を取り込んだもの
    • この bnken_jdic は、恐らくは OpenJTalk 標準システム辞書の mecab-naist-jdic に対し、アクセント・読みの推定精度向上のために大幅にカスタマイズを加えた辞書データと推察される
    • 自然言語処理の専門家ではないため bnken_jdic でどれだけ改善されているかは分からないが、「見るからに相当な手間を掛け、仕様が極めて難解な OpenJTalk 辞書を継続的にカスタマイズできている」時点で少なくとも open_jtalk_dic_utf_8-1.11.tar.gz よりは改善されているだろうと踏み、pyopenjtalk-plus に取り込んだ
    • 一方 jpreprocess/naist-jdic では open_jtalk_dic_utf_8-1.11.tar.gz (のベースである mecab-naist-jdic) に jpreprocess 向けの改良が施されており、(恐らく手動作成されたと思われる) 辞書データのミスの修正など有用な変更が多かったことから、上記 bnken_jdic 内の naist-jdic.csv に追加反映している
    • pyopenjtalk 本家で実装されていた _lazy_init() 関数内での辞書ダウンロード処理は pyopenjtalk-plus での辞書同梱に伴い削除している
      • 辞書データがなければ pyopenjtalk は動作しないため (つまり辞書をダウンロードしない選択肢はなく必須) 、毎回追加でダウンロードするよりも wheel に直接含めた方が安定性の面でよりベターだと考えた
      • pyopenjtalk-plus の辞書データは 100MB 以上あるが (wheel 自体は圧縮が効いて 25MB 程度) 、せいぜい数十 MB のサイズ節約よりもアクセント・読み推定精度の向上を優先した
    • このカスタム辞書は pyproject.toml のあるディレクトリで task build-dictionary を実行するとビルドできる
      • 管理の簡便化のため、ビルド済みの辞書データ (*.bin / *.dic) はこの Git リポジトリに含めている
  • pyopenjtalk.run_frontend()pyopenjtalk.g2p() でも run_marine=True を指定し marine による AI アクセント推定を行えるようにした
    • 以前から pyopenjtalk.extract_fullcontext() では marine による AI アクセント推定が可能だったが、pyopenjtalk.run_frontend()pyopenjtalk.g2p() にも実装した
    • 具体的にどれだけ良いかは検証できていないが、OpenJTalk のデフォルトのアクセント推定処理のみを使用した場合と比較して、(PyTorch モデルによる推論が入るため若干遅くなるものの) 文章によってはより自然なアクセントを推定できることが期待される
      • ただし必ずしも marine 利用時の方が自然なアクセントにはなるとは限らないようで、軽く試した限りでは固有名詞の多い文章が棒読みになりがちな印象もある
        • もっとも、独自に marine 向けの学習済みモデルを作成した場合はこの限りではない
        • 実際、「デフォルトの学習済みモデルは JSUT コーパスのみから学習されており、論文に記載されている性能とは異なる」(≒ marine 開発元の LINE 社内では独自の音声コーパスを用いてより高性能な学習済みモデルを作成・運用している) 旨が marine の README に記載されている
      • n5-suzuki/pyopenjtalk では marine がデフォルトの依存関係に追加されており、専ら marine による AI アクセント推定を併用していることが伺える
      • pyopenjtalk-plus では PyTorch への依存が発生することからデフォルトの依存関係には含めていないが、別途 marine / marine-plus をインストールすれば利用可能
    • ⚠️ marine 本家は Windows・Python 3.12 に非対応な上、非推奨警告が多数出力される問題があるため、これらの問題に対処した marine-plus の利用を強く推奨します
  • litagin02/pyopenjtalk での変更を取り込み、pyopenjtalk.unset_user_dict() 関数を追加
    • VOICEVOX で利用されている VOICEVOX/pyopenjtalk には、VOICEVOX ENGINE で利用するためのユーザー辞書機能が独自に追加されている
    • その後 pyopenjtalk v0.3.4 で同等のユーザー辞書機能が実装された
      • VOICEVOX/pyopenjtalk の set_user_dict() 関数が update_global_jtalk_with_user_dict() 関数になるなど、同等の機能ながら関数名は変更されている
      • …が、どういう訳か VOICEVOX/pyopenjtalk には存在した「設定したユーザー辞書をリセットする」関数が実装されていない
    • このため litagin02/pyopenjtalk では VOICEVOX/pyopenjtalk から pyopenjtalk.unset_user_dict() 関数が移植されており、pyopenjtalk-plus でもこの実装を継承した
    • このほか、クロスプラットフォームで wheel をビルドするための GitHub Actions ワークフローもこのフォークから取り込んだもの
  • VOICEVOX/pyopenjtalk での変更を取り込み、多数の改良点を反映
    • OpenJTalk の VOICEVOX 向けフォーク (VOICEVOX/open_jtalk) での変更内容を前提とした変更が多数含まれる
    • 取り込んだ変更点 (一部):
      • text2mecab() 関数を安全に改良し、エラー発生時に適切な RuntimeError を送出する
      • ARM 版 Windows でビルド可能にする
      • Windows で辞書の保存先パスに日本語を含むマルチバイト文字が含まれるとエラーが発生する問題を修正
      • 各環境でのビルドに関連する諸問題を修正
      • ビルド時の Cython バージョンを 3.0 系未満 (0.x 系) に制限
      • (OpenJTalk 側のみ) OpenJTalk 本体だけでユーザー辞書を読み込める Mecab_load_with_userdic() 関数を追加
      • (OpenJTalk 側のみ) 辞書のコンパイルに利用される mecab-dict-index モジュールにログ出力を抑制する --quiet オプションを追加
      • (OpenJTalk 側のみ) mecab-dict-index モジュールの main() 関数 (元は CLI コマンド用) をコメントアウト
        • OpenJTalk は Mecab のソースコードがベース、その Mecab 自体も非常にレガシーなソフトウェアで、お世辞にも綺麗なコードではない
        • このためか pyopenjtalk の辞書コンパイル機能は「CLI コマンド mecab-dict-index の argv と argc に相当する値を、ライブラリ側から OpenJTalk の mecab_dict_index() 関数 (mecab-dict-index コマンドのエントリーポイント) の引数として注入する」という非常にトリッキーかつ強引な手法で実装されている
        • どのみち pyopenjtalk 向け OpenJTalk では mecab-dict-index コマンドをビルドする必要がない
  • n5-suzuki/pyopenjtalk での変更を取り込み、日本語アクセント・読み推定精度を改善
    • n5-suzuki/pyopenjtalk では、カスタム辞書 (bnken_jdic) の追加に加え pyopenjtalk・OpenJTalk 本体もより自然な日本語アクセント・読みを推定できるよう大幅に改良されている
    • 特に複数の読み方をする漢字の読みに対し sudachipy で形態素解析を行い、得られた結果を使い OpenJTalk から返された list[NJDFeature] 内の値を補正している点がユニーク
    • 他にも日本語アクセント・読みの推定精度向上のための涙ぐましい努力の結晶が多く反映されており、有用性を鑑みほぼそのままマージした
      • n5-suzuki 氏、a-ejiri 氏に深く感謝いたします🙏
    • このほか「何」を「なん」と読むか「なに」と読むかを判定するための scikit-learn で実装された機械学習モデルによるロジック も含まれていたため、学習済みモデルを ONNX に変換して scikit-learn 0.24.2 への依存なしに動かせるよう改良した (v0.3.4-post5 以降)
      • 当該モデルは scikit-learn 0.24.2 でしか動作しないが、3年以上前にリリースされた極めて古いバージョンにつき Python 3.11・3.12 では動作せず、依存関係の問題もありインストール自体が困難になってきている
      • 学習用コードは含まれていなかったため推測するしかないが、モデルのバイナリに含まれる文字列から、RandomForestClassifier を用いた比較的単純な機械学習モデルだと推測される
      • ONNX 変換ツール を自作した上で ONNX に変換し、推論コード も ONNXRuntime を用いて推論するよう変更した
        • この変更により依存関係に ONNXRuntime が追加されるが、すでに機械学習関連の他ライブラリの依存関係に含まれていることも多く、実用上問題ないと判断した
  • submodule の OpenJTalk を tsukumijima/open_jtalk に変更
  • submodule の hts_engine_API を syoyo/hts_engine_API に変更
  • ライブラリの開発環境構築・ビルド・コード整形・テストを taskipy によるタスクランナーでの管理に変更
  • 利用予定のない Travis CI 向けファイルを削除
  • 不要な依存関係の削除、依存バージョンの整理
  • その他コードのクリーンアップ、非推奨警告の解消など

Installation

下記コマンドを実行して、ライブラリをインストールできます。

pip install pyopenjtalk-plus

Development

開発環境は macOS / Linux 、Python バージョンは 3.11 が前提です。

# submodule ごとリポジトリを clone
git clone --recursive https://github.com/tsukumijima/pyopenjtalk-plus.git
cd pyopenjtalk-plus

# ライブラリ自身とその依存関係を .venv/ 以下の仮想環境にインストールし、開発環境を構築
pip install taskipy
task install

# コード整形
task lint
task format

# テストの実行
task test

# pyopenjtalk/dictionary/ 以下にある MeCab / OpenJTalk 辞書をビルド
## ビルド成果物は同ディレクトリに *.bin / *.dic として出力される
## ビルド後の辞書データは数百 MB あるバイナリファイルだが、取り回しやすいよう敢えて Git 管理下に含めている
task build-dictionary

# ライブラリの wheel と sdist をビルドし、dist/ に出力
task build

# ビルド成果物をクリーンアップ
task clean

下記ならびに docs/ 以下のドキュメントは、pyopenjtalk 本家のドキュメントを改変なしでそのまま引き継いでいます。
これらのドキュメントの内容が pyopenjtalk-plus にも通用するかは保証されません。


pyopenjtalk

PyPI Python package Build Status License DOI

A python wrapper for OpenJTalk.

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. 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. 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)

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).

TTS

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

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 for more details about full-context labels.

Grapheme-to-phoeneme (G2P)

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:
GNU,,,1,名詞,一般,*,*,*,*,GNU,グヌー,グヌー,2/3,*
  1. Call mecab_dict_index to compile the CSV file.
In [1]: import pyopenjtalk

In [2]: pyopenjtalk.mecab_dict_index("user.csv", "user.dic")
reading user.csv ... 1
emitting double-array: 100% |###########################################|

done!
  1. Call update_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'

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). 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]: 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

Acknowledgements

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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pyopenjtalk-plus-0.3.4.post5.tar.gz (24.9 MB view details)

Uploaded Source

Built Distributions

pyopenjtalk_plus-0.3.4.post5-cp312-cp312-win_amd64.whl (24.6 MB view details)

Uploaded CPython 3.12 Windows x86-64

pyopenjtalk_plus-0.3.4.post5-cp312-cp312-win32.whl (24.5 MB view details)

Uploaded CPython 3.12 Windows x86

pyopenjtalk_plus-0.3.4.post5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (29.8 MB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ x86-64

pyopenjtalk_plus-0.3.4.post5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (29.9 MB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ ARM64

pyopenjtalk_plus-0.3.4.post5-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl (29.7 MB view details)

Uploaded CPython 3.12 manylinux: glibc 2.12+ i686 manylinux: glibc 2.17+ i686

pyopenjtalk_plus-0.3.4.post5-cp312-cp312-macosx_11_0_arm64.whl (24.7 MB view details)

Uploaded CPython 3.12 macOS 11.0+ ARM64

pyopenjtalk_plus-0.3.4.post5-cp312-cp312-macosx_10_9_x86_64.whl (24.7 MB view details)

Uploaded CPython 3.12 macOS 10.9+ x86-64

pyopenjtalk_plus-0.3.4.post5-cp312-cp312-macosx_10_9_universal2.whl (25.2 MB view details)

Uploaded CPython 3.12 macOS 10.9+ universal2 (ARM64, x86-64)

pyopenjtalk_plus-0.3.4.post5-cp311-cp311-win_amd64.whl (24.6 MB view details)

Uploaded CPython 3.11 Windows x86-64

pyopenjtalk_plus-0.3.4.post5-cp311-cp311-win32.whl (24.5 MB view details)

Uploaded CPython 3.11 Windows x86

pyopenjtalk_plus-0.3.4.post5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (29.8 MB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64

pyopenjtalk_plus-0.3.4.post5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (29.9 MB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ ARM64

pyopenjtalk_plus-0.3.4.post5-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl (29.6 MB view details)

Uploaded CPython 3.11 manylinux: glibc 2.12+ i686 manylinux: glibc 2.17+ i686

pyopenjtalk_plus-0.3.4.post5-cp311-cp311-macosx_11_0_arm64.whl (24.7 MB view details)

Uploaded CPython 3.11 macOS 11.0+ ARM64

pyopenjtalk_plus-0.3.4.post5-cp311-cp311-macosx_10_9_x86_64.whl (24.7 MB view details)

Uploaded CPython 3.11 macOS 10.9+ x86-64

pyopenjtalk_plus-0.3.4.post5-cp311-cp311-macosx_10_9_universal2.whl (25.2 MB view details)

Uploaded CPython 3.11 macOS 10.9+ universal2 (ARM64, x86-64)

pyopenjtalk_plus-0.3.4.post5-cp310-cp310-win_amd64.whl (24.6 MB view details)

Uploaded CPython 3.10 Windows x86-64

pyopenjtalk_plus-0.3.4.post5-cp310-cp310-win32.whl (24.5 MB view details)

Uploaded CPython 3.10 Windows x86

pyopenjtalk_plus-0.3.4.post5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (29.8 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

pyopenjtalk_plus-0.3.4.post5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (29.8 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ ARM64

pyopenjtalk_plus-0.3.4.post5-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl (29.6 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.12+ i686 manylinux: glibc 2.17+ i686

pyopenjtalk_plus-0.3.4.post5-cp310-cp310-macosx_11_0_arm64.whl (24.7 MB view details)

Uploaded CPython 3.10 macOS 11.0+ ARM64

pyopenjtalk_plus-0.3.4.post5-cp310-cp310-macosx_10_9_x86_64.whl (24.7 MB view details)

Uploaded CPython 3.10 macOS 10.9+ x86-64

pyopenjtalk_plus-0.3.4.post5-cp310-cp310-macosx_10_9_universal2.whl (25.2 MB view details)

Uploaded CPython 3.10 macOS 10.9+ universal2 (ARM64, x86-64)

pyopenjtalk_plus-0.3.4.post5-cp39-cp39-win_amd64.whl (24.6 MB view details)

Uploaded CPython 3.9 Windows x86-64

pyopenjtalk_plus-0.3.4.post5-cp39-cp39-win32.whl (24.5 MB view details)

Uploaded CPython 3.9 Windows x86

pyopenjtalk_plus-0.3.4.post5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (29.8 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

pyopenjtalk_plus-0.3.4.post5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (29.9 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ ARM64

pyopenjtalk_plus-0.3.4.post5-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl (29.6 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.12+ i686 manylinux: glibc 2.17+ i686

pyopenjtalk_plus-0.3.4.post5-cp39-cp39-macosx_11_0_arm64.whl (24.7 MB view details)

Uploaded CPython 3.9 macOS 11.0+ ARM64

pyopenjtalk_plus-0.3.4.post5-cp39-cp39-macosx_10_9_x86_64.whl (24.7 MB view details)

Uploaded CPython 3.9 macOS 10.9+ x86-64

pyopenjtalk_plus-0.3.4.post5-cp39-cp39-macosx_10_9_universal2.whl (25.2 MB view details)

Uploaded CPython 3.9 macOS 10.9+ universal2 (ARM64, x86-64)

pyopenjtalk_plus-0.3.4.post5-cp38-cp38-win_amd64.whl (24.6 MB view details)

Uploaded CPython 3.8 Windows x86-64

pyopenjtalk_plus-0.3.4.post5-cp38-cp38-win32.whl (24.5 MB view details)

Uploaded CPython 3.8 Windows x86

pyopenjtalk_plus-0.3.4.post5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (29.8 MB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ x86-64

pyopenjtalk_plus-0.3.4.post5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (29.9 MB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ ARM64

pyopenjtalk_plus-0.3.4.post5-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl (29.6 MB view details)

Uploaded CPython 3.8 manylinux: glibc 2.12+ i686 manylinux: glibc 2.17+ i686

pyopenjtalk_plus-0.3.4.post5-cp38-cp38-macosx_11_0_arm64.whl (24.7 MB view details)

Uploaded CPython 3.8 macOS 11.0+ ARM64

pyopenjtalk_plus-0.3.4.post5-cp38-cp38-macosx_10_9_x86_64.whl (24.7 MB view details)

Uploaded CPython 3.8 macOS 10.9+ x86-64

pyopenjtalk_plus-0.3.4.post5-cp38-cp38-macosx_10_9_universal2.whl (25.2 MB view details)

Uploaded CPython 3.8 macOS 10.9+ universal2 (ARM64, x86-64)

File details

Details for the file pyopenjtalk-plus-0.3.4.post5.tar.gz.

File metadata

File hashes

Hashes for pyopenjtalk-plus-0.3.4.post5.tar.gz
Algorithm Hash digest
SHA256 e171d43a2fa7e047d423f8c84864815229288480ab80252e36b20547e9ba04e4
MD5 91412d430eef8dfba68f59aacc3fea7b
BLAKE2b-256 9fed816b95d340a65a2c6192db8481ca325a67fdaaa45f325e62c5a849864370

See more details on using hashes here.

File details

Details for the file pyopenjtalk_plus-0.3.4.post5-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for pyopenjtalk_plus-0.3.4.post5-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 05f313b2a4625355447c47a70fbfe92e1e8e33b5c995db991f1ba216a3f99e36
MD5 e4b94e0a1c3f53f200875e9956d057fc
BLAKE2b-256 db87e79810c8b22b7457cb77739cfa1b5ab1ba3dab0e2aa52feae8ba37199156

See more details on using hashes here.

File details

Details for the file pyopenjtalk_plus-0.3.4.post5-cp312-cp312-win32.whl.

File metadata

File hashes

Hashes for pyopenjtalk_plus-0.3.4.post5-cp312-cp312-win32.whl
Algorithm Hash digest
SHA256 7de38ddc25538dcd784bff46b96fe9a6301478c50de96aeeb0c430f0357e2fda
MD5 3ee2071225a57cb449d6fbaeb5149cda
BLAKE2b-256 827d760d5562964cedd60044134a42e266401170faae99af40850bc17f4af94c

See more details on using hashes here.

File details

Details for the file pyopenjtalk_plus-0.3.4.post5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pyopenjtalk_plus-0.3.4.post5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 8d0701e1ba42e80d4b94c191c5f1fe9cf955ff409aef3be91aa1504876c10e04
MD5 39b3a75e2860fa61de96079b0c0c627e
BLAKE2b-256 61b9667af7c81897ff7875e997e32b00472c784fda9df1ad3b7319f2f93a8e0e

See more details on using hashes here.

File details

Details for the file pyopenjtalk_plus-0.3.4.post5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for pyopenjtalk_plus-0.3.4.post5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 b75dab00b595ae79625f4681af0c4b590a05ea050d3e408b19c5684c90c5f460
MD5 8085ce7017cd39e800977861e8ff3aa1
BLAKE2b-256 953f273cdb5f94c61cb2687c5e32d67b02360169274f25b592a9a2172b61e434

See more details on using hashes here.

File details

Details for the file pyopenjtalk_plus-0.3.4.post5-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for pyopenjtalk_plus-0.3.4.post5-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 8d8edd7e9c689ac1fac53ec640c1ff8d9f0817afdb50eff4c739f42830706c93
MD5 2ff9a55bfb4881ff19959436ec8fcae6
BLAKE2b-256 8c55aee477cd4aa14abf8d24defa881690b1a7391fb48a60f74597792c517624

See more details on using hashes here.

File details

Details for the file pyopenjtalk_plus-0.3.4.post5-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pyopenjtalk_plus-0.3.4.post5-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a8fb7af1b98d4d62643929f2d22471f805f50c46388f46dcc81e03e3af239194
MD5 6b6f4a69f7951add2367ce2db155e583
BLAKE2b-256 bb52ec51e87f37192494d78d3bcf54588307e81734e55f3dedf8cc88c3f2b477

See more details on using hashes here.

File details

Details for the file pyopenjtalk_plus-0.3.4.post5-cp312-cp312-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for pyopenjtalk_plus-0.3.4.post5-cp312-cp312-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 9775d99b7b71f665d380bdc27617d6e8f193203ca281e6588a3236852bc6be89
MD5 a0e00718442935e356c33f07cb825361
BLAKE2b-256 2885f66cf0049e2234e089cef35d9d1f7c2b08145e8a38147cc2dddad6f92ec4

See more details on using hashes here.

File details

Details for the file pyopenjtalk_plus-0.3.4.post5-cp312-cp312-macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for pyopenjtalk_plus-0.3.4.post5-cp312-cp312-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 4c3685d7ac67713ea7012ae30ab5e3ae8be8f8dd743ba3acb62e3747f8bdee66
MD5 9af008d91f802166128d6764bb37dd57
BLAKE2b-256 600e53a5b1539be47188077a745533a2a8aeb9e29af8a3b6c9287e0453d709f6

See more details on using hashes here.

File details

Details for the file pyopenjtalk_plus-0.3.4.post5-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for pyopenjtalk_plus-0.3.4.post5-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 08b07f999c490d158d13594b29db163c89d7e37d1c61100e09e61afee5259adc
MD5 ce2402f67572e6dd0cb95f4be7bb5afb
BLAKE2b-256 e65747a4733ec375070b9bafc3427ed6a2045af3d2f26db4a62ab83d6cc83cff

See more details on using hashes here.

File details

Details for the file pyopenjtalk_plus-0.3.4.post5-cp311-cp311-win32.whl.

File metadata

File hashes

Hashes for pyopenjtalk_plus-0.3.4.post5-cp311-cp311-win32.whl
Algorithm Hash digest
SHA256 91aa96be2835ac845573f486d420f922069f1a59edab3d480238912fb4aa1a15
MD5 680fa422afacc882bb374e9c7a5e97a4
BLAKE2b-256 0706b6f3ef99c41d956ad282fcc947747119ecccc5ae677c76b14c74e468c2da

See more details on using hashes here.

File details

Details for the file pyopenjtalk_plus-0.3.4.post5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pyopenjtalk_plus-0.3.4.post5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 2d636c56a40dd4df45622752cc8042d2f30cdc61cdba149d5a536776396dc13b
MD5 c6cf19366274dd3c1668a54300241a59
BLAKE2b-256 ba5cfe1d5bd5fd22c1be0e55007c36980a0a31dd4eaf4178e629a55996733373

See more details on using hashes here.

File details

Details for the file pyopenjtalk_plus-0.3.4.post5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for pyopenjtalk_plus-0.3.4.post5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 a64cbd446b2f4f7027100498de342366f570555802a24cd9e2dd9505752e6ae7
MD5 dc9b1256215f29b4c162f64a098fac98
BLAKE2b-256 6824b5d95e7c9ff9253e364d64eb6b590cb17bcbe70c99b287133b218aeaf7e9

See more details on using hashes here.

File details

Details for the file pyopenjtalk_plus-0.3.4.post5-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for pyopenjtalk_plus-0.3.4.post5-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 566cfcf44ed2a6ab5dd10ea20565b8bf2eb9007014e67a28367a873ae638910d
MD5 33bf773b8e630a22a89600304b07ecfd
BLAKE2b-256 4e5b674116c078dc97883a5d8595f87e1ab1adb6807b27b1e9540177ab768000

See more details on using hashes here.

File details

Details for the file pyopenjtalk_plus-0.3.4.post5-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pyopenjtalk_plus-0.3.4.post5-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 29da7872ccbc706e6579a74fac984446dac99f988886fdcf3d11fc7c4afa4af6
MD5 ff4b963e3f6045c44ff422df93f2fdad
BLAKE2b-256 4c7f034d8c9047d8490accc9549bbc958f6defc9bb8192de6a49ea260b59bce9

See more details on using hashes here.

File details

Details for the file pyopenjtalk_plus-0.3.4.post5-cp311-cp311-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for pyopenjtalk_plus-0.3.4.post5-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 d4ef706fcc1bf12305c8f9e96c115b03d6dafab31eed2bfe72ebdffc4c61b7ab
MD5 f33741cfd9562f9edb7ab9937431455c
BLAKE2b-256 898147c0ae2b9a8effc02790522e11eb7d7b498ee8c61e8473c0883f103a6cc8

See more details on using hashes here.

File details

Details for the file pyopenjtalk_plus-0.3.4.post5-cp311-cp311-macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for pyopenjtalk_plus-0.3.4.post5-cp311-cp311-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 3a901d700d6fcf241daea0960a434c20a10f5b10d4994f12cf4a30a92a09745a
MD5 b3cfc12de5eca29a96aa096bfa77d60c
BLAKE2b-256 24ab9fe668fc25a0fc5a887f97960e7a8958361152f80d0c4988e2b440a25074

See more details on using hashes here.

File details

Details for the file pyopenjtalk_plus-0.3.4.post5-cp310-cp310-win_amd64.whl.

File metadata

File hashes

Hashes for pyopenjtalk_plus-0.3.4.post5-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 60a90cf4e62e190cf94e7df1c2453d58cdfbd11ec079ee17197ce2a94050b6c0
MD5 cba8690e34147b76374d9668ccf20460
BLAKE2b-256 95147cf104f60e8a7748fa25552260673aa371eb79a93003a9c59b7a01fb3d36

See more details on using hashes here.

File details

Details for the file pyopenjtalk_plus-0.3.4.post5-cp310-cp310-win32.whl.

File metadata

File hashes

Hashes for pyopenjtalk_plus-0.3.4.post5-cp310-cp310-win32.whl
Algorithm Hash digest
SHA256 08fac337b86e2f9ff425dde4796a1084c3ded35a4f483f0a6675b6430981f0d5
MD5 0bf58ec9554dd6af00f77bfccf9e062d
BLAKE2b-256 bf2ed1ba94602b2f1e026fe850de6dc2123a03fc91709ff233aaa64cea0f076a

See more details on using hashes here.

File details

Details for the file pyopenjtalk_plus-0.3.4.post5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pyopenjtalk_plus-0.3.4.post5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 635c38e7fc6ea08fddb5680246651cd28bdb95054ff7c2a64b0c1bad6ac24e6d
MD5 24c533d60a7fa27183817ba5e0ebffd6
BLAKE2b-256 a664e2ed775b958ff15717e507ef399ab15cf2da305518255b31088ab710dc7c

See more details on using hashes here.

File details

Details for the file pyopenjtalk_plus-0.3.4.post5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for pyopenjtalk_plus-0.3.4.post5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 db3586bb66c617154ac855a4a1efec850a42a5838741a60fd4020673576a3334
MD5 f81ca4397728a2b4eadd37971d06ca94
BLAKE2b-256 51646e3b3596f25d2c60c1adaf6d5dbee2c058dddfdab156bb4f633bbdccc52f

See more details on using hashes here.

File details

Details for the file pyopenjtalk_plus-0.3.4.post5-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for pyopenjtalk_plus-0.3.4.post5-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 b417fe4c78b85777059c888efdd93204d8deb71e03bfebfca3931eb02a8a5bae
MD5 d2e466daf679e85926b8ccbcc7ae7b8c
BLAKE2b-256 7b6ea4efb1d63c4eaafe99cb4350d2df69b8c943bc5f63842d14e5b6c782dde2

See more details on using hashes here.

File details

Details for the file pyopenjtalk_plus-0.3.4.post5-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pyopenjtalk_plus-0.3.4.post5-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0beb3cc4bf322ae73a9707c688ad19b3951a2c5cc3a1959a648f7524109a3dc4
MD5 35cd472eb302693ce4416b8326b5e13c
BLAKE2b-256 5e172711fa45b3614308477ec14aa8b24129e179953c3d42a699bfc3ace085d7

See more details on using hashes here.

File details

Details for the file pyopenjtalk_plus-0.3.4.post5-cp310-cp310-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for pyopenjtalk_plus-0.3.4.post5-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 3d9caf76e65e12b52c000179ea51ca541d9d655b20579427234ea486459a669d
MD5 9bd6daa4c80f58e9d459a807fe06d277
BLAKE2b-256 2266d7a8e1ae74f26b7e1dee551aafd4e18a5be996633520285c0ace1dd51141

See more details on using hashes here.

File details

Details for the file pyopenjtalk_plus-0.3.4.post5-cp310-cp310-macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for pyopenjtalk_plus-0.3.4.post5-cp310-cp310-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 2b5e4bb6cb0ccbefdd562e6c184fe632b1817aa27c9e807d61a997e9eb14328b
MD5 cc1f1bf403b493bda9b31e4f26ff67a8
BLAKE2b-256 29099ef30d7fd6c12737ec402e0d8c0f324922888ec756d239cdeca2ec6ecdb5

See more details on using hashes here.

File details

Details for the file pyopenjtalk_plus-0.3.4.post5-cp39-cp39-win_amd64.whl.

File metadata

File hashes

Hashes for pyopenjtalk_plus-0.3.4.post5-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 bf245918fe6b4f0931c6bce1a0495b90c0a0717b67eaa5328c1d67a3157fe657
MD5 487de77d017a05ca6d02fd7637aa1db6
BLAKE2b-256 ae39ab7a8e954ed4b27194bced5fe711c83bb1e4b23fe5bf480d6eb33955afef

See more details on using hashes here.

File details

Details for the file pyopenjtalk_plus-0.3.4.post5-cp39-cp39-win32.whl.

File metadata

File hashes

Hashes for pyopenjtalk_plus-0.3.4.post5-cp39-cp39-win32.whl
Algorithm Hash digest
SHA256 87e711869867631feba44a76f14069a8d160d5e8dea7e82a9229369439b70566
MD5 f59f0ac7cdec9123c870c1c266a1664a
BLAKE2b-256 a89fd005407706dfa788e953e13b79deb5d1baac5ff65c208624cfa0ad048749

See more details on using hashes here.

File details

Details for the file pyopenjtalk_plus-0.3.4.post5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pyopenjtalk_plus-0.3.4.post5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 07213e0c809114529052f6e092c277c975300858d6a515006f70104a69e8a1e7
MD5 3b0eeec5a4c024a8c0d21dc007063124
BLAKE2b-256 3ef50585f16ae6132647dc9d08323f3be2118b5da8dde2bc4a4cd44b678de846

See more details on using hashes here.

File details

Details for the file pyopenjtalk_plus-0.3.4.post5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for pyopenjtalk_plus-0.3.4.post5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 0a964582525b3b776933135ffdce0692d89d1762d1e76bd14475dff328c394c2
MD5 3b7264fe2fdf1e2d9bdd5fa85ecaf54a
BLAKE2b-256 939d4d72fa51bfc240049a2240075ef46f3ecbb228e830636e3c8e9cdbe044aa

See more details on using hashes here.

File details

Details for the file pyopenjtalk_plus-0.3.4.post5-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for pyopenjtalk_plus-0.3.4.post5-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 3af35220e667c26a600b252829eced2f590f0717751a81dbff6c2fde0855e041
MD5 3771f2da77c4e3689940f888b8176e10
BLAKE2b-256 f7b84292beb5e889cdd6d9f78d77c80a313ac87009ce241a767f80a353e92697

See more details on using hashes here.

File details

Details for the file pyopenjtalk_plus-0.3.4.post5-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pyopenjtalk_plus-0.3.4.post5-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 1eb911c59a90b6ba3797451bc39d0193c5980af71586d24fe15b5dca4163f718
MD5 7cfaf3d6891bd1a51f5eb98bce3ba1bd
BLAKE2b-256 aafeaf2e0879bf11a2567a2171e967fc73fcbba5e3e33cb2616d9180986c29a6

See more details on using hashes here.

File details

Details for the file pyopenjtalk_plus-0.3.4.post5-cp39-cp39-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for pyopenjtalk_plus-0.3.4.post5-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 05bf00243d460865c0fa223da33f0e2ac5b8f23d10242e4d8b9de974c554fe52
MD5 6e411a00a340cb77933724afb2e776ef
BLAKE2b-256 1588c007a90fdf14cc74adbc4d37063bf8048c989e267a1ffdad08dc53b3e45d

See more details on using hashes here.

File details

Details for the file pyopenjtalk_plus-0.3.4.post5-cp39-cp39-macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for pyopenjtalk_plus-0.3.4.post5-cp39-cp39-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 f1198d0afb130eb58b0f53031f9716905097f41530e227ede773d23949415931
MD5 ecf042102a3a68220acf5acfce925413
BLAKE2b-256 2f94d66087eeccde11aa4ba49239047ee6201bc3c773a054e2f8faaa0e070515

See more details on using hashes here.

File details

Details for the file pyopenjtalk_plus-0.3.4.post5-cp38-cp38-win_amd64.whl.

File metadata

File hashes

Hashes for pyopenjtalk_plus-0.3.4.post5-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 704a4d299021d1ef2341ba4089a4d2e7a18d0c7b016d040c1b0fac7bc8d1f295
MD5 0f740b4fd5d4aa806375ef1bdfe9f34d
BLAKE2b-256 bf4a2f581e75f279939627a6b28f4a023f9ca1917e2c6e0d279e2dbd27685d00

See more details on using hashes here.

File details

Details for the file pyopenjtalk_plus-0.3.4.post5-cp38-cp38-win32.whl.

File metadata

File hashes

Hashes for pyopenjtalk_plus-0.3.4.post5-cp38-cp38-win32.whl
Algorithm Hash digest
SHA256 c6d95796e05628e2417cc21c453fc87f22305f9aa406e2c6d35cab612e802c9e
MD5 2a60b8c91f2609ca70782d7945f2d9b2
BLAKE2b-256 843144928f5a46fc76bbef45bedb65ae88206689e750d94428818d1b5218ee89

See more details on using hashes here.

File details

Details for the file pyopenjtalk_plus-0.3.4.post5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pyopenjtalk_plus-0.3.4.post5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 8d362d8a0bbd8b529e15d30e00bb3ee6f0fbe968b34468a7b87f946fb043a468
MD5 b3dfa5a28d86eb42c35e50beab59a866
BLAKE2b-256 719f492aa0d0a1b21765c1df76487e28f5d90b4d77b502804900af1e9de8b31e

See more details on using hashes here.

File details

Details for the file pyopenjtalk_plus-0.3.4.post5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for pyopenjtalk_plus-0.3.4.post5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 bd26e9477d97c596751c83cc43dd57be361bd96c0e9035204072fd83a6c17cad
MD5 8b68615135376c3e9e3906f26d82c6c2
BLAKE2b-256 dc42dba3104c77ab81fb8d136c69fd595d235cbb0140d10f3d8caf5abcf970a5

See more details on using hashes here.

File details

Details for the file pyopenjtalk_plus-0.3.4.post5-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for pyopenjtalk_plus-0.3.4.post5-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 69750547be7246d40bb192a9d06db7903e5fa84e70b81f3573d94f951aac7a01
MD5 8d60f788d9263f1213a11477e7356a8b
BLAKE2b-256 e8944ed7538af23c6b61a0fb55880cfef1df9bc7a19c1da81e24e91429a58c3e

See more details on using hashes here.

File details

Details for the file pyopenjtalk_plus-0.3.4.post5-cp38-cp38-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pyopenjtalk_plus-0.3.4.post5-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 7f880b62d9b6a94feb9b0e8356758deb647cbcaf24adec0877ed7b11eed2701f
MD5 93fb6fd1f0f161407a1415ed1778e9f4
BLAKE2b-256 f4590affe104bee0656e91065218a32b52570b4debf94f3171e85c4741b020b2

See more details on using hashes here.

File details

Details for the file pyopenjtalk_plus-0.3.4.post5-cp38-cp38-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for pyopenjtalk_plus-0.3.4.post5-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 3378f6bcdd1ab38b7ced5fd4f8146befa89a92785da655a8785c2ff7838d77d9
MD5 9541274b7e220bed80a3e042b71e79a1
BLAKE2b-256 266d5dad83738584faa4ad507ec37b25d75de1eb74f26c3b940011f9ab70dc44

See more details on using hashes here.

File details

Details for the file pyopenjtalk_plus-0.3.4.post5-cp38-cp38-macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for pyopenjtalk_plus-0.3.4.post5-cp38-cp38-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 e7802b81843f8bddf6e1624264699cbcb1e949047fc2f763086bbfa4986abf7b
MD5 dd53948eba03240994511a9e5983bc21
BLAKE2b-256 3d432800d35624183c53028527199be1cd8d7bb7765a42e5bd25676d75bf2c7c

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page