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

整理: e2e single API テスト vol 8 #1166

Merged
merged 13 commits into from
May 3, 2024

Conversation

tarepan
Copy link
Contributor

@tarepan tarepan commented Apr 1, 2024

内容

次のAPIに対しスナップショットテストを追加した。

  • POST /audio_query-200
  • POST /synthesis-200
  • POST /frame_synthesis-200
  • POST /multi_synthesis
    • 200
      • snapshot
  • POST /synthesis_morphing-200

Notes

.wav ファイルのスナップショットテストは #1064 と同様のワークアラウンドを利用した。

関連 Issue

part of #1065

@tarepan tarepan requested a review from a team as a code owner April 1, 2024 18:40
@tarepan tarepan requested review from y-chan and removed request for a team April 1, 2024 18:40
@tarepan
Copy link
Contributor Author

tarepan commented Apr 1, 2024

POST synthesis_morphing で Linux-MacOS 数値精度問題が発生している...?

Copy link

github-actions bot commented Apr 2, 2024

Coverage Result

Resultを開く
Name Stmts Miss Cover
run.py 277 122 coverage-56%
voicevox_engine/init.py 1 0 coverage-100%
voicevox_engine/app/init.py 0 0 coverage-100%
voicevox_engine/app/dependencies.py 9 0 coverage-100%
voicevox_engine/app/routers/init.py 0 0 coverage-100%
voicevox_engine/app/routers/preset.py 37 4 coverage-89%
voicevox_engine/app/routers/setting.py 23 3 coverage-87%
voicevox_engine/app/routers/speaker.py 59 5 coverage-92%
voicevox_engine/app/routers/tts_pipeline.py 121 29 coverage-76%
voicevox_engine/app/routers/user_dict.py 60 29 coverage-52%
voicevox_engine/cancellable_engine.py 97 75 coverage-23%
voicevox_engine/core/init.py 0 0 coverage-100%
voicevox_engine/core/core_adapter.py 81 6 coverage-93%
voicevox_engine/core/core_initializer.py 60 30 coverage-50%
voicevox_engine/core/core_wrapper.py 228 160 coverage-30%
voicevox_engine/dev/init.py 0 0 coverage-100%
voicevox_engine/dev/core/init.py 0 0 coverage-100%
voicevox_engine/dev/core/mock.py 65 2 coverage-97%
voicevox_engine/dev/tts_engine/init.py 0 0 coverage-100%
voicevox_engine/dev/tts_engine/mock.py 28 0 coverage-100%
voicevox_engine/engine_manifest/EngineManifest.py 36 0 coverage-100%
voicevox_engine/engine_manifest/EngineManifestLoader.py 11 0 coverage-100%
voicevox_engine/engine_manifest/init.py 0 0 coverage-100%
voicevox_engine/library_manager.py 92 4 coverage-96%
voicevox_engine/metas/Metas.py 36 0 coverage-100%
voicevox_engine/metas/MetasStore.py 28 1 coverage-96%
voicevox_engine/metas/init.py 0 0 coverage-100%
voicevox_engine/model.py 180 3 coverage-98%
voicevox_engine/morphing.py 72 4 coverage-94%
voicevox_engine/preset/Preset.py 13 0 coverage-100%
voicevox_engine/preset/PresetError.py 2 0 coverage-100%
voicevox_engine/preset/PresetManager.py 82 2 coverage-98%
voicevox_engine/preset/init.py 0 0 coverage-100%
voicevox_engine/setting/Setting.py 9 0 coverage-100%
voicevox_engine/setting/SettingLoader.py 20 0 coverage-100%
voicevox_engine/setting/init.py 0 0 coverage-100%
voicevox_engine/tts_pipeline/init.py 0 0 coverage-100%
voicevox_engine/tts_pipeline/kana_converter.py 88 1 coverage-99%
voicevox_engine/tts_pipeline/mora_mapping.py 7 0 coverage-100%
voicevox_engine/tts_pipeline/phoneme.py 34 0 coverage-100%
voicevox_engine/tts_pipeline/text_analyzer.py 146 6 coverage-96%
voicevox_engine/tts_pipeline/tts_engine.py 268 9 coverage-97%
voicevox_engine/user_dict/part_of_speech_data.py 5 0 coverage-100%
voicevox_engine/user_dict/user_dict.py 146 12 coverage-92%
voicevox_engine/utility/init.py 0 0 coverage-100%
voicevox_engine/utility/connect_base64_waves.py 37 0 coverage-100%
voicevox_engine/utility/core_utility.py 6 0 coverage-100%
voicevox_engine/utility/core_version_utility.py 8 1 coverage-88%
voicevox_engine/utility/mutex_utility.py 13 0 coverage-100%
voicevox_engine/utility/path_utility.py 26 6 coverage-77%
voicevox_engine/utility/run_utility.py 10 7 coverage-30%
TOTAL 2521 521 coverage-79%

