Skip to content

Releases: heynegix/koeiro

v0.13.5

Choose a tag to compare

@github-actions github-actions released this 16 Oct 14:26

Koeiro v0.13.5: 拍手やキーボードの音を「そのまま」届ける環境音パススルーと、実測した GPU(CUDA)経路

🌟 ハイライト

  • 環境音パススルーを追加しました。 拍手・キーボード・物音などの一過性の環境音を、
    モデルを通さずそのままリスナーへ届けます。声はこれまでどおり変換され、声が戻ると
    すぐに通常の変換へ戻ります。逐次変換・一括変換の両方で動き、既定は ON です。
    設定の「環境音をそのまま通す」でいつでもオフにできます。
  • 咳・鼻すすり・くしゃみは変換します。 これらは環境音とみなさず、生の声が漏れない
    側(fail-closed)で扱います。
  • GPU(CUDA)経路を実測つきで有効にしました。 Kaggle の Tesla T4 で CPU 経路と
    -67〜-76 dB まで一致(float32 の丸め差)し、2.0〜2.7 倍速。cpu/cuda のペアを再生しての
    聴き比べも実施済みです。「自動」は実測済みの MeanVC2 だけ GPU を使い、CPU に固定したい
    ときは「CPU」を選んでください。
  • 「一括-高品質」を追加しました。 上流 CLI と同じ全体補間・ノイズで条件付けし、
    ソルバーステップを増やした品質ルートです(通常の一括変換より変換に時間がかかります。
    採用は聴き比べで判断します)。
  • Issue #6 の2件を修正しました。 モニター出力が出力専用デバイスで開けない問題と、
    GPU 指定時の AI 起動失敗です(詳細は下)。

🛠 追加・修正

環境音パススルー(新機能)

  • 逐次変換: callback 安全な位置合わせリングと、Silero VAD・YAMNet・transient 検知の
    ゲートで、変換出力の対応区間だけを生の入力に差し替えます。
  • 一括変換: 発話ごとの変換結果に対し、イベント区間だけ生サンプルを差し込みます
    (継ぎ目は 1.3 ms のクロスフェードのみ)。発話の間の環境音は、変換を待たずイベント
    部分だけが先に届きます。
  • 「最速」では短い物音が「ノイズ」として捨てられることがありましたが、その区間も
    ゲートに回して救済します。
  • ゲートの計算は変換と並行に走り、無音区間ではモデルを動かしません(実測: 30 秒の
    ほぼ無音+1 イベントで 2.2 秒 → 0.6 秒)。会話のテンポと RTF への影響を抑えています。
  • 診断画面に、変換内で生のまま通した秒数と、発話の間から届いた秒数を表示します。

