Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

疑問文のアクセントが「audio_query」と「accent_phrases」とで異なったものが生成される #309

Closed
1 of 3 tasks
manju-summoner opened this issue Jan 27, 2022 · 3 comments
Labels
OS 依存:win Windows に依存した現象 バグ

Comments

@manju-summoner
Copy link

manju-summoner commented Jan 27, 2022

不具合の内容

/accent_phrasesis_kanaenable_interrogativetrueに設定した上で
末尾にを付け疑問文化した文章を与えると、/audio_queryの生成結果と異なる末尾が間延びしたaccent_phrasesが生成される

なお、疑問文化していない「ですか」「デ_スカ」では生成結果に差はありませんでした。

現象・ログ

/audio_query?text=ですか?&speaker=0&enable_interrogative=trueの生成結果

{
  "accent_phrases": [
    {
      "moras": [
        {
          "text": "デ",
          "consonant": "d",
          "consonant_length": 0.05291371047496796,
          "vowel": "e",
          "vowel_length": 0.09569737315177917,
          "pitch": 5.64717435836792
        },
        {
          "text": "ス",
          "consonant": "s",
          "consonant_length": 0.05241626501083374,
          "vowel": "U",
          "vowel_length": 0.0754052922129631,
          "pitch": 0
        },
        {
          "text": "カ",
          "consonant": "k",
          "consonant_length": 0.08472061902284622,
          "vowel": "a",
          "vowel_length": 0.1427222639322281,
          "pitch": 5.609618186950684
        },
        {
          "text": "ア",
          "consonant": null,
          "consonant_length": null,
          "vowel": "a",
          "vowel_length": 0.15,
          "pitch": 5.909618186950683
        }
      ],
      "accent": 1,
      "pause_mora": null,
      "is_interrogative": true
    }
  ],
  "speedScale": 1,
  "pitchScale": 0,
  "intonationScale": 1,
  "volumeScale": 1,
  "prePhonemeLength": 0.1,
  "postPhonemeLength": 0.1,
  "outputSamplingRate": 24000,
  "outputStereo": false,
  "kana": "デ'_スカ?"
}

/accent_phrases?text=デ'_スカ?&speaker=0&is_kana=true&enable_interrogative=trueの生成結果

[
  {
    "moras": [
      {
        "text": "デ",
        "consonant": "d",
        "consonant_length": 0.05395865440368652,
        "vowel": "e",
        "vowel_length": 0.09503831714391708,
        "pitch": 5.705740928649902
      },
      {
        "text": "ス",
        "consonant": "s",
        "consonant_length": 0.05214688926935196,
        "vowel": "U",
        "vowel_length": 0.07192478328943253,
        "pitch": 0
      },
      {
        "text": "カ",
        "consonant": "k",
        "consonant_length": 0.08056826144456863,
        "vowel": "a",
        "vowel_length": 0.10073807090520859,
        "pitch": 5.730559825897217
      },
      {
        "text": "ア",
        "consonant": null,
        "consonant_length": null,
        "vowel": "a",
        "vowel_length": 0.15606553852558136,
        "pitch": 5.5170464515686035
      },
      {
        "text": "ア",
        "consonant": null,
        "consonant_length": null,
        "vowel": "a",
        "vowel_length": 0.15,
        "pitch": 5.817046451568603
      }
    ],
    "accent": 1,
    "pause_mora": null,
    "is_interrogative": true
  }
]

以下のスクリーンショットは両APIのaccent_phrases部分の差分です
image

再現手順

  1. VOICEVOX0.10.0エンジンを立ち上げる
  2. http://localhost:50021/docs へアクセスする
  3. audio_queryで「ですか?」を生成する
    1. /audio_queryのTry it outボタンをクリック
    2. text欄にですか?を入力する
    3. speakerに0を入力する
    4. Executeボタンをクリックする
  4. accent_phrasesで「デ'_スカ?」を生成する
    1. /accent_phrasesのTry it outボタンをクリック
    2. text欄にデ'_スカ?を入力する
    3. speakerに0を入力する
    4. is_kanaでtrueを選択する
    5. Executeボタンをクリックする

期待動作

VOICEVOXのバージョン

0.10.0

OSの種類/ディストリ/バージョン

  • Windows 11 Pro 64bit (10.0.22000 ビルド 22000)
  • macOS
  • Linux

その他

@github-actions github-actions bot added the OS 依存:win Windows に依存した現象 label Jan 27, 2022
@takana-v
Copy link
Member

voicevox_engine/run.py

Lines 206 to 218 in fb02b99

if is_kana:
try:
accent_phrases = parse_kana(text, enable_interrogative)
except ParseKanaError as err:
raise HTTPException(
status_code=400,
detail=ParseKanaBadRequest(err).dict(),
)
accent_phrases = engine.replace_mora_data(
accent_phrases=accent_phrases, speaker_id=speaker
)
return adjust_interrogative_accent_phrases(accent_phrases)

parse_kana()でアクセント句の最後に母音が追加されたのち、adjust_interrogative_accent_phrases()内の

moras=adjust_interrogative_moras(accent_phrase),

adjust_interrogative_moras関数内で、再度母音が追加されてしまっているようです。
if accent_phrase.is_interrogative and not (len(moras) == 0 or moras[-1].pitch == 0):
interrogative_mora = make_interrogative_mora(moras[-1])
moras.append(interrogative_mora)

不具合ですので修正が必要そうですね...
現在、#272 で関連コードの仕様変更が行われています。
@Yosshi999 対応お願いできますでしょうか?

@Hiroshiba
Copy link
Member

https://github.com/VOICEVOX/voicevox_engine/releases/tag/0.10.2 にて解決したと思います・・・!

@manju-summoner
Copy link
Author

素早いご対応ありがとうございます!
先程確認した処、問題なく動作しているようでした。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
OS 依存:win Windows に依存した現象 バグ
Projects
None yet
Development

No branches or pull requests

3 participants