@tarepan
Copy link
Contributor Author

tarepan commented Apr 2, 2024

POST synthesis_morphing のスナップショットテスト追加をリバートしました。
Review 可能です。

Copy link
Member

@Hiroshiba Hiroshiba left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ちょっと細かいところも含めていっぱいコメントさせていただきました🙇

test/e2e/single_api/test_frame_synthesis.py Outdated Show resolved Hide resolved
wave = sf.read(io.BytesIO(response.read()))[0].tolist()
# NOTE: Linux-Windows 数値精度問題に対するワークアラウンド
wave = round_floats(wave, 2)
wave_str = " ".join(map(lambda point: str(point), wave))
Copy link
Member

@Hiroshiba Hiroshiba Apr 8, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

たしかnumpy辺りはtobufferみたいなのでバイナリにできるので、それ渡すhash_long_bytesみたいなのをいつか作っても良いかもですね。
ちょっと正確でちょっと早そうでちょっと意図が明確、くらいの気持ちですが

Copy link
Contributor Author

@tarepan tarepan Apr 8, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

numpy辺りはtobufferみたいなのでバイナリにできるので、それ渡すhash_long_bytesみたいなのをいつか作っても良い

round_floats() の入力が ndarray でなく float であり、現時点でこの実装をするのは難しそうです。
round_floats() 変更は本 PR で触っていない複数のファイル編集を要するため、別のリファクタリング PR で将来的に対処するのが review 上好ましいと考えます。

「本 PR では対処無し」の方針で問題ないでしょうか?

test/e2e/single_api/test_synthesis_morphing.py Outdated Show resolved Hide resolved
test/e2e/single_api/test_synthesis.py Outdated Show resolved Hide resolved
test/e2e/single_api/test_multi_synthesis.py Outdated Show resolved Hide resolved
Copy link
Member

@Hiroshiba Hiroshiba left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ちょっと細かいところかもなのですがコメントしました!

test/e2e/single_api/test_multi_synthesis.py Outdated Show resolved Hide resolved
test/utility.py Outdated Show resolved Hide resolved
test/e2e/single_api/test_synthesis_morphing.py Outdated Show resolved Hide resolved
test/e2e/single_api/test_synthesis_morphing.py Outdated Show resolved Hide resolved
test/e2e/single_api/test_synthesis.py Outdated Show resolved Hide resolved
@tarepan
Copy link
Contributor Author

tarepan commented Apr 15, 2024

@Hiroshiba
全指摘箇所の反映・テストパスを確認しました。Re-Re-review よろしくお願いします。

Copy link
Member

@Hiroshiba Hiroshiba left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ほぼLGTMです!!

とてもわかりやすくなったと思います、ありがとうございます!!
1点だけコメントしました 🙇

test/utility.py Outdated Show resolved Hide resolved
@tarepan
Copy link
Contributor Author

tarepan commented May 1, 2024

@Hiroshiba
全指摘箇所の反映・テストパスを確認しました。Re3-review よろしくお願いします。

Copy link
Member

@Hiroshiba Hiroshiba left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM!!

とてもコーディングしやすくなったと思います、ありがとうございます!!

@Hiroshiba Hiroshiba merged commit 2d4666c into VOICEVOX:master May 3, 2024
3 checks passed
@tarepan tarepan deleted the refactor/e2e_v8 branch May 3, 2024 04:47
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants