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

《OS-TTS》の再生終了判定が正しく行われず複数回または複数種類のTTSあるいは《CoeiroInk》との同時使用に問題が発生します #13

Closed
usagi opened this issue Oct 6, 2023 · 2 comments
Assignees
Labels
bug Something isn't working

Comments

@usagi
Copy link
Owner

usagi commented Oct 6, 2023

再現手順

次の何れかで発生を確認:

  • 《OS-TTS》の音声合成複数回呼び出します
  • 《OS-TTS》と《CoeiroInk》を同時に設定し、《OS-TTS》の音声合成を呼び出します

期待した挙動

  • 複数の《OS-TTS》を同時に使用できます。
  • 《OS-TTS》に複数回の音声合成を行わせても停止しません。
  • 《OS-TTS》と《CoeiroInk》を併用しても両方の音声合成が停止せず動作し続けられます。

実施の挙動

サウンドデバイスの再生判定か何かが共有されてしまっているのか、デッドロック的に《OS-TTS》が一度音声合成を再生すると他の音声再生系が動作しない状態になります。

VAC Version

0.0.0-alpha.0

conf.toml

《OS-TTS》を定義すれば100%再現性するため省略。

@usagi usagi self-assigned this Oct 6, 2023
@usagi usagi added the bug Something isn't working label Oct 6, 2023
@usagi
Copy link
Owner Author

usagi commented Oct 6, 2023

調査の結果、《CoeiroInk》などの波形合成を受け取って音声データを再生するために使用している rodio が OutputStream を開いていると、《OS-TTS》 の tts のWindows実装の WinRT での is_speaking() が常に true を返す状態となり、事実上のデッドロックのような状態を呈することがわかりました。

解決方法として次のアイデアがあります:

  • 《OS-TTS》専用の外部プロセスを用意してプロセスレベルで合成と再生を並行制御します。
  • 《OS-TTS》に将来的に実装予定の開発中の機能で WinRT の暫定実装がほぼ完成し PR が飛んでいる状態の synthesize() を使い、音声再生は 《CoeiroInk》 用に使っているVAC内蔵の rodio の再生ストリーム制御に統一します。

@usagi
Copy link
Owner Author

usagi commented Oct 7, 2023

tts 本家では対応する気持ちはあっても実質1年以上放置されてしまっています。とりあえずコメントで期待している人がいることは伝えておきました。しかし、私はVACを実用製品としてリリースしたいので、さしあたり開発中の synthesize 対応ブランチを直接取り込む事にします。

@usagi usagi closed this as completed in ae31193 Oct 7, 2023
usagi added a commit that referenced this issue Oct 7, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

1 participant