Skip to main content

pyopenjtalk-plus

PyPI Python package License

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

Changes in this fork

  • パッケージ名を pyopenjtalk-plus に変更
    • ライブラリ名は pyopenjtalk から変更されておらず、pyopenjtalk 本家同様に import pyopenjtalk でインポートできる
    • pyopenjtalk 本家のドロップイン代替として利用できる
  • Python 3.10 以降をサポート (3.10 / 3.11 / 3.12 / 3.13 / 3.14)
    • v0.4.1-post9 以降、Python 3.9 のサポートを終了した
    • CI 対象の Python バージョンは 3.11 以降をメインとしている
  • Windows・macOS (x64 / arm64)・Linux すべての事前ビルド済み wheels を PyPI に公開
    • pyopenjtalk は hts_engine_API・OpenJTalk・Cython に依存しており、ビルド環境の構築難易度が比較的高い
      • 特に Windows においては MSVC のインストールが必要となる
    • 事前ビルド済みの wheels を PyPI に公開することで、ビルド環境のない PC でも簡単にインストール可能にすることを意図している
  • Python 側と Cython 側の両方に型ヒント (Type Hints) を追加
  • Cython を 3.0 系に更新 (v0.3.4-post6 以降)
    • https://github.com/cython/cython/issues/5982 の通り、Python 3.13 では一部の非推奨 C API が削除されている
    • Cython 0.x 系では Python 3.13 以降のビルドに失敗するため、Cython 3.0 系に更新した
  • numpy 2.x 系に対応 (v0.3.4-post6 以降)
    • numpy 2.x 系では互換性のない変更が多数行われているが、公式ドキュメント によると「numpy 2.x 系でビルドした wheel であれば numpy 1.x 系でも動作する」らしい
      • pyopenjtalk-plus では、numpy 2.x 系でビルドした wheel を公開することで対応した
    • marine-plus の最新版でも numpy 2.x 系へ対応済みのため、numpy 1.x 縛りから解放されている
  • pyopenjtalk.run_frontend() 関数に CLI インターフェイスを追加 (v0.3.4-post6 以降)
    • コマンドライン引数としてテキストを受け取り、そのテキストを処理した結果を標準出力に出力する
    • 実行例: python -m pyopenjtalk "あらゆる現実を、すべて自分の方へねじ曲げたのだ。"
  • OpenJTalk 向けシステム辞書を、pyopenjtalk では初回実行時に自動ダウンロードされる open_jtalk_dic_utf_8-1.11.tar.gz から、独自にカスタマイズした pyopenjtalk-plus 向け辞書 (wheel に同梱) に変更
    • この辞書は n5-suzuki/pyopenjtalk にかつて含まれていた mecab-naist-jdic のカスタム版をベースに、jpreprocess/naist-jdic での改良点を取り込み、さらに独自に改良したもの
    • jpreprocess/naist-jdic では mecab-naist-jdic に jpreprocess 向けの改良が施されており、辞書データのミスの修正など有用な変更が多かったことから、修正内容をほぼすべて適用した
    • 辞書 CSV を用途別に分割し、大規模なコスト監査・同形異音語整理・neologd 由来パッチ取り込みを継続している
      • naist-jdic.csv: naist-jdic (を魔改造した何か)
        • 数十万行あり管理が大変なため、v0.4.1-post8 以降の変更内容は scripts/modify_dictionary.py にコード化して管理している
      • unidic-csj.csv: UniDic-CSJ v2.2.0 のうち、naist-jdic に不足していた語彙を品詞体系の変換・コスト調整の上で追加したと思われる何か
      • fillers.csv / symbols.csv / rare_syllables.csv: メンテナンス性の観点から、フィラー・記号・稀な音節を上記から切り出したもの
      • heteronyms.csv: tsqyomi 向けの同形異音語候補辞書(手動編集)
    • pyopenjtalk 本家で実装されていた _lazy_init() 関数内での辞書ダウンロード処理は pyopenjtalk-plus での辞書同梱に伴い削除している
      • 辞書データがなければ pyopenjtalk は動作しないため (つまり辞書をダウンロードしない選択肢はなく必須) 、毎回追加でダウンロードするよりも wheel に直接含めた方が安定性の面でよりベターだと考えた
      • pyopenjtalk-plus の辞書データは 100MB 以上あるが (wheel 自体は圧縮が効いて 25MB 程度) 、せいぜい数十 MB のサイズ節約よりもアクセント・読み推定精度の向上を優先した
    • カスタム辞書は pyproject.toml のあるディレクトリで uv run task build-dictionary を実行するとビルドできる
      • 管理の簡便化のため、ビルド済みの辞書データ (*.bin / *.dic) はこの Git リポジトリに含めている
    • 文脈で決まる語の読みや、辞書の誤読・既定の読みを多数修正 (v0.4.1-post10 以降)
    • 既存エントリのアクセントとアクセント句の区切りを大規模に修正し、学校名の普段の表記 (「〇〇高校」など) を追加 (v0.4.1-post10 以降)
      • 修正内容は scripts/dictionary_accent_fixes.py と scripts/dictionary_school_name_entries.py で管理している
  • pyopenjtalk.run_frontend() や pyopenjtalk.g2p() でも run_marine=True を指定し marine によるアクセント推定を行えるようにした
    • 以前から pyopenjtalk.extract_fullcontext() では marine による AI アクセント推定が可能だったが、pyopenjtalk.run_frontend() や pyopenjtalk.g2p() にも実装した
      • 「デフォルトの学習済みモデルは JSUT コーパスのみから学習されており、論文に記載されている性能とは異なる」(≒ marine 開発元の LINE 社内では独自の音声コーパスを用いてより高性能な学習済みモデルを作成・運用している) 旨が marine の README に記載されている
      • このためデフォルトの学習済みモデルを使う限り、現状 OpenJTalk のアクセント推定の方が精度が高い傾向にある
    • pyopenjtalk-plus では PyTorch への依存が発生することからデフォルトの依存関係には含めていないが、別途 marine / marine-plus をインストールすれば利用可能
    • marine 本家は Windows や Python 3.12 以降に非対応な上、非推奨警告が多数出力される問題があるため、これらの問題に対処した marine-plus の利用を推奨します
      • pip install pyopenjtalk-plus[marine] で pyopenjtalk-plus と同時に marine-plus をインストールできる
  • litagin02/pyopenjtalk での変更を取り込み、pyopenjtalk.unset_user_dict() 関数を追加
    • VOICEVOX で利用されている VOICEVOX/pyopenjtalk には、VOICEVOX ENGINE で利用するためのユーザー辞書機能が独自に実装されている
    • その後、pyopenjtalk v0.3.4 で VOICEVOX/pyopenjtalk と同等のユーザー辞書機能が実装された
      • VOICEVOX/pyopenjtalk の set_user_dict() 関数が update_global_jtalk_with_user_dict() 関数になるなど、同等の機能ながら関数名は変更されている
      • …が、どういう訳か VOICEVOX/pyopenjtalk には存在した「設定したユーザー辞書をリセットする」関数が実装されていない
    • このため litagin02/pyopenjtalk では VOICEVOX/pyopenjtalk から pyopenjtalk.unset_user_dict() 関数が移植されており、pyopenjtalk-plus でもこの実装を継承した
    • v0.4.1-post9 以降、ユーザー辞書の読み保護指定機能を追加した
      • update_global_jtalk_with_user_dict() には .dic パス文字列のほか、UserDictionaryEntry (dic_path + is_reading_protected) のリストも渡せる
      • is_reading_protected=True にしたユーザー辞書エントリは、ユーザー辞書が与えた読みを tsqyomi を含む後段の読み補正から保護する
      • 読み保護したエントリは、アクセント核も後段の補正から保護する (v0.4.1-post10 以降)
    • このほか、クロスプラットフォームで wheel をビルドするための GitHub Actions ワークフローもこのフォークから取り込んだもの
  • VOICEVOX/pyopenjtalk での変更を取り込み、多数の改良点を反映
    • OpenJTalk の VOICEVOX 向けフォーク (VOICEVOX/open_jtalk) での変更内容を前提とした変更が多数含まれる
    • 取り込んだ変更点 (一部):
      • text2mecab() 関数を安全に改良し、エラー発生時に適切な RuntimeError を送出する
      • ARM 版 Windows でビルド可能にする
      • Windows で辞書の保存先パスに日本語を含むマルチバイト文字が含まれるとエラーが発生する問題を修正
      • 各環境でのビルドに関連する諸問題を修正
      • (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 での変更を取り込み、多数の改良点を反映
    • 複数の読み方をする漢字の読みに対し SudachiPy で形態素解析を行い、得られた結果を使い OpenJTalk から返された list[NJDFeature] 内の値を補正する実装がユニーク
    • 「何」を「なん」と読むか「なに」と読むかを判定するための scikit-learn で実装された機械学習モデルによるロジック に関して、学習済みモデルを ONNX に変換し、scikit-learn 0.24.2 への依存なしに動かせるよう改良した
      • 当該モデルは scikit-learn 0.24.2 でしか動作しないが、3年以上前にリリースされた極めて古いバージョンにつき Python 3.11 以降では動作せず、依存関係の問題もありインストール自体が困難になってきている
      • 学習用コードは含まれていなかったため推測するしかないが、モデルのバイナリに含まれる文字列から、RandomForestClassifier を用いた比較的単純な機械学習モデルだと推測される
      • ONNX 変換ツール を自作した上で ONNX に変換し、推論コード も ONNX Runtime を用いて推論するよう変更した
        • ONNX 推論には pip install pyopenjtalk-plus[onnxruntime] が必要
          • ONNX Runtime には onnxruntime-gpu など複数の排他的なバリエーションがあり、依存関係側で導入パッケージを固定すると CPU 版しかインストールできなくなってしまうため、敢えて必須依存関係には設定していない
        • ONNX Runtime 1.26 以降で推論結果が壊れる問題があったため、v0.4.1-post9 以降ではモデルを明示的に二クラス確率で出力する形へ移行している
          • v0.4.1-post9 以降では、フェイルセーフとして「何を」「何が」など文脈から「ナニ」と確定できる場合は、モデルより先に決定論的ガードが適用される
  • korguchi/pyopenjtalk での変更を取り込み、多数の改良点を反映
    • このフォークで利用されている korguchi/open_jtalk では、「クァ」「グヮ」「デェ」「フュ」「シィ」などの比較的珍しい音素のサポートが追加されている
    • ほかにも「!」(感嘆符)を「記号/一般」として正しく推定するための改良など、概ね副作用なしに精度向上が見込めることから、有用性を鑑みほぼそのままマージした
    • この関係で、pyopenjtalk 本家とは一部音素での挙動が異なる
  • sabonerune/pyopenjtalk での変更を取り込み、スレッドセーフ化と一部 Cython コードの nogil 化を達成 (v0.3.4-post6 以降)
    • スレッドセーフ化により、複数スレッドから安全に pyopenjtalk を呼び出せるようになった
    • 一部 Cython コードの nogil 化により、若干のパフォーマンス向上も見込める
    • https://github.com/r9y9/pyopenjtalk/pull/87 と https://github.com/r9y9/pyopenjtalk/pull/88 の内容を一部改変の上で取り込んだ
    • グローバルインスタンスは内部ロックで直列化されるため、高並列用途ではスレッドごとに OpenJTalk() を生成し jtalk= 引数で渡すことを推奨する
    • v0.4.1-post9 以降、ユーザー辞書の差し替え (update_global_jtalk_with_user_dict() / unset_user_dict()) は、進行中の処理を待ってからグローバルインスタンスを交換するように改良した
  • o24s/haqumei での優れた実装・ロジック・テストを移植・バックポートし、複数の機能追加とパフォーマンスの大幅改善を達成 (v0.4.1-post8 以降)
    • Haqumei は pyopenjtalk-plus の Rust 再実装であり、その実装過程で発見・整備された設計・ロジック・テストを多数バックポートした
    • 形態素-音素マッピング API を移植・追加 (Haqumei の g2p_mapping_detailed() に相当):
      • run_frontend_detailed(): MeCab 解析 1 回で NJD features と MeCab 形態素 (MecabMorph) を同時に取得
      • make_phoneme_mapping(): 音素と形態素の対応マッピングを生成
      • g2p_mapping(): 上記をまとめて呼び出す便利ラッパー
      • types.py に MecabMorph / SurfacePhonemeMapping TypedDict を追加
      • SurfacePhonemeMapping を NJDFeature のスーパーセットに拡張し、HTS ラベルを解析せずにアクセント句境界・核位置・品詞・読みなどをまとめて取得可能にした
      • g2p_mapping() / make_phoneme_mapping() の返却値 char_span(入力テキスト上の半開区間)を追加 (v0.4.1-post9 以降)
      • g2p_mapping() の返却値に、読みの出所を表す reading_source と user_dictionary_path を追加 (v0.4.1-post10 以降)
      • 音素ごとの高低とアクセント句の区切りを返す g2p_prosody() / g2p_mapping_prosody() を追加 (v0.4.1-post10 以降)
    • 発音復元オプションを移植 (Haqumei の revert_pron_to_read() に相当)
      • use_read_as_pron: 全ての発音 (pron) を強制的に読み (read) で上書きする
      • revert_long_vowels: 辞書が長音にした母音だけを、文字単位で元の読みに戻す (助詞の「ワ」「エ」や連濁は発音のまま残す)
      • revert_yotsugana: 辞書が「ズ」「ジ」にした四つ仮名 (ヅ・ヂ) だけを、文字単位で元の読みに戻す
    • g2p() 実行時、Haqumei と同様に Cython 側で JPCommonLabel から直接音素列を取得するよう変更し、パフォーマンスを改善
    • use_sudachi_kanji_yomi / predict_nani / normalize_mode フラグを追加し、速度と精度のトレードオフがある機能を個別にオンオフ可能にした
    • Mecab_analysis() 内の lattice->clear() を Mecab_refresh() に移動し、Cython 側からの MeCab Lattice ノード走査を実現
    • Haqumei の充実したテストスイートを移植・追加し、テストカバレッジを大幅に向上
    • ローマ数字・型番の読みと、顔文字を読み上げない処理などを移植 (v0.4.1-post10 以降)
  • 辞書にない漢字・異体字・外来語の読みを改善 (v0.4.1-post10 以降)
    • 辞書にない漢字に Unihan と Sudachi で読みを補い、異体字を通用字体に直して読み、辞書が置き換えた外来語の表記を表層形どおりに戻す
  • 数詞・助数詞の読みとアクセントを改善 (v0.4.1-post10 以降)
    • 電話番号・郵便番号・号室の桁読み、小数、概数 (「2、3日」)、「〜万円」、0埋めした日付などの読みとアクセントを修正した
  • フロントエンド API を段階実行可能に分割
    • MeCab 解析・NJD 処理・後処理を個別に呼び出し、カスタムパイプラインや候補読みの比較が可能になった
    • run_mecab() / run_njd_from_mecab(): v0.4.1-post4 以降
    • run_mecab_detailed() / run_mecab_nbest_features(): v0.4.1-post9 以降
  • tsqyomi (Text-to-Speech Quick Yomi Optimized Minimal Inferencer) による文脈を考慮した読み選択機能を統合 (v0.4.1-post9 以降)
    • 同形異音語の読みを、専用モデルを用いて文脈を考慮して選択できる
      • tsqyomi を併用する場合、事前に任意のタイミングで pyopenjtalk.tsqyomi.load_model() を呼び出したあと、use_tsqyomi=True を g2p() / run_frontend() / g2p_mapping() / extract_fullcontext() / tts() 等に指定して有効化する
    • 追加の依存関係を含むため、別途 pip install pyopenjtalk-plus[tsqyomi]
      • 初回利用時に Hugging Face から ONNX モデルがダウンロードされる
    • tsqyomi を有効にした場合は、Sudachi による読み補正と「何」推定用 AI モデルは自動的に無効化され、tsqyomi による選択結果が優先される
    • モデルを v6 に更新し、同形異音語推定性能を大幅に改善 (v0.4.1-post10 以降)
  • フロントエンド共通オプションを整理
    • 主要 API (g2p() / run_frontend() / g2p_mapping() 等) で共通利用できる主なフラグ:
      • run_marine: marine を用いたアクセント推定を行うか
      • use_vanilla: pyopenjtalk-plus 独自の後処理を省略し、OpenJTalk の素の NJDFeature をそのまま後段に流す
      • use_tsqyomi: ロード済みの tsqyomi で文脈に合う読み候補を選ぶ (v0.4.1-post9 以降)
      • use_sudachi_kanji_yomi: Sudachi による同形異音語の読み補正を行う (v0.4.1-post8 以降 / use_tsqyomi=True 時は無効)
      • predict_nani: ONNX モデルで単独形態素として出現した「何」の読みを推定する (v0.4.1-post8 以降 / use_tsqyomi=True 時は無効)
      • normalize_mode: 入力テキストに適用する Unicode 正規化方式 (v0.4.1-post8 以降 / "None" / "NFC" / "NFKC")
      • use_read_as_pron / revert_long_vowels / revert_yotsugana: 発音形の復元オプション (v0.4.1-post8 以降)
      • iu_pronunciation: 「言う」の「イウ」音の発音を「イウ」「ユウ」「ユー」から選ぶ (v0.4.1-post10 以降)
      • is_non_pause_symbol: 記号に短ポーズを入れない判定関数を差し替える (v0.4.1-post10 以降)
  • submodule の OpenJTalk を tsukumijima/open_jtalk に変更
  • submodule の hts_engine_API を syoyo/hts_engine_API に変更
  • ライブラリの開発環境構築・ビルド・コード整形・テストを taskipy によるタスクランナーでの管理に変更
  • 利用予定のない Travis CI 向けファイルを削除
  • 不要な依存関係の削除、依存バージョンの整理
  • その他精度の改善・コードのクリーンアップ、非推奨警告の解消など

Installation

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

pip install pyopenjtalk-plus[onnxruntime]

# 「ONNX モデルで単独形態素として出現した「何」の読みを推定する」機能を使わない場合
pip install pyopenjtalk-plus

# marine によるアクセント推定を使う場合
pip install pyopenjtalk-plus[marine]

# tsqyomi による同形異音語の文脈読み選択を使う場合
pip install pyopenjtalk-plus[tsqyomi]

# 複数の extras を同時にインストール
pip install "pyopenjtalk-plus[onnxruntime,marine,tsqyomi]"

Development

開発環境は macOS / Linux 、Python バージョンは 3.10 以上が前提です (Python 3.11 以降を推奨) 。

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

# uv をインストールし、.venv/ 以下の仮想環境を作成
pip install uv
uv venv

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

# コード整形
uv run task lint
uv run task format

# テストの実行
uv run task test

# Pyright による型チェック
uv run task typecheck

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

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

# ビルド成果物をクリーンアップ
uv run 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.

Metadata

Release files for pyopenjtalk-plus 0.4.1.post10

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pyopenjtalk-plus 0.4.1.post10
File Size Uploaded Provenance Actions
pyopenjtalk_plus-0.4.1.post10.tar.gz 25.5 MB Without provenance Details for pyopenjtalk_plus-0.4.1.post10.tar.gz

Built distributions (wheels)

Table of built distributions (wheels) for pyopenjtalk-plus 0.4.1.post10
File Actions
pyopenjtalk_plus-0.4.1.post10-cp314-cp314-win_amd64.whl CPython 3.14 CPython 3.14 Windows x86-64 Details for pyopenjtalk_plus-0.4.1.post10-cp314-cp314-win_amd64.whl
pyopenjtalk_plus-0.4.1.post10-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl CPython 3.14 CPython 3.14 Linux glibc 2.24+ x86-64, Linux glibc 2.28+ x86-64 Details for pyopenjtalk_plus-0.4.1.post10-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
pyopenjtalk_plus-0.4.1.post10-cp314-cp314-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl CPython 3.14 CPython 3.14 Linux glibc 2.28+ ARM64, Linux glibc 2.24+ ARM64 Details for pyopenjtalk_plus-0.4.1.post10-cp314-cp314-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl
pyopenjtalk_plus-0.4.1.post10-cp314-cp314-macosx_10_15_universal2.whl CPython 3.14 CPython 3.14 macOS 10.15+ universal2 (ARM64, x86-64) Details for pyopenjtalk_plus-0.4.1.post10-cp314-cp314-macosx_10_15_universal2.whl
pyopenjtalk_plus-0.4.1.post10-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details for pyopenjtalk_plus-0.4.1.post10-cp313-cp313-win_amd64.whl
pyopenjtalk_plus-0.4.1.post10-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.28+ x86-64, Linux glibc 2.24+ x86-64 Details for pyopenjtalk_plus-0.4.1.post10-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
pyopenjtalk_plus-0.4.1.post10-cp313-cp313-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl CPython 3.13 CPython 3.13 Linux glibc 2.28+ ARM64, Linux glibc 2.24+ ARM64 Details for pyopenjtalk_plus-0.4.1.post10-cp313-cp313-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl
pyopenjtalk_plus-0.4.1.post10-cp313-cp313-macosx_10_13_universal2.whl CPython 3.13 CPython 3.13 macOS 10.13+ universal2 (ARM64, x86-64) Details for pyopenjtalk_plus-0.4.1.post10-cp313-cp313-macosx_10_13_universal2.whl
pyopenjtalk_plus-0.4.1.post10-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details for pyopenjtalk_plus-0.4.1.post10-cp312-cp312-win_amd64.whl
pyopenjtalk_plus-0.4.1.post10-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.24+ x86-64, Linux glibc 2.28+ x86-64 Details for pyopenjtalk_plus-0.4.1.post10-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
pyopenjtalk_plus-0.4.1.post10-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl CPython 3.12 CPython 3.12 Linux glibc 2.24+ ARM64, Linux glibc 2.28+ ARM64 Details for pyopenjtalk_plus-0.4.1.post10-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl
pyopenjtalk_plus-0.4.1.post10-cp312-cp312-macosx_10_13_universal2.whl CPython 3.12 CPython 3.12 macOS 10.13+ universal2 (ARM64, x86-64) Details for pyopenjtalk_plus-0.4.1.post10-cp312-cp312-macosx_10_13_universal2.whl
pyopenjtalk_plus-0.4.1.post10-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details for pyopenjtalk_plus-0.4.1.post10-cp311-cp311-win_amd64.whl
pyopenjtalk_plus-0.4.1.post10-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.24+ x86-64, Linux glibc 2.28+ x86-64 Details for pyopenjtalk_plus-0.4.1.post10-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
pyopenjtalk_plus-0.4.1.post10-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl CPython 3.11 CPython 3.11 Linux glibc 2.24+ ARM64, Linux glibc 2.28+ ARM64 Details for pyopenjtalk_plus-0.4.1.post10-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl
pyopenjtalk_plus-0.4.1.post10-cp311-cp311-macosx_10_9_universal2.whl CPython 3.11 CPython 3.11 macOS 10.9+ universal2 (ARM64, x86-64) Details for pyopenjtalk_plus-0.4.1.post10-cp311-cp311-macosx_10_9_universal2.whl
pyopenjtalk_plus-0.4.1.post10-cp310-cp310-win_amd64.whl CPython 3.10 CPython 3.10 Windows x86-64 Details for pyopenjtalk_plus-0.4.1.post10-cp310-cp310-win_amd64.whl
pyopenjtalk_plus-0.4.1.post10-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.24+ x86-64, Linux glibc 2.28+ x86-64 Details for pyopenjtalk_plus-0.4.1.post10-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
pyopenjtalk_plus-0.4.1.post10-cp310-cp310-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl CPython 3.10 CPython 3.10 Linux glibc 2.28+ ARM64, Linux glibc 2.24+ ARM64 Details for pyopenjtalk_plus-0.4.1.post10-cp310-cp310-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl
pyopenjtalk_plus-0.4.1.post10-cp310-cp310-macosx_10_9_universal2.whl CPython 3.10 CPython 3.10 macOS 10.9+ universal2 (ARM64, x86-64) Details for pyopenjtalk_plus-0.4.1.post10-cp310-cp310-macosx_10_9_universal2.whl

Total release size: 610.5 MB

Release files / pyopenjtalk_plus-0.4.1.post10.tar.gz

Download URL pyopenjtalk_plus-0.4.1.post10.tar.gz
Size 25.5 MB
Tags Source
SHA-256 checksum
How to use checksums
cda6a562a9cb80fbc21d151f0f0264ecd368afa3dfee51dbd7bcfdcb57df5e40
BLAKE2b-256 checksum
How to use checksums
295d966296aac74e8fa5c9c586f82df920b9d629da5968f5a86a27b286688f6c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.16

Release files / pyopenjtalk_plus-0.4.1.post10-cp314-cp314-win_amd64.whl

Download URL pyopenjtalk_plus-0.4.1.post10-cp314-cp314-win_amd64.whl
Size 26.3 MB
Tags CPython 3.14 Windows x86-64
SHA-256 checksum
How to use checksums
5e40a2fa9bf8c63009873d3ab392b4dac34e0d54c15026660b1e1abbe8b574e9
BLAKE2b-256 checksum
How to use checksums
d8e9dce1c859e228c91683dacbbf20735374859ffc0486afb705146dc9477201
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.16

Release files / pyopenjtalk_plus-0.4.1.post10-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl

Download URL pyopenjtalk_plus-0.4.1.post10-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Size 32.5 MB
Tags CPython 3.14 Linux glibc 2.24+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
ae4f09c9063ba9209ed05e0703d878b42e20d54af397293050f62502b64e9cc7
BLAKE2b-256 checksum
How to use checksums
95affa2def1f89ca3641f9cde10057a7b963e0b3a53c98354a6723e5c28197e8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.16

Release files / pyopenjtalk_plus-0.4.1.post10-cp314-cp314-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl

Download URL pyopenjtalk_plus-0.4.1.post10-cp314-cp314-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl
Size 32.4 MB
Tags CPython 3.14 Linux glibc 2.24+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
121b96178d4f290112652f57954f86611dbedda337f35ce73f535d4b54d2bb58
BLAKE2b-256 checksum
How to use checksums
bc42858c1aa95bcc68952958e1630d95f709749f426a7a9f513a13cf4f4b8a6c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.16

Release files / pyopenjtalk_plus-0.4.1.post10-cp314-cp314-macosx_10_15_universal2.whl

Download URL pyopenjtalk_plus-0.4.1.post10-cp314-cp314-macosx_10_15_universal2.whl
Size 26.4 MB
Tags CPython 3.14 macOS 10.15+ universal2 (ARM64, x86-64)
SHA-256 checksum
How to use checksums
9b3ca60aa9c1058fdb30eed332b1e998b82235dca6e4423d69ed6a912bae52ef
BLAKE2b-256 checksum
How to use checksums
a4c0c1545a33de124c7b311312d1dd49909c7ac045dd37d16c22cb23019fb87c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.16

Release files / pyopenjtalk_plus-0.4.1.post10-cp313-cp313-win_amd64.whl

Download URL pyopenjtalk_plus-0.4.1.post10-cp313-cp313-win_amd64.whl
Size 25.6 MB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
c5c71610746acebeba3fd4bff595a0a7066128e5a18c53fdfe3f8ea0dea6530f
BLAKE2b-256 checksum
How to use checksums
96cd56bc0ec02dc3c10b22bc4849eac61bc494c712d7b1335c3e96f42dfddf16
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.16

Release files / pyopenjtalk_plus-0.4.1.post10-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl

Download URL pyopenjtalk_plus-0.4.1.post10-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Size 32.5 MB
Tags CPython 3.13 Linux glibc 2.24+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
5dfdbca536a7eacd0dce62de8885a0743869aebaa3db92470538e107b93ef865
BLAKE2b-256 checksum
How to use checksums
9f6457f37fe2fdf11edd9e074948c81f444113a72e6b92a21e77a8616c89b78c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.16

Release files / pyopenjtalk_plus-0.4.1.post10-cp313-cp313-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl

Download URL pyopenjtalk_plus-0.4.1.post10-cp313-cp313-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl
Size 32.4 MB
Tags CPython 3.13 Linux glibc 2.24+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
8bb35980a2ea023b3bc3a795e103baef98df51ca61ab636822ac0ab8d230567d
BLAKE2b-256 checksum
How to use checksums
f64d4e91f4c4e2ddd0d35892cf91bcf72290d5454e00c6a2ac956ea4cdebc7e1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.16

Release files / pyopenjtalk_plus-0.4.1.post10-cp313-cp313-macosx_10_13_universal2.whl

Download URL pyopenjtalk_plus-0.4.1.post10-cp313-cp313-macosx_10_13_universal2.whl
Size 26.3 MB
Tags CPython 3.13 macOS 10.13+ universal2 (ARM64, x86-64)
SHA-256 checksum
How to use checksums
822b3ed9c1ac77b9917b23e40c291e5f5339c65457b9b97f1d8b017cc3324511
BLAKE2b-256 checksum
How to use checksums
55d8d4b9a6cfcab6fd58e038fd6fe77bfbea857a1069ec6f862d08b44a3f9d97
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.16

Release files / pyopenjtalk_plus-0.4.1.post10-cp312-cp312-win_amd64.whl

Download URL pyopenjtalk_plus-0.4.1.post10-cp312-cp312-win_amd64.whl
Size 25.6 MB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
c3c033fae4ef69311885781191bf213662e56f19ec415736e05b26f60a20e5d6
BLAKE2b-256 checksum
How to use checksums
e2963e29ad3a1a90de0822c9abc5f68acc98ccfe2c27b62692a1d2e2a762fabb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.16

Release files / pyopenjtalk_plus-0.4.1.post10-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl

Download URL pyopenjtalk_plus-0.4.1.post10-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Size 32.5 MB
Tags CPython 3.12 Linux glibc 2.24+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
d5ad80a032b9bb8cbc2c8e89f6022a1b1ed27edfb4eeb61ec66ece0d4df417cb
BLAKE2b-256 checksum
How to use checksums
61e3ed0c245ce3498790e93557763c4c25c833ffdf76d1e1dc7b49a67544c57c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.16

Release files / pyopenjtalk_plus-0.4.1.post10-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl

Download URL pyopenjtalk_plus-0.4.1.post10-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl
Size 32.4 MB
Tags CPython 3.12 Linux glibc 2.24+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
02826d42b23e3aae30330f93edc417e004ed8faf7fd76fcc9d66bc3239086ed0
BLAKE2b-256 checksum
How to use checksums
fd868b1b9c7f43d8efc498f6acfe464da40848be08d0e2e4ff27070eceb1f2ae
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.16

Release files / pyopenjtalk_plus-0.4.1.post10-cp312-cp312-macosx_10_13_universal2.whl

Download URL pyopenjtalk_plus-0.4.1.post10-cp312-cp312-macosx_10_13_universal2.whl
Size 26.3 MB
Tags CPython 3.12 macOS 10.13+ universal2 (ARM64, x86-64)
SHA-256 checksum
How to use checksums
86dc600d96a2c558e7e5d4cf9e5f3bbb58d3da082e16442955f84bfff588f930
BLAKE2b-256 checksum
How to use checksums
244dfeb3ec5543ff87677cbcee132580bb5a7613beda87422970ee572f3e3fa5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.16

Release files / pyopenjtalk_plus-0.4.1.post10-cp311-cp311-win_amd64.whl

Download URL pyopenjtalk_plus-0.4.1.post10-cp311-cp311-win_amd64.whl
Size 25.6 MB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
f824404c6bf8cf703265b9f57ba9cf1b37ffa0260bfc430842fbbe6a738d00f7
BLAKE2b-256 checksum
How to use checksums
a13008d3abffe900a89eeb5066795ecf948ae90ff706366d5923629974190066
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.16

Release files / pyopenjtalk_plus-0.4.1.post10-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl

Download URL pyopenjtalk_plus-0.4.1.post10-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Size 32.6 MB
Tags CPython 3.11 Linux glibc 2.24+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
239c2fe9d6fb97a3c14ccfaabee91f44c7953d36b34249c7e05884eecbebc93d
BLAKE2b-256 checksum
How to use checksums
7013efdbebfc28c1b6c0844088779d95216da7684ca9bcda57833a968d1d8e9c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.16

Release files / pyopenjtalk_plus-0.4.1.post10-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl

Download URL pyopenjtalk_plus-0.4.1.post10-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl
Size 32.5 MB
Tags CPython 3.11 Linux glibc 2.24+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
c475ba08166a7013644804cc18c64f25916116368aadf5488651f115594df056
BLAKE2b-256 checksum
How to use checksums
9c8c0527dfb82dc43e4561ef47e6b92f05903fa4f3e65fd2dac58681c681863d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.16

Release files / pyopenjtalk_plus-0.4.1.post10-cp311-cp311-macosx_10_9_universal2.whl

Download URL pyopenjtalk_plus-0.4.1.post10-cp311-cp311-macosx_10_9_universal2.whl
Size 26.3 MB
Tags CPython 3.11 macOS 10.9+ universal2 (ARM64, x86-64)
SHA-256 checksum
How to use checksums
fdc82c574642801748ac647a365af0b64862feba7635fcc78db8ef76418b7f1b
BLAKE2b-256 checksum
How to use checksums
a8a79ca7909162baf4f8c1ce19a25a1936768cc4ccaf22a9dfb80d8fa6aa0869
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.16

Release files / pyopenjtalk_plus-0.4.1.post10-cp310-cp310-win_amd64.whl

Download URL pyopenjtalk_plus-0.4.1.post10-cp310-cp310-win_amd64.whl
Size 25.6 MB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
42f7f3b3310fbcceaa97e3ed22446c8937655ab11198b8f61ee41476de51bf50
BLAKE2b-256 checksum
How to use checksums
8400815e1808b9759ef8da442720f6b4d9e021fa5f21cb5dc4681bbfbc1a2a9d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.16

Release files / pyopenjtalk_plus-0.4.1.post10-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl

Download URL pyopenjtalk_plus-0.4.1.post10-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Size 32.5 MB
Tags CPython 3.10 Linux glibc 2.24+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
04fee29efb2942ba1da992480596a09993bb024ec0b70e1fe563c620a77f9b26
BLAKE2b-256 checksum
How to use checksums
6fd3cc11e9aab50914f0313e9b868ab4948100695dce1de734c5fdfc6374f5dd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.16

Release files / pyopenjtalk_plus-0.4.1.post10-cp310-cp310-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl

Download URL pyopenjtalk_plus-0.4.1.post10-cp310-cp310-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl
Size 32.3 MB
Tags CPython 3.10 Linux glibc 2.24+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
bf375cc5d903387689b912c2cb0f16b232be348eb6d092fa09a6aa77435698f4
BLAKE2b-256 checksum
How to use checksums
6d7de404cd8ea832f09bead3bc89191a650a2ffb8cb8c4e79f20c8fcc2afa807
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.16

Release files / pyopenjtalk_plus-0.4.1.post10-cp310-cp310-macosx_10_9_universal2.whl

Download URL pyopenjtalk_plus-0.4.1.post10-cp310-cp310-macosx_10_9_universal2.whl
Size 26.4 MB
Tags CPython 3.10 macOS 10.9+ universal2 (ARM64, x86-64)
SHA-256 checksum
How to use checksums
e1729ff13aacc18b1a30ca08331a8814df56c9e357d8814c8f47ba612328608d
BLAKE2b-256 checksum
How to use checksums
3edf29ca823e83f689483ba35afc91686032213f52368fe489751c70007e67b4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.16

Security for pyopenjtalk-plus 0.4.1.post10

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page