Skip to content

name_ipa・ja-JP発音にピッチアクセント(下げ核)を付与#1535

Merged
TinyKitten merged 1 commit into
devfrom
feature/ja-pitch-accent
Jun 16, 2026
Merged

name_ipa・ja-JP発音にピッチアクセント(下げ核)を付与#1535
TinyKitten merged 1 commit into
devfrom
feature/ja-pitch-accent

Conversation

@TinyKitten

Copy link
Copy Markdown
Member

概要

駅名など固有名詞の ja-JP 発音 IPA にピッチアクセント(下げ核)を付与し、Azure AI Speech 等の汎用 TTS でアクセントが体系的に外れる問題(例: 練馬春日町)を改善します。name_ipa とカタカナ由来の ja-JP name_tts_segments[].pronunciation に IPA 下げ核マーカー ˈ を核モーラ直前へ挿入します(alphabetIpa のまま)。

変更の種類

  • バグ修正
  • 新機能
  • データの修正・追加
  • リファクタリング
  • ドキュメント
  • CI/CD
  • その他

変更内容

  • jpreprocess 0.15(OpenJTalk フロントエンドの Rust 実装、naist-jdic 辞書同梱)を依存追加。
  • domain/ipa.rs にピッチアクセント推定・付与を実装。
    • JPREPROCESS: 辞書を遅延ロード(ロード失敗時は None でアクセント付与を安全にスキップ)。
    • analyze_accent: フルコンテキストラベルを解析。(アクセント句インデックス, A1) の組でモーラ境界を判定し、A1 == 0(モーラ位置 == アクセント型)を下げ核として抽出。
    • pitch_accent_nuclei: 補正辞書 → 漢字推定 → カナ推定 の優先順位。推定モーラ数が読みと一致しない場合は破棄してアクセントなしに倒す。
    • accented_katakana_ipa: モーラ境界を追跡(phonemes_to_tagged_chars / insert_syllable_breaks_tagged を新設)し、核モーラ直前へ ˈ を挿入。既存 katakana_to_ipa の出力は不変のまま内部リファクタ。
    • accent_override: 推定ミス補正用テーブル(カナ読みキー、issue 案B)。練馬春日町を登録。
  • 漢字名を compute_ipa_cached / compute_line_ipa_cached に渡すよう配線(station / line / train_type DTO・query.rs)。
  • 付与対象は name_ipa とカタカナ由来 ja-JP セグメントのみ。en-US セグメントと name_roman_ipa は不変。
  • 設計上の判断(コードコメントに明記):
    • 尾高型・平板型は孤立読みで区別できないため語末核は付与しない(issue の実機検証で橋=平板扱いが妥当とされたのと一致。箸 ˈhaɕi / 橋 haɕi を再現)。
    • 複合語で核が複数推定されても、汎用 TTS では不自然になりやすいため推定では先頭(主たる)の語中核 1 つのみ採用。複数置きたい場合は accent_override で明示。
  • AGENTS.md の TTS メタデータ節にピッチアクセントの仕様を追記。

テスト

  • cargo fmt --all -- --check が通ること
  • cargo clippy -- -D warnings が通ること
  • cargo testSQLX_OFFLINE=true)が通ること

cargo test --lib -p stationapi は 331 passed(新規アクセントテスト含む)。例: 京都 ˈkʲo.ɯto(頭高)、渋谷 ɕibɯja(平板=マーカーなし)、練馬春日町 neɾimakasɯˈgat͡ɕo.ɯ(補正辞書)。

関連Issue

Closes #1534

スクリーンショット(任意)

jpreprocess(naist-jdic同梱)でアクセント核を推定し、ja-JPの読み(name_ipa
およびカタカナ由来のja-JP name_tts_segments)の核モーラ直前にIPA下げ核
マーカー ˈ を挿入する。漢字推定→カナ推定→補正辞書のハイブリッド。尾高・
平板は孤立読みで区別できないため語末核は付与せず、1名称につき主たる語中核
1つのみを採用する。en-USセグメントとname_roman_ipaは不変。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@TinyKitten TinyKitten self-assigned this Jun 16, 2026
@github-actions github-actions Bot added feature 要望対応や課題解決 deploy-dev labels Jun 16, 2026
@TinyKitten TinyKitten merged commit 8e11da6 into dev Jun 16, 2026
11 checks passed
@TinyKitten TinyKitten deleted the feature/ja-pitch-accent branch June 16, 2026 12:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

deploy-dev feature 要望対応や課題解決

Projects

None yet

Development

Successfully merging this pull request may close these issues.

name_tts_segments / name_ipa の日本語(ja-JP)発音にピッチアクセント(下げ核)を付与する

1 participant