VOICEVOX / voicevox

無料で使える中品質なテキスト読み上げソフトウェア、VOICEVOXのエディター
https://voicevox.hiroshiba.jp/
Other
2.41k stars 295 forks source link

[機能向上]SRTファイルを利用した音声合成 #1669

Open szriru opened 7 months ago

szriru commented 7 months ago

内容

SRTという字幕のためのファイル形式を利用した音声合成の機能を実装してほしいです。 SRTファイルによって音声合成するときそのSRTファイルの時間と一致するように合成・変換してほしいです。 例えば、

1
00:00:00,000 --> 00:00:04,500
こんにちは、お元気ですか。

2
00:00:04,500 --> 00:00:09,120
はい、調子が良いです

3
00:00:09,120 --> 00:00:12,160

4
00:00:12,160 --> 00:00:15,840
そして、ここで大いなる発表です。

というSRTファイルがあるとしたら最初の「こんにちは、お元気ですか」が4.5秒ちょうどか収まるように速度を調節して合成して、他の部分も同様に時間内に収まるように合成して、空白の部分も考量して一つの音声ファイルになるようにしてほしいです。動画編集ソフトにその一つの音声ファイルとSRTファイルを読み込ませるとそのまま音声と字幕がずれることがなく使えるようにしてほしいです。

ゆっくりムービーメーカーなどでもsrtを読み込んで各テキストを音声合成できると思いますが、時間を考慮していないのでhttps://youtu.be/uUN9klTP50s?t=149 のようにずれてしまう。

Pros 良くなる点

Cons 悪くなる点

UIが増える

実現方法

  1. SRT読み込み
  2. 時間内になるように各文章を音声合成
  3. 空白の時間も含めてSRTファイルに一致するように一つの音声ファイルにして出力。

関連して何か気がついたこと、気になることがあればココに書いてください

主な新しい処理は時間を考慮して速度を調節するくらいなので、APIの速度調節のパラメータを利用して外部アプリとして実装すればよいと正直思いました。ふと思ったのですが、そのような場合に既に作られているかどうか確認できるVOICEVOXを活用したオープンソースのアプリや拡張機能一覧のようなものは公式ではないのですか?

Hiroshiba commented 7 months ago

issue作成ありがとうございます!! 関連issueとしてちょっとリンクしておきます。

@szriru ちなみに他の音声合成ソフトの挙動とか知らないですか? UIの参考にしたいなと。

あと実装に興味ないですか? 正直なところ、実装自体は相当簡単だと思うのですが、問題は既存のVOICEVOXユーザーは台本をソフトウェア上で書くことが主な制作方法なので、実装するニーズがあまりないのでなかなか手がつけられないだろうなと感じています。 VueやTSが初めてなら聞いていただければかなりサポートできると思います。

既に作られているかどうか確認できるVOICEVOXを活用したオープンソースのアプリや拡張機能一覧のようなものは公式ではないのですか?

今のところ無いです! 毎日エゴサしてますがsrtからVOICEVOX音声を作るアプローチは特に見かけてない・・・気がします。

szriru commented 7 months ago

ご返信ありがとうございます。

ちなみに他の音声合成ソフトの挙動とか知らないですか? UIの参考にしたいなと。

すいませんが分かりません。SRTを読み込んだ時どうなるかという話でしたら多くの動画編集ソフトでは単純にテキスト用のタイムラインに各開始時間から終了時間の位置に各テキストがあらわれます。

VOICEVOX Editorのレポジトリにissueを書いておいてですが、この機能のための特別なUIは必要ないと思います。 SRTファイル自体の調整は他のソフトウェアですれば良いと思います。 UIをつけるとするならば開始時間,終了時間,テキストを表示させて正しく読み込めたことを確認する画面とその横に各テキストの音声合成の進行状況のプログレスバーみたいなのを表示させるくらいで良いと思います。

番号 開始時間 終了時間 テキスト 進行状況
1 00:00:00,000 00:00:04,500 こんにちは、お元気ですか。 完了
2 00:00:04,500 00:00:04,500 --> 00:00:09,120 はい、調子が良いです ------

Voicevox editorのメニューバー->ファイル->SRTファイルから音声を書き出すという項目を作ってそれによって読み込んだ後↑のような画面をポップアップさせる、というようにしてもよいのでもしあれば私が実装してみたいです。 (公式のEditorの機能として必要ないのであれば,私が静かに個人レポジトリに書きます.)

最後に質問なのですが、

Hiroshiba commented 7 months ago

UIはたしかにガッツリした変更は不要かもしれませんね!!

voicepeakにSRT読み込み機能があるのですが、見た感じ「SRTファイルを読み込む」というメニューアイテムが有る感じでした!機能名の参考になるかなと。

進行バーはUIを作らず、一旦簡易的に%だけ表示するものでも良いかもと思いました! この方法であれば既存でProgressDialog.vueというUIがあります。

最後の質問に関して、ご質問もありがとうございます!!なんでも聞いていただければ! こんな感じの回答となりそうです。