GPU(CUDA)(Issue #6 の②)

  • トレース(fastu2pp)に焼き込まれた CPU の device 定数を、実行デバイスへ書き換えます
    (報告いただいた found at least two devices の原因)。
  • CUDA graph capture で ASR/VC の段を再生します。
  • 「自動」は実測済みバックエンド(MeanVC2)のみ GPU を選びます。実行デバイス上で動かせ
    なかった場合は「CPU」への切り替えを案内します(「自動」では再び CUDA を選ぶため
    案内しません)。

モニター出力(Issue #6 の①)

  • モニターのテスト音・再生が入出力共用のストリームで開いていたため、出力専用デバイス
    (USB DAC 等)で Invalid number of channels になっていました(macOS でも同症状の
    報告あり)。出力専用(OutputStream)で開くよう修正しました。

一括-高品質(実験)

  • quality ルートと「一括-高品質」プリセットを追加しました。offline 変換では抑揚補正を
    全 hop に適用します(逐次はリアルタイム性のため、間に合わない補正をバイパスする既存の
    仕様のままです)。

その他の修正

  • 声の登録の watchdog を「無応答 15 分 / 絶対 4 時間」に緩和しました(長い素材の登録が
    途中で止まらないように)。
  • コントリビューション #5(TKY-27 さん)の2件を取り込みました: AI 設定のロード後に
    実行デバイスや音声調整(tune_*)を変えても古い起動引数のままだった問題(ロード済み
    ワーカーを再起動して反映します)と、POSIX で TTS 専用 venv から外れてしまう問題です。
  • リリース用: 非音声ゲートのモデル3点(Silero VAD・YAMNet・class map)を配布物に同梱
    します(取得できなくても変換は止まらず、パススルーが無効になるだけです)。

⚠️ 既知の制限

  • この版でも実機の通話・配信での確認はしていません。 マイク・出力を使った変換、
    Discord 経由の確認、環境音パススルーの実聴評価は未実施です(検証は保存 WAV を通した
    オフラインの数値までです)。
  • GPU の動作確認は Kaggle の Tesla T4 です。お手元の GPU 実機での確認は環境によっては
    失敗することがあります(その場合は「CPU」へ切り替えてください)。
  • Linux の RTF はこの版でも申告できる値を持っていません(コンテナ内の計測のみ)。
  • 声の登録は凍結ビルドでは出来ません(従来どおり)。
  • setup.exe と Linux の凍結ビルドに Authenticode / GPG 署名は入れていません。
    sha256 は破損・途中切れの検知です。
  • 実行ファイル版の自動更新は GitHub Releases を見にいくので、ネットワークが必要です。

✅ この版で実測したこと

  • テスト一式: 1329 passed / 14 skipped(skip は環境依存のみ)。回帰テストには、
    オフラインゲートの生声 veto(先頭フレームの見落とし)、起動パラメータ変更での
    ワーカー再起動、環境音ルーティングのブリッジ動作などが含まれます。
  • 環境音パススルーのオフライン検証(実モデル MeanVC2 + LavaSR、音声デバイス無し、
    tools/verify_env_passthrough_offline.py):
    • 実録音(拍手・ノック・タイピング): ルーティングした 4 区間中 3 区間が
      誤差 0.0 のビット一致で生出力(残り 1 区間はキュー競合で fail-closed に破棄)。
    • 音声を重ねた合成入力: ルーティング 2/2 がビット一致、音声の生漏れなし。
  • CUDA: Kaggle T4 で CPU と -67〜-76 dB 一致・2.0〜2.7 倍速
    (notes/kaggle_gpu_verification.md)。
  • 配布物(Windows の setup.exe・AIパック、Linux の凍結バンドル・AIパック、ソースツリー)は
    release ワークフローが作り、添付前の検査(tools/verify_release_assets.py)を通してから
    添付します。

📦 アップデート

  • 実行ファイル版(Windows): アプリ内蔵の更新、または新しい setup.exe の再適用。
    設定・AI 環境・録音は引き継がれます。
  • 実行ファイル版(Linux): アプリ内蔵の更新、または新しいバンドルの展開。
    vc_models と recordings は残ります。
  • ソースツリー版 / BOOTH 版: 新しい ZIP を展開し直してください。AIパックの設置は
    Windows は ai-pack.exe(-1.bin と同じフォルダ)、Linux は install-ai-pack.sh です。

v0.13.4

Choose a tag to compare

@github-actions github-actions released this 14 Oct 12:12

Koeiro v0.13.4: 実機ログに出ていた障害を直し、配布物の作り方をスクリプトに寄せた

🌟 ハイライト

  • 実機ログにだけ出ていた障害を直しました。 音声 callback の中で例外になっていた経路
    (ノイズ除去の短いブロック、無限大が来たときの自動均一化、リングの足りない読み)と、
    Qt が slot の例外を飲み込むせいで緑のスイートに何版も隠れていた経路(モード切替、
    ゲインの範囲)です。症状はすべて実機ログの Traceback から起こしています。
  • アプリが起動しなくなる系統を塞ぎました。 声フォルダの profile.json や配布マーカーが
    深く入れ子だと、json.loads の再帰制限で例外が import を抜け、パッケージ版には自救手段が
    ありませんでした。壊れた1件を skip する形に変えています。
  • BOOTH 用 ZIP を再現できるようにしました。 手順は PUBLISHING.md にありましたが
    スクリプトが無く、v0.13.3 の2枚は手作業の産物でした。tools/build_booth_zip.py が
    中身の検査(同梱 checksums との突合・容量上限・フラット・無圧縮)ごと作ります。

🛠 追加・修正

音声 callback で例外になっていた経路

  • ノイズ除去: blocksize より短いブロックが来ると ValueError: could not broadcast が
    callback 内で出ていました。prepare() の bins 数で確保した作業領域を、そのまま短い
    ブロックの spectrum に当てていたためです。1024 のときの数値は変わりません。
  • 自動均一化: 上流が非有限(無限大)のブロックを出すと log10(0) で raise していました。
    非有限のときは追従値を据え置きます。
  • リング(同時通訳の駆動): 足りない読みで周回したときに、書き込んでいない範囲まで
    広げて代入していました。実際に持っている分だけを書きます。
  • AI ワーカーの停止: bridge.stop() が失敗すると、その例外が音声停止処理全体を中断して
    いました。例外はログに残して続行し、ワーカー側の状態(worker_state = 'Error')は UI に
    出ます。

緑のスイートに隠れていた経路

  • モード切替: 削除済みの属性を slot が読んでいて、毎回 AttributeError が出ていました。
    Qt がこれを sys.excepthook へ回して飲み込むため、テストは緑のままでした。
  • ゲイン: スライダーが -30 dB まで動くのに、エンジンと設定は -20..+20 dB しか受け付けず、
    画面の数字と実際の利得が食い違っていました。範囲を -20.0..+12.0 dB に揃えました。
  • 同じ形の不一致が他に無いかをウィジェット全数で往復検査し、0 件であることを確認しています。

起動しなくなる系統

  • src/vc/voice_library.py の discover() は src.vc.models の import 中に走るため、
    1 つの声の profile.json が読めないとアプリ全体が起動しませんでした。壊れた1件を skip。
  • 同じ経路の配布マーカー(bundle.json)も、中身が dict でない場合を {}(制限なし)に
    正規化します。settings.manager などには既にあった RecursionError の扱いに揃えました。
  • 声パネルは、読めなかったときに前の声の表示を残さず、その旨を出します。

表示とログの正直さ

  • 発話ルート(一括変換)は仕様上、AI エラー後に無音のままです。ログだけが「Original に
    戻った」と名乗っていたのを直しました。音の挙動は変えていません。
  • 声の詳細、LAN ワーカーの無通信終了、更新チェックの上流ゴミなど、症状が消えるだけで
    気づけない経路にログ・テストを足しました。

配布物・CI

  • tools/build_booth_zip.py と tests/test_booth_zip.py を追加。検査内容は、同梱
    checksums と各メンバーの sha256、1ファイル 1.2 GB / 1商品 10 GB の上限、ルートの
    フラットさ、無圧縮(stored)、メンバー重複です。
  • pytest.ini で ResourceWarning を失敗にし、オフライン一式を windows-latest で回す
    tests.yml を追加しました(-X dev は __del__ 由来の警告を実際に発生させます)。
    release ワークフローの self テストも同じゲートに乗せています。
  • tools/build_brand.py / build_desktop.py / write_build_root.py は --help が
    仕事を実行して追跡済みアセットを上書きしていました。追加のアセットビルダも含めて、
    引数を先に解釈する形にしました。
  • linux-assets の apt 一覧が 2 箇所に複製されていたのを、RUNTIME_APT の単一出所へ。
  • リリースの配布物づくりを release ワークフロー1本にまとめました(ソースツリー、Windows の
    setup.exe と AIパック、Linux の凍結バンドルと AIパックを、tools/verify_release_assets.py
    の検査ごと作って添付します)。BOOTH ZIP はこれまでどおり手元で作ります。
  • README を書き直し、Linux のソース利用手順に Qt の実行ライブラリ
    (libgl1 libegl1 libglib2.0-0 libxkbcommon0 libdbus-1-3 fontconfig)を明記しました。

開発者向け

  • AI Voice の CPU スレッド初期値を 2 にそろえました。推奨設定は同梱ボイスで既に 2 を
    選ぶのに、初期値だけ 1 で始まっていました(保存済みの選択はそのまま尊重します)。
  • lab/actions.py の load_wav は、docstring が約束する ValueError を実際に返すように
    しました(float 符号 WAV、切り詰めファイル、音声ゼロ長を明示的に拒否)。
  • src/vc/utterance.py の重複定義と phrase_prosody.py の未使用残骸を削除(音は不変)。

⚠️ 既知の制限

  • この版でも実機の通話確認はしていません。 マイクと出力を使った変換、Discord 経由の
    確認、実聴による音質・遅延の評価は未実施です。確認したのは保存 WAV を通した変換までです。
  • Windows の AI ボイスパックを実際にインストールしての起動確認は、この版では回して
    いません
    (%LOCALAPPDATA% の実環境を書き換えるため)。凍結ワーカーが venv ワーカーと
    同じ計算に乗っていることまでは検証しています。
  • Linux の RTF はこの版でも申告できる値を持っていません(コンテナ内の1回の計測のみ)。
  • 声の登録は凍結ビルドでは出来ません(AI 環境が必要で、登録専用の重りはパックに
    入れていません)。Linux・Windows ともに同じ作りです。
  • setup.exe と Linux の凍結ビルドに Authenticode / GPG 署名は入れていません。sha256 は
    破損・途中切れの検知で、配布元が乗っ取られた場合の防御ではありません。
  • 実行ファイル版の自動更新は GitHub Releases を見にいくので、ネットワークが必要です。
    この版でも適用そのものは回していません(0.13.1 → 0.13.2 の通し更新は v0.13.2 で実測済み)。

✅ この版で実測したこと

  • テスト一式: 1239 passed / 11 skipped(.venv/Scripts/python.exe -X dev -m pytest -q、
    5分27秒、ResourceWarning 0 件)。回帰テストを追加しており、うち範囲の2件(ゲインの
    上下限と、設定の検証範囲)は修正前の値に戻すと実際に落ちることを確かめています。
  • ソースツリー版の配布資産(この版で作ったもの):
    • koeiro-v0.13.4-windows.zip 6,762,017 バイト(504 メンバー、最大は既定声の
      reference.wav 1,807,404 バイト)。sha256 789d7e5099d50f7b…
    • koeiro-v0.13.4-linux.tar.gz 6,562,365 バイト(504 メンバー)。sha256 1c83d081dee6d1a5…
    • どちらも release.json({"app": "Koeiro", "version": "0.13.4", ...})を同梱し、
      中に src/version.py の APP_VERSION = "0.13.4" が入っています
    • 展開したツリーで tools/setup_release.py --dry-run が exit 0
  • Windows の凍結版: Koeiro.exe --smoke-test が exit 0、--help が Koeiro v0.13.4 と報告。
    setup.exe は 48,588,892 バイト(sha256 cf280a555ef224c6…)、AIパックは
    2.8 MB + 664.4 MB(ステージング 6,650 ファイル 1,385.6 MB)。
  • 凍結ワーカー(Windows): venv ワーカーと同一の保存 WAV(voice_demo_original.wav 3.439 秒、
    一括変換 + LavaSR)で max_abs_diff 0.0 / identical: true。
  • Linux の買い手と同じ手順を Debian bookworm のコンテナで通しました:
    sha256sum -c が3点とも OK → install-ai-pack.sh(ハッシュ検証込み)→ 設置 →
    QT_QPA_PLATFORM=offscreen ./Koeiro --smoke-test が exit 0、--help が
    Koeiro v0.13.4 と報告 → 凍結ワーカーが保存 WAV 3.439 秒を変換し
    165,072 サンプル(48 kHz)、enhancer は lavasr、フォールバックなし
    (レポートは dist/linux-install-verify-0134/report.json、3.44 秒の音声に対して
    wall 25.18 秒)。
  • Linux の配布物サイズ(Docker 経路で作成、表示は tools と同じ MiB 基準): app tar
    96.6 MB、AIパック 430.4 MB + 360.9 MB(ステージング 6,158 ファイル 1,673.3 MB)。
    3点の sha256 は koeiro-v0.13.4-linux-checksums.txt にあります。
  • BOOTH 用の2枚: Koeiro_v0.13.4_Windows.zip 748,246,799 バイト、
    Koeiro_v0.13.4_Linux.zip 931,060,549 バイト(どちらも無圧縮・フラット・入手案内が先頭)。
    tools/build_booth_zip.py --check が exit 0。
  • 聴いた判定はしていません。 音色・遅延の官能評価は実機で別途行う必要があります。

📦 アップデート

  • 実行ファイル版(Windows): アプリ内蔵の更新、または新しい setup.exe の再適用。
    設定・AI 環境・録音は引き継がれます。
  • 実行ファイル版(Linux): 新しいアプリバンドルを展開し直すか、アプリ内蔵の更新
    (新版バンドルを落として sha256 検証 → インストール先ごと差し替え)。vc_models と
    recordings は差し替え後も残ります。この版で通しの適用は回していないので、
    うまくいかない場合は展開し直してください。
  • ソースツリー版 / BOOTH 版: 新しい ZIP を展開し直してください。AIパックの設置は
    Windows は ai-pack.exe(-1.bin と同じフォルダ)、Linux は install-ai-pack.sh です。

v0.13.3

Choose a tag to compare

@github-actions github-actions released this 13 Oct 08:28

🌟 ハイライト

  • Linux 向けスタンドアロン(実行ファイル)版の提供開始
    アプリ本体(Koeiro + _internal)と AI ボイスパック(KoeiroWorker + モデルデータ、BOOTHの1ファイル容量上限に合わせて2分割)をビルド可能にしました。sha256 検証に対応し、内蔵の自動更新機能でも新版アーカイブの差し替えによってアップデート可能です。
  • 一括変換(最速)の処理速度を大幅改善
    同一計測環境における RTF(リアルタイムファクター)を 1.58 → 0.94 へ短縮。1秒の音声を1秒未満で処理できるようになり、逐次変換と同等の実時間処理を達成しました。
  • クリーン環境における初回セットアップの修正
    モデル重みファイルのダウンロードURL切れを解消し、キャッシュが存在しない新規マシンでも正常に環境構築が完了するようになりました。

🛠 追加・修正

一括変換-最速(AI Voice)

  • 「一括変換(最速)」モードにおいて、バッチ推論(6ブロック・vocoder 36フレーム)および 1ステップソルバーを採用しました。従来の最速モードは逐次変換向けに「初動遅延を削る」設計(1ブロック推論+逐次デコード)だったため、発話全体が揃ってから変換を行う一括モードでは不要なオーバーヘッドが発生していました。
  • 推論スレッド数の下限を 2 に引き上げました(Intel N150 での検証において、1スレッドは約20%遅く、4スレッドは2スレッドと大差がなかったため最適化)。
  • 1ステップソルバーは steps_allowed が明示された呼び出しのみに限定し、逐次変換側には影響を与えません。
  • 処理速度の向上と引き換えに声色の再現精度が若干低下するため、UI の説明文を「声色の精度は落ちます」へ更新しました。

Linux 版(配布物)

  • Linux 向けビルドスクリプト tools/build_linux_bundles.py を追加。Windows 環境(Docker Desktop 使用)と Linux 環境(CI や WSL 等のローカル実行)の両方で同一のアーカイブを生成可能です。
  • 配布アセットの命名を統一(koeiro-<tag>-linux-app.tar.gz、koeiro-<tag>-linux-ai-pack-1.tar.gz / -2.tar.gz、koeiro-<tag>-linux-checksums.txt)。
  • AIパックに展開スクリプト install-ai-pack.sh を同梱(Koeiro が配置されたフォルダへ2つのアーカイブを正しく展開します)。
  • Linux バイナリ版の自動更新に対応。GitHub Releases から新版アーカイブを取得・sha256 検証後、ディレクトリを丸ごと差し替えて再起動します(ユーザー固有の vc_models や recordings は保持されます)。
  • Debian / Ubuntu 系の必要共有ライブラリを整理(libportaudio2 および Qt 関連の実行ライブラリ群)。

GitHub Actions(linux-assets)

  • workflow_dispatch で実行できる Linux バイナリ作成ワークフローを整備。ビルドは Ubuntu 22.04、動作検証は下位互換性(glibc要件)を確保するため Debian 12 (bookworm) コンテナ上で実施しています。

セットアップおよび配布物関連の不具合修正

  • MeanVC2 の重みファイル URL(404エラー)を修正(Hugging Face リポジトリの直下配置構造とローカルの配置パスの差異を解消)。
  • ECAPA finetune モデルの Google Drive ダウンロード処理を修正(容量超過時の確認画面で停止していた問題を回避)。
  • torch==2.5.1+cpu のインストール時に PyTorch の extra index を正しく渡すよう修正(キャッシュのないクリーン環境での失敗を防止)。
  • Koeiro.spec から不要な参照(koeiro-root.txt)を削除し、クリーンなチェックアウト状態でのビルド失敗を修正。
  • Windows 上で tar 作成時に実行権限が喪失する問題に対処(パーミッション 0755 を復元)。
  • install-ai-pack.sh の sha256 検証対象を AI パックのみに限定し、未同梱ファイルによるスクリプト停止を修正。
  • CI ジョブ間でチェックサムファイルが上書きされる競合を解消。

⚠️ 既知の制限

  • Linux 環境における詳細な RTF 値は未確定です(Docker コンテナ内での暫定値のみ確認しており、実機ベンチマークとは条件が異なります)。
  • Linux 上での実オーディオデバイス(マイク / スピーカー)を介した通話動作は未検証です(オフスクリーンのスモークテストおよび RPC 通信レベルでの音声変換を確認済み)。
  • 配布バイナリ単体では新規ボイスの登録は行えません(モデル登録には Python 開発環境が必要です。ボイス変換自体は動作します)。
  • 配布バイナリには Authenticode / GPG 署名を付与していません(sha256 検証は転送時の破損検知を目的としています)。
  • 自動更新機能の利用にはインターネット接続が必要です。

✅ 本バージョンでの実測検証内容

  • 配布アセットの容量確認: Linux 版 app tar は 101.7 MB、AIパックは 406.0 MB + 360.8 MB(展開時 約1.9 GB)。Windows 版は setup 46.3 MB、AIパック 2.8 MB + 664.4 MB(展開時 約1.6 GB)。すべて BOOTH の1ファイル上限(1.2 GB)をクリア。
  • チェックサム検証: 配布アセットの sha256 が GitHub Releases の計算値と完全一致することを確認。
  • Linux 起動確認: Debian 12 (bookworm) コンテナ上でのスクリプト展開、バイナリ起動、およびアプリ本体による自バージョン(v0.13.3)の正常認識を確認。
  • 変換処理の再現性: Windows 環境において、Python 仮想環境と配布バイナリの変換出力がビット完全一致(max_abs_diff: 0.0)することを確認。
  • RTF の短縮実測: 「一括変換-最速」の RTF が同一計測条件で 1.58(旧仕様)→ 0.94(新仕様)、バイナリ版では 0.91 を記録。
  • Windows 自動更新動作: v0.13.2 から更新確認を行い、新版インストーラーのダウンロード、sha256 検証、および更新コマンド生成までの正常動作を確認。
  • テスト通過状況: 1,213 passed / 11 skipped / 1 failed(失敗1件は通し実行時のタイミング依存による既知の一時的エラー)。

Koeiro v0.13.2: Windowsのsetup.exe 配布

Choose a tag to compare

@github-actions github-actions released this 12 Oct 23:15

Koeiro v0.13.2: Windowsのsetup.exe 配布

🌟 ハイライト

  • 実行ファイル版(Koeiro.exe)の自動更新が、初めて動く作りになりました
    従来は配布アセットがソースツリーの zip だけで、凍結バンドルをその zip で差し替えに
    いく設計でした。実行中の Koeiro.exe と _internal\*.dll は Windows にロックされて
    フォルダごと退避できない上、ソースツリーを当てると exe 自体が消えるため、
    この経路は一度も成功し得ませんでした。今はアプリ本体だけを同梱した
    koeiro-<tag>-windows-setup.exe をリリースへ添付し、アプリがそれを検証して無対話適用します。
  • BOOTH 等のダウンロード販売に出せる形になりました(1ファイル 46.3 MB・後述の実測)。

🛠 追加・修正

実行ファイル版の更新(Windows)

  • 更新の確認で、凍結ビルドは -windows-setup.exe と -windows-checksums.txt を選びます。
    ソースツリーの zip は選ぶ対象から除外しました(間違えて当てるとインストール先を壊すため)。
  • ダウンロードした setup.exe は sha256 を検証してから実行します。検証情報が無い版・
    一致しない版は適用しません(「自動更新できません」と出して止まります)。
  • 検証を通った setup は /VERYSILENT /NORESTART /SUPPRESSMSGBOXES で起動し、アプリ側は
    終了します。アプリを閉じて新版を起動し直すのはインストーラの仕事にしました。
  • インストーラ側は CloseApplications=yes で起動中のアプリを検出して閉じ、最後に
    {app}\Koeiro.exe を起動します。Inno の RestartApplications は実機で復帰しなかったため、
    起動は [Run] 側で保証しています。
  • 更新の試行と失敗は %LOCALAPPDATA%\Koeiro\logs\update.log(アプリ本体の失敗は
    同じフォルダの app.log)に残ります。今までヘルパーの出力は破棄されていて、
    失敗すると「アプリが閉じるだけ」でした。
  • インストール済み版が更新先を見つけられないときの原因が伝わるように、リリースに
    インストーラが無い版では「この版には実行ファイル用のインストーラがありません」と出します。

インストーラ(配布物)

  • installer\Koeiro.iss(Inno Setup 6)と tools\build_windows_setup.py を追加。
    既定のインストール先は %LOCALAPPDATA%\Programs\Koeiro(ユーザー単位・管理者権限を要求しない)。
    Program Files を避けたのは、サイレント更新が同意を要求されないようにするためです。
  • 配布ステージから koeiro-root.txt(ビルド元の絶対パス)を除きます。除いた実体は
    インストール先フォルダを AI環境の置き場所として探すので、AI環境は exe の隣に置く形になります。
  • LICENSE.txt・README.md・THIRD_PARTY_NOTICES.md をインストール先に入れます。
  • デスクトップのショートカットは既定OFF(サイレント更新で、消したアイコンが復活しないように)。
  • ビルドツールは、src より古い dist の exe で setup を作ろうとすると止まります
    (--rebuild か --allow-stale で明示)。settings.json・logs・recordings が
    ステージに混入していても止めます。

開発者向け

  • ソースツリー配布(release-dir)の更新は従来の差し替え経路のままです。凍結ビルドから
    その経路が呼ばれると明示的に断る門番を入れました。

⚠️ 既知の制限

  • setup.exe には AI がありません。 AI Voice は引き続き tools/setup_release.py
    (Python 3.12・git・uv が必要)か、これから作る AIパックでの導入になります。
    Original と Female DSP は setup 単体で動きます。
  • 自動更新が使えるのは setup.exe を添付した版からです。Actions はソースツリーしか
    作らないので、タグ push 後に手元で setup を作って gh release upload する順が必要です。
  • 配布物に Authenticode 署名は入れていません。sha256 検証は破損・途中切れの検知で、
    リポジトリが乗っ取られた場合の防御ではありません。

✅ この版で実測したこと

  • koeiro-v0.13.1-windows-setup.exe 46.3 MB(BOOTH の1ファイル上限 1.2 GB に対して余裕あり)
  • クリーンインストール → インストール先に koeiro-root.txt が無いこと、163 MB、
    Koeiro.exe --smoke-test が exit 0(AI環境は「見つかりません」と丁寧に出て停止しない)
  • 起動中のアプリへ /VERYSILENT で上書き → RestartManager が Koeiro.exe を検出・閉鎖 →
    ファイル差し替え成功 → [Run] で新プロセスが自動復帰(PID と起動時刻 07:53:12 を確認)
  • sha256sum と koeiro-<tag>-windows-checksums.txt の値が一致
  • テスト: 1189 passed / 11 skipped(更新機構と setup ビルドに18本追加)
  • 0.13.1 → 0.13.2 の通し更新を実ネットワークで確認(2026-10-13 08:23 JST)
    • 更新確認と同じ check_now が v0.13.2 を「インストーラあり」で返し、
      koeiro-v0.13.2-windows-setup.exe 48,597,793 バイトを落として sha256 検証を通った
    • /VERYSILENT 適用後、%LOCALAPPDATA%\Programs\Koeiro\Koeiro.exe がこの場で作り直した
      0.13.2 と一致(sha256 先頭16桁 b7eef92c005b7798)。インストール先に koeiro-root.txt は無い
    • インストーラが更新後のアプリを起動し、PID が入れ替わった(Koeiro.exe 18032)
    • %LOCALAPPDATA%\Koeiro\logs\update.log に verified / launching installer が残った
    • 駆動は venv の Python で sys.frozen を立てて行いました。GUI のボタン押下そのものは
      オフスクリーンのテストで分岐のみ検証しています(実クリックの目視確認はしていません)

v0.13.1

Choose a tag to compare

@github-actions github-actions released this 12 Oct 13:16

Koeiro v0.13.1: 更新の案内ダイアログの修正

🌟 ハイライト

  • 更新の案内で「更新して再起動」が画面外に出る問題を直しました
    リリースノートが長いとダイアログが本文ごと縦に伸びて、いちばん押したいボタンが画面の下に押し出されていました。ノートは画面高さに応じたスクロール欄に表示し、ボタン3つは常に画面内へ固定します。
  • 変換の音・遅延・既定設定は v0.13.0 と同じです(この版に音声処理の変更はありません)。

🛠 修正

更新の案内ダイアログ

  • ノート欄の上限は画面高さの0.4倍(420 px まで、160 px から)。本文が2,000文字でもダイアログ自体は画面に収まり、3つのボタン(更新して再起動 / このバージョンは無視 / 後で)はスクロール欄の外、ダイアログ本体のレイアウトにあります。
  • GitHubリリースの本文はマークダウンで来るため、記号(#・**・`・[label](url))を落とした平文で表示します。識別子(ai_formant_on のような設定キーや models/meanvc2_ref20/runtime.json のようなパス)の _ はそのまま残します。
  • リリースページのURLを1行添えました。選択してコピーできます。
  • Esc は「後で」と同じ扱いになります(閉じただけで「無視」に変わりません)。
  • 更新確認の結果にリリースページの html_url を含めました。

開発者向け

  • PVのアンビエント床(bed.wav)をやめました。声のA/B比較に被るため、promo/scripts/make-sfx.mjs の生成と PV.tsx の再生の両方から外しています。

⚠️ 既知の制限

  • 更新ダイアログの描画確認はオフスクリーン(仮想の画面高さ800 px)までです。実ディスプレイでの見た目は未確認です。
  • v0.13.0 の新機能(音量の自動均一化・AI出力のフォルマント・Feminine)の効き目は、この版でも聴感確認していません。お使いの耳で確かめてください。

📦 アップデート

  • v0.13.0 からの差分はこの修正だけです。v0.13.0 未適用の方は v0.13.0 のリリースノート も併せてご覧ください。
  • 展開先で環境を作り直す必要はありません(.venv・vc_models/meanvc2/.venv はそのまま使えます)。

🔍 検証・テスト詳細(開発者向け)

自動テスト

  • python -m pytest(GUIはオフスクリーン): 1171 passed, 11 skipped(4分21秒・失敗0)。
    v0.13.0 の最終実測と同じ結果です。この版の差分は src/version.py の版番号と PV の床音声
    (promo/)だけで、アプリ側のコードは v0.13.0 の資産を作り直した時点と変わりません。
    スキップ11件は torch・scipy・soundfile・sherpa_onnx 未導入と MeanVC2 隔離環境専用の
    テストによるもので、従来どおりです。
  • 更新ダイアログの追加テスト tests/test_update_offer.py(11件): 長い本文でボタンが
    ダイアログの矩形の内側に収まること(show() 後の実座標)、ボタンがスクロール欄の
    子になっていないこと、ノート欄の高さが画面に収まること、マークダウンの平文化、
    3ボタンの戻り値、Esc=後で、ノートが無いときの表示。

実測

  • 更新ダイアログ(オフスクリーン描画・画面高800 px): 本文2,000文字でノート欄の上限320 px、ダイアログ高さ354 px、3つのボタンはいずれも y=323〜343 の内側。show() 後の実座標で「ボタンがダイアログの矩形の中」を確認するテストを tests/test_update_offer.py に追加しました(11件)。
  • 凍結実行ファイル: dist/Koeiro/Koeiro.exe を本作成後に再ビルド(5,206,053 bytes)。
    --help が Koeiro v0.13.1 と表示し、--smoke-test --no-splash(オフスクリーン)は
    終了コード0。バンドルのTOCに src.gui.update_offer が入っていることを確認しました。

未実施

  • 実ディスプレイでの更新ダイアログの確認、実機マイク・Discordでの運転、長時間運転

Koeiro v0.13.0: 声の作り込み3機能と、同時通訳・AI変換の遅延整合の修正

Choose a tag to compare

@heynegix heynegix released this 12 Oct 11:52

Koeiro v0.13.0: 声の作り込み3機能と、同時通訳・AI変換の遅延整合の修正

🌟 ハイライト

  • 音量の自動均一化(既定OFF)
    小声を変換モデルが掴める音量まで持ち上げます。無音は上げません。「調整」② 変換の「入力の整え」カードにあり、停止中でも変換中でも切り替えられます。
  • AI出力のフォルマント(既定OFF)
    AIの声の高さ(F0)は動かさず、共振だけを高域へ寄せて明るくします。AI Voice にだけ掛かり、Original・Female DSP・同時通訳は素通りします。
  • 抑揚プリセットに「Feminine」を追加
    幅広めの抑揚と語尾の上げで、女性寄りの読み方に寄せます。Auto Intonation をONにして選んだときだけ効き、既定の Anime Light はそのままです。
  • 同時通訳が長い発話でも止まらなくなりました
    話の区切りを待たず、3秒以上変わっていない部分までを読み上げて追いつきます。すでに読んだ文節は繰り返しません。
  • AI変換の50 msのズレを実測して修正
    一括変換の出力が入力より50 ms遅れていました。実測値をコードの前提に反映しています。
  • 実行ファイル(Koeiro.exe)で声の登録が実際に動くようになりました
  • RAM空き容量を変換の打ち切り条件にしないようにしました
  • 更新の案内ダイアログで、ボタンが画面外に出なくなりました

※ 既存の設定は引き継がれます。追加した3機能はすべて既定OFFなので、settings.json を作り直さない限り音は v0.12.0 と同じです。


➕ 追加した機能

音量の自動均一化(src/processors/leveler.py)

  • 目標は RMS 0.1(-20 dBFS 相当)のゆっくりした追従で、上げも下げも ±12 dB まで。立ち上がり 0.5 秒、戻り 2 秒で、ブロック長ではなく時間定数で動きます。ゲインの床(-50 dB 相当)を下回るブロックではゲインを動かさないので、無音を持ち上げません。
  • 掛かるのは入力側(デノーズ・ゲート・ゲインの手前、囁きモードの後ろ)です。ゲートの閾値と変換モデルが「一定の音量」で動く前提に揃えるためで、変換された声そのものの音量は変えません。
  • OFFのときは1ビットも動かさない素通しです。

AI出力のフォルマント

  • 「② 変換」の末尾にカードを追加しました。持ち上げ量は +0.0〜+6.0 semitones、既定 +2.0です。
  • 実装は Female DSP と同じネイティブ段を mode='female_dsp'・pitch=0 で使うもので、ピッチ段は通しません。テストで「F0は動かず、スペクトル重心は上がり、利得は±1 dB以内に収まる」ことを押さえています(tests/test_ai_formant.py)。
  • 切り替えはリアルタイムです。ネイティブ段は係数を作り替えるだけで、バッファ確保の再実行が要りません。
  • 代償として遅延が増えます。low_latency 品質の段は 48 kHz で 2048 samples(=42.7 ms)の後段遅延を持ちます。ON の間だけAI Voice の遅延に足されます。

抑揚プリセット「Feminine」

  • 幅(range_expansion .60)・rise .40・onset_lift .45・語尾 .40 と、既存プリセットと同じノブだけで作っています。抑揚の仕組み自体は足していません。
  • Auto Intonation がOFFのときはどのプリセットも効きません。本体の変換ルート(Original / Female DSP / AI Voice)の音は変えません。

🛠 改善・修正

同時通訳(実験②)

  • 区切りを待たない読み上げ: 部分認識のテキストが3秒変わらないままなら、言い切られていなくてもその時点までを読み上げます。モノローグで止まる問題の対策です。
  • 重複しない: 先に部分認識で読んだ文節は覚えておき、確定テキストが来れば未被読の後半だけを追加で読みます。
  • マイクが無音ならそう言います: 入力が来ていないことを状態に出します(デバイス選択と音量のどちらかだと分かるように)。
  • 48 kHz以外では動かないと明示: サンプルレートを48 kHz以外にしているときは、待たせず「48 kHz専用」とステージに書きます(表示とアーム判定の両方で押さえました)。
  • ステージ大表示が経路ごとに正しい状態を言う: 同時通訳ルートでは声のブリッジを意図的に止めたまます。以前の表示は「AIが読み込まれていない」と言っていましたが、今は翻訳ドライバーの状態(ASRの読み込み中・翻訳合成中・読み上げ結果・エラー)を出します。
  • 音声認識の設定が壊れているときは、何も表示せず黙って止まるのではなく、その旨を書きます。

AI変換の遅延整合(MeanVC2)

  • 一括変換(標準ルート)の出力が入力より 50 ms遅れていました。入出力の対数エネルギー包絡の相互相関で実測すると、legacy frontend は出荷構成(group6 / vocoder36)で 1490 ms、group1 でも 530 ms かかり、前提値(1440 / 480 ms)よりどちらも +50 ms でした。aligned frontend は差ゼロです。
  • 原因は、遅延線の長さ(リセット時に確保するサンプル数)と、frontend が実際に入力より後から出す50 msを、1つの数字にまとめていたことです。buffer_frames_ms(遅延線)と frontend_latency_ms(実測50 ms)を分け、model_buffer_ms を 1440 → 1490 ms に修正しました。修正後の一致度は 0.79 → 0.93。測定と分解は notes/meanvc2_alignment.md に残しています。
  • すべてオフライン計算です(音声デバイスは開いていません)。

声の登録(実行ファイル版)

  • 登録プログラム tools/register_voice.py を、バンドル内ではなく AI環境をセットアップしたインストール先ツリーから探すようにしました。実行ファイルは tools/ を同梱しないため、これまでは「can't open file」で落ちて「登録に失敗しました」しか出ていませんでした。
  • 声ライブラリの根っこもインストール先ツリー優先にしました。凍結ビルドのバンドル内にある声一覧を見ていたため、登録できた声がGUIに現れないことがありました。
  • 登録のログは書き込み可能なデータフォルダ(Windows では %LOCALAPPDATA%\Koeiro\logs\voice-registration.log)に出ます。失敗メッセージに実際のログパスを表示します。
  • 新規登録の基準マニフェストを標準ボイスの runtime.json に変更しました(開発用の参照セット models/meanvc2_ref20 はツリーから無くなっており、そこを参照していた登録は失敗していました)。

更新の案内ダイアログ

  • リリースノートが長くなると「更新して再起動」のボタンが画面下に押し出されて押せなくなっていました(v0.13.0 の本文は約6,000文字)。ノートを画面高さに応じて上限のあるスクロール欄に表示し、ボタン3つはダイアログ本体に固定しました。声の登録ダイアログと同じ作り方です。
  • マークダウンの記号(#・**・[label](url))は落として読める平文にし、リリースページのURLを1行添えます。Esc は「後で」扱いになります。

RAMプレッシャー

  • 「空きRAMが足りないから発話変換を停止する」という打ち切りをやめました。ゲームと一緒に使っている、いちばん動いてほしい場面でアプリを止めていたためです。空き容量は観測してログと状態(ram_pressure)に出すだけにしています。
  • ワーカーが逼迫した場合の挙動は変えていません:クラッシュまたは停止し、Original にフォールバックします。
  • 声の登録前と登録中の RAM検査・RSSによる強制停止も削除しました。登録の15分タイムアウトはそのまま残しています。

開発者向け

  • requirements-dev.txt に obsws-python を追加(PV撮影の tools/obs_record.py が使います)。
  • promo/ にプロモーション動画の Remotion ソースを追加しました。撮り素材・生成アセット・手元の声は git 管理外で、同梱されるのは構成とスクリプトだけです(promo/README.md 参照)。

⚠️ 既知の制限(未検証を含む)

  • 聴感の確認は行っていません。音量の自動均一化・AI出力のフォルマント・Feminine の効き目は、数値とテストで押さえたまでです。実際に動かして聞こえ方を確かめるのはお使いの耳です。
  • 同時通訳の翻訳モデルは未実装のままです(認識した文をそのまま英語TTSで読み上げます)。翻訳モデルは拡張パック側の枠として残しています。
  • 同時通訳は48 kHz専用・ASRとTTSの導入が必要です。低スペックCPUでは実用的な速度が出ません(前版実測 RTF ≈ 5.7)。
  • AI出力のフォルマントはONの間だけ遅延が増えます(+42.7 ms)。リアルタイム通話で気になる量です。一括変換側は影響しません。
  • 実機(マイク・Discord)での長時間の連続運転試験は行っていません。短時間のStart/Stopとモード切替の確認までです。

📦 アップデート手順

アプリ内蔵の自動更新(「調整」③ アプリ)から v0.13.0 を適用するのが最短です。手動の場合は:

  1. リリース添付の koeiro-v0.13.0-windows.zip / koeiro-v0.13.0-linux.tar.gz を展開し、そのフォルダで1回だけ環境を作ります
    (Windows: py -3.12 tools/setup_release.py / Linux: python3.12 tools/setup_release.py)。
  2. 既存の仮想環境(.venv・vc_models/meanvc2/.venv・vc_models/post_lavasr)は引き継がれ、再ダウンロードは発生しません。
  3. 声の登録を使う場合、実行ファイル版は AI環境のあるインストール先ツリーが必要になります(KOEIRO_ROOT か koeiro-root.txt で解決されます)。

🔍 検証・テスト詳細(開発者向け)

自動テスト

  • python -m pytest(GUIはオフスクリーン): 1171 passed, 11 skipped(7分40秒・失敗0)。
    スキップ11件は torch・scipy・soundfile・sherpa_onnx 未導入と MeanVC2 隔離環境専用の
    テストによるもので、従来どおりです。
  • 一つ前の実行では同じスイートで
    tests/test_text_prosody.py::test_worker_lifecycle_restart_and_no_double_start が1件落ちました。
    単独実行・そのファイル内実行では常に緑で、全体を流すときだけ出るタイミング依存です
    (worker の起動待ちが時間切れになる方向の揺れで、音の出る経路の失敗ではありません)。
  • 追加したテスト:
    • tests/test_leveler.py — OFFでビット一致の素通し・小声が同一レベルに揃う・無音を持ち上げない・ゲイン上限・チェーンでの位置
    • tests/test_ai_formant.py — F0を動かさずに重心が上がる・利得±1 dB・Bypass・AI Voiceだけでarmingされること
    • tests/test_translate_live.py — 無音マイクの検知・3秒で部分認識を読み上げる・読み上げ済みを繰り返さない・48 kHz以外でアームしない
    • tests/test_splash_video.py — スプラッシュの実フレームとタイムライン
    • tests/test_ui_flow.py — 新しい2カードの並びとlive切り替え、同時通訳ルートの状態表示
    • tests/test_voice_library.py / tests/test_voice_registration.py — 凍結ビルドでの声ライブラリと登録スクリプトの解決
    • tests/test_meanvc2_continuity.py — buffer_frames_ms / frontend_latency_ms の分離と 1490 ms
    • tests/test_update_offer.py — 長いリリースノートでもボタンがダイアログ内に収まること
      (show() 後の実座標)、マークダウンの平文化、Esc=後で、3ボタンの戻り値
    • tests/test_prosody.py / tests/test_settings.py — Feminine の範囲と新設定キーの既定値・ラウンドトリップ

実測値

  • AI出力のフォルマント段のアルゴリズム遅延: algorithmic_latency_samples = 2048 samples @ 48 kHz = 42.7 ms(quality=low_latency、48000 Hz / 256 frames で prepare 後)。
  • MeanVC2 の入出力遅延: 対数エネルギー包絡の相互相関(10 msフレーム)で legacy frontend +50 ms(group6/36 と group1/1 の両方、=groupingに比例しない)、aligned frontend ±0。既知の600 msシフトを600.0 msと返して計測器を検証しています。整合度 energy_correlation: 修正前 0.79 → 修正後 0.93。すべてオフライン計算で、音声デバイスは開いていません。
  • 起動確認: .venv/Scripts/python.exe app.py --smoke-test(オフスクリーン)が終了コード0。

実行ファイル(Windows)

  • dist/Koeiro/Koeiro.exe をこの修正のあとに再ビルド(5,206,053 bytes)。凍結exeで
    --smoke-test --no-splash(オフスクリーン)が終了コード0。ビルドTOCに
    src.gui.update_offer が入っていることを確認しました。
  • 更新ダイアログの実測(オフスクリーン描画・画面高800px): 本文2,000文字でノート欄の上限320 px、
    ダイアログ高さ354 px、3つのボタンはいずれも y=323〜343 の内側(=画面外へ出ない)。

未実施

  • 聴感・体感遅延の確認(3つの新規機能すべて)
  • GPU機・実マイク・実Discord経路での長時間運転
  • 登録RAMガード撤去後の実機での逼迫挙動(オフラインのフォールバック経路のテストまで)

v0.12.0

Choose a tag to compare

@github-actions github-actions released this 11 Oct 08:57

Koeiro v0.12.0: UI刷新(ステージ+引き出し構造)と「実験室」機能の追加

🌟 ハイライト

  • 画面を「ステージ + 引き出し」構造へ全面刷新
    メイン画面(ステージ)は「入力レベル・3点リレー・遅延数値・Startボタン」のみの洗練された構成になりました。
    マイクや変換設定は右上の「調整」、新機能は「実験」の引き出し(ドロワー)から呼び出せます。引き出しは右からオーバーレイ表示されるため、設定中もステージ上の数値を隠しません。
  • 設定パネル(調整)を3つのバンドに整理
    設定項目を「① 配線」「② 変換」「③ アプリ」の3グループに再編しました。各設定カードの所在が明確になり、カード単位のインクリメンタル検索や目次ジャンプにも対応しています。
  • 「実験室(Lab)」パネルを新設
    先進的な実験機能をまとめて試せるパネルを追加しました。マスターOFFスイッチにより、ワンクリックで安全に全実験機能を無効化できます(コアの音声変換ルートには一切干渉しません)。
  • フレームレス(枠なし)ウィンドウの採用
    OS標準のタイトルバーを排除し、アプリと一体化したクリーンな外観に統一しました。ウィンドウのドラッグ移動や境界ドラッグによるリサイズにも対応しています。
  • 軽量TTS(Kokoro-82M)の分離導入
    同時通訳機能向けに Kokoro-82M を導入。GUI本体のPython環境を汚さないよう、専用の独立環境(vc_models/tts/.venv)で動作します。

※ 音声変換コア(Original / Female DSP / AI Voice)の音声処理アルゴリズムや音質自体には変更ありません。


🧪 実験室(新機能 ①〜⑤)

マスタースイッチをONにすることで、以下の実験機能を個別にお試しいただけます。

# 機能 概要 既定値
① レイテンシ・ガバナ コールバック遅延を計測し、PCスペックに合わせた最適な品質プロファイルを提案(自動反映は任意設定時のみ) ON (提案のみ)
② 同時通訳ボイス 話した音声を英語TTSなどで合成・WAV書き出し(文単位・要ASR/TTSモデル) OFF
③ 囁きモード 囁き声を自動検出し、ピッチ成分を付与して変換モデルが認識しやすい音声へ整形 OFF
④ 分散推論 (LAN) 別PCのワーカー(tools/remote_worker.py)へ合成・翻訳処理をオフロード(認証なし・LAN内専用) OFF
⑤ 複数話者の自動振り分け 声の高さ・明るさから話者を識別し、話者ごとに異なるボイスを割り当て OFF

🛠 その他の改善・修正点

  • チュートリアルを「スポットライト形式」に変更
    中央のモーダルウィンドウを廃止し、操作対象のUIのみをハイライトして横に短い解説カードを出す方式に改善しました(Escでスキップ、左右キーでステップ移動可能)。
  • 「出力の仕上げ」機能の追加(② 変換)
    逐次変換の末尾に、つなぎ目のクリックノイズ除去と歯擦音抑制(最大 -3dB)を行う機能を追加しました(既定OFF)。
  • 検索・目次ナビゲーションの実装
    「調整」「実験」の各引き出し上部に、設定カードの検索欄とグループ目次を配置しました。
  • アクセントカラーの統一
    UIのベースカラーをブランドネイビー(#284b7d)へ一本化しました。
  • 自動更新の判定バグ修正
    リリースタグの v プレフィックスの有無(0.11.0 と v0.11.0)による不一致で更新ダウンロードが拒否されていた問題を修正しました。
  • 遅延・診断情報の整理
    ステージ側には「エンドツーエンドの実測値ではない旨の注記」を明記し、詳細な数値内訳(サンプルレート、バッファ、内部遅延等)は「診断」カードへ集約しました。

⚠️ 既知の制限事項

  • 同時通訳の翻訳モデルは未実装
    現バージョンではパススルー(日本語入力をそのまま英語TTSで読み上げ)となります。本格的な翻訳モデルは将来の拡張パックで提供予定です。
  • 同時通訳のスペック要件
    低スペックCPU環境では合成に時間を要します(実測例: 1.55秒の音声合成に約8.9秒、RTF ≈ 5.7)。
  • Windows 11 Snap Layouts
    フレームレス化に伴い、最大化ボタンへのマウスホバーによる配置メニュー(Snap Layouts)は表示されません(画面端へのドラッグスナップは動作します)。

📦 アップデート手順

  1. 配布ZIP/TARを展開し、以下のスクリプトを1度実行して環境を更新します:
    • Windows: py -3.12 tools/setup_release.py
    • Linux: python3.12 tools/setup_release.py
  2. 既存の仮想環境は引き継がれるため、再ダウンロードは発生しません。
  3. 同時通訳機能(②)を利用する場合のみ、追加で tools/install_tts.py を実行してください(TTSモデルおよび専用環境が構築されます)。

🔍 検証・テスト詳細(開発者向け)

自動テスト・静的確認

  • ユニットテスト: 1190 passed, 7 failed, 2 skipped(失敗・スキップは torchaudio 未導入等に起因する既知のもの)
  • UI構造テスト: tests/test_ui_flow.py にて引き出し内のカード配置順序・座標重複がないことを確認。
  • フレームレス動作: FramelessWindowHint 付与時のリサイズ判定(4辺・4隅)、最大化/復元、ドラッグ領域判定のパスを確認。
  • ビルド確認: 凍結exe(dist/Koeiro/Koeiro.exe)の --smoke-test --no-splash 起動が終了コード 0 で完了することを確認。

画面レイアウト実測値 (1520x980 / 1280x820)

  • タイトルバー高さ: 44px(操作ボタン 42x32px)
  • ステージ幅: 950px(声リスト展開時) / 1280px(声リスト折りたたみ時)
  • 引き出し幅: 520px(ステージ右側にオーバーレイ配置)

v0.11.1

Choose a tag to compare

@github-actions github-actions released this 09 Oct 04:44

自動作成。下書きを編集して公開してください。

v0.11.0

Choose a tag to compare

@heynegix heynegix released this 09 Oct 04:16

Koeiro v0.11.0

配布方法を GitHub Releases に切り替えた最初の版です。以降の更新はアプリ内の「設定 → アプリの更新」から受け取れます。

※ OS別バイナリ(koeiro-*-windows.zip / -linux.tar.gz)は v0.11.1 以降に添付されています。新規導入は v0.11.1 以降をご利用ください。

内容

  • 変換モードを3つに整理:逐次変換 / 一括変換 / 一括変換-最速(待ち約0.6秒)
  • 単画面UI(声パネル・固定Start・設定集約)と使い方ガイドの刷新
  • Linux の仮想デバイス(snd-aloop)対応、Discord はノイズ抑制OFF推奨

配布物について

この版には OS 別バイナリは未添付です。v0.11.1 以降をご利用ください。