コメント読み上げを外部から一時停止/再開させたい

対象

わんコメ

利用OS

Windows

利用バージョン: Windows、わんコメやOBSのバージョン

Windows: 11
わんコメ: 8.0.7
OBS: 32.0.1
VOICEVOX 0.25.1

PRO版を利用

していない

過去ログ確認 (検索はこちらから)

した (REST), (読み上げ 一時停止)

ドキュメント確認 (公式サイト)

した (postman わんコメ HTTP API)

内容

すみません、ちょっと教えて頂きたいです
わんコメを使って YouTube 配信中にコメントの読み上げをしています。
しかし読み上げ系の別のアプリも使っていて、読み上げ音声が被るのを防ぎたいのです。

この動作を実現するため、わんコメに対して次の操作をしたいと考えています。
・今は読み上げを一時停止したい
・今から再開したい

わんコメの REST API (HTTP API) に、これらの機能はあるのでしょうか?
テキストの再生/停止要求があるのは確認したのですが、コメントの再生/一時停止とは違うように見えたので……

再生を一時的に停止というAPIは現時点ではありません
同様の機能の作り方として下記の方法があります

  1. Service単位で読み上げスイッチがあるので、API経由でオンオフする + 読み上げ停止の組み合わせ
  2. プラグインを作り、プラグインのspeechFilterで必要に応じて読み上げテキストを間引く + 必要に応じて読み上げ停止を組み合わせ

おそらく一番希望通りに動作するのは2の方かとは思います

回答ありがとうございます。
現時点で一時停止機能が無いこと、実現にはプラグインの作成が必要になることを理解しました。

少し見た感じ、プラグイン機能として REST API 機能があり、外部から制御ができる……という感じなんですね。
一時停止のみなら false を返すだけと簡単そうでもあるので、プラグインの作成を検討してみたいと思います(Type Script は触ったことがないですが:sweat_droplets:)。

若干誤解がありそうな気がします。

REST API はプラグインの機能ではなく、外部から11180ポートにリクエストすることで制御できる機能です。

に関しては、 Update Service{"speech":true}{"speech":true} をし、適宜読み上げ中のものは StopSpeech で止める、という趣旨の話かと思われます。

補足説明ありがとうございます。助かります。

これについては わんコメのドキュメント「HTTP API」としてではなく、

同ドキュメント「プラグイン」よりプラグイン Rest APIがあり、
そこでの GET/POST 受信部分を使うことで、外部アプリケーションとのやりとりが可能なのかなという理解でした。

この I/F がそういう用途で使われるものではない、とかだったらすみません:face_holding_back_tears:

機能自体を停止するというもの……という感じでしょうか?
ドキュメント内にパラメータ情報が無かったので、助かります:folded_hands:

今回やりたいことは、わんコメによるコメント再生中に別アプリからの音声再生が割り込む間、一時的にわんコメの再生を止めたいというものなので、希望する動作にはならないみたいですね……
コメント読み上げを一時停止した箇所から再開ができるのかどうかが、ちょっと不明でしたので。

なるほど、そういうことですね
読み上げの一時停止というのはその間の読み上げ内容をすべてメモリ上に残しておく機能ですので、そのようなキュー管理する実装がわんコメの中にはありません

もしそのような実装をする場合は、わんコメのコメント読み上げは使用せず外部の読み上げとわんコメのコメントテキストの両方を仲介するプラグインやアプリで読み上げキュー管理するものを作りそこから読み上げを行うことで実現はできるかとは思います

読み上げのタイミングだけ管理してわんコメのSpeech APIにPOSTしても良いでしょうし、直接VOICEVOXのAPIに直接投げても良いと思います

わんコメのコメント読み上げ機能を使うのではなく、わんコメのコメント受信機能と音声再生機能を個別に使ってコメント再生機能を作り、別の音声再生機能と協調動作させると良いのでは、ということですね:thinking:
・わんコメ プラグインを作り、filterCommentでコメント受信
・中継アプリにコメント送信してキューイング
・中継アプリ側で音声再生のタイミング調整(別アプリで再生中はコメント再生しない)
・中継アプリから Voicevox または わんコメへ TTS 要求

みたいな感じですね。

最初の ASTIE さんのアドバイスから、
・わんコメプラグインを作り、speechFilterで再生コメント受信
・別アプリで音声再生中は speechFilter で常に false を返し、対象コメントはプラグイン内でキューイング
・プラグイン提供の request (Rest API) で、外部アプリから音声再生中/停止中の状態を通知

とすることで協調動作することを検討していました。
4uShiyu さんが言われるように、下の対応方法は request の使い方を誤解しているということでしょうか……:thinking:

基本は上記の流れで良いと思いますが、2点目のspeechFilterに関しては外部での読み上げ有無に関わらず常にfalseにしないと再開時にキューより先に読み上げがされるタイミングが出てしまいます
すべてプラグイン内のキューに一度詰めてから順番に処理する方が確実と思います

キュー管理はプラグインで、外部とのやり取りはプラグインのrequestフックで実現できますので上記の流れで良いかと思います(外部の中継アプリでももちろん可)

ありがとうございます。
speechFilter を ture/false 切替すると、タイミング問題が発生するかもということですね:thinking:
発話文言は全てキューに入れるようにし、キューの内容から TTS 依頼していく感じですね。

元々考えていた構成からは色々変わりそうなので、ちゃんと検討してみます:person_bowing: