Open AlphaIru opened 2 years ago
「I can speak English」を入力すると「あい、きゃん、すぴーく、いんぐりっしゅ」と句点だらけになってしまう感じでしょうか。
文章解析に用いているopenjtalkがスペースを句点として扱っているため、このような挙動になるんだと思います。 たしかにスペースは句点として扱わなくても良い気もしました。 openjtalkの該当箇所を見つければ修正できるかもしれません。
あと、スペースを句点にしないことで起こりうる問題がなさそうかも考える必要がありそうです。
なるほどです!ありがとうございます!
多分ですが、無理矢理Regexでスペースを抜くという手もあります。で、あらかじめ登録しておいた3000文字ぐらい辞書で変換というやり方ですかね… 自分はあくまでそうしてきたので…
その方法だと、もとの入力がわからなくなるという課題がありそうですがどうでしょう👀
(例えばI phone
とiphone
が同じになってしまうとか)
まあ、そうなってしまいますが、気にしてるのは発音ですので。後、音声化する前に変換するのもありかと。
字幕付き動画投稿者です。元の入力と発音の対応が分からなくなるのは編集上問題です。音声だけでなく、入力テキストと出力される音声とテキストの変換関係を気にします。これがシンプルに保たれないと、調声の制御性が下がってしまうので
音声にしても、上の例のI phone
とiPhone
とでは発音も変わりえるので、スペースの有無が区別されなくするのは「気にしているのは発音ですので」で済ますべきでない副作用があるように思います。
他の副作用としては、スペースを抜くと別の単語となり発音が変わるケースがありそうです。想像ですが「I 動詞"(アイ~)」が「Iで始まる名詞"(イ~)」になる組合せなど見つかりそうです。
@AlphaIru そもそもIssueに対する疑問なのですが、 「英文章の読み上げをナチュラルにする」とは具体的にはどういうことでしょう?
英語の文章を英語ネイティブが聴いても違和感がないようにすることであれば、 日本語音声ライブラリのVOICEVOXではなく、英語に対応している音声合成ライブラリ(CeVIO AI Tsurumaki Makiなど)を使った方が素直です
あるいは日本語の文章内の英語を、日本語話者のカタカナ英語として違和感がないようにすることでしょうか? それであれば必要なのは「I can speak」を「あいきゃんすぴーくいんぐりっしゅ」のように読みに展開する前処理だと思います。
と考えると、すでに読み上げBotには実装されているのが実はベターで、読み上げBot以外にも使われるVOICEVOX本体の内蔵機能より、必要な人が辞書をインポートする方法でも十分だとも思いました。いかがでしょうか?
多分ですが、無理矢理Regexでスペースを抜くという手もあります。で、あらかじめ登録しておいた3000文字ぐらい辞書で変換というやり方ですかね… 自分はあくまでそうしてきたので…
発音に関しては @so-c さんの仰るとおりで、iphoneの場合は偶然似たような発音になりますが(例として良くなかったです)、根本的な解決策ではないのかなと感じました。
@so-c ネイティブに読んでほしいのではなく、issue内容にある「単語区切りのスペースが入る」、つまり読点(、)が入るのをなんとかするということだと思っています。
まあ… おっしゃる通りです。 自分がOpen-Jtalkでこの問題に直面した時、英語はスペースの空白を言わないことを意識したので。 英語の良いところは大体発音は一定のパターンでいけることなので。単語の変換→2文字アルファベット(例:ba→バ)→1文字アルファベットで変換してからスペースを抜けば発音自体はネイティブと変わりがないぐらい良いはずなので。
単語の変換→2文字アルファベット(例:ba→バ)→1文字アルファベットで変換
こちら、どういう感じでしょうか👀
例として:
I just want to have a translation for voicevox.
まずは…
辞書での変換 アイ ジャスト ワント ツー ハブ ア トランズレーション フォア voicevox.
次に辞書にない文字を…
アイ ジャスト ワント ツー ハブ ア トランズレーション フォア ボiセボx.
最後に仕上げで… アイ ジャスト ワント ツー ハブ ア トランズレーション フォア ボイセボクス.
さらに更に…
アイジャストワントツーハブアトランズレーションフォアボイセボクス。
と感じで変換すればほぼ違和感なく変換できます、もちろん辞書にどんどん足せば正確になりますので…
なるほどです!最後はボイセボエックスになりそうです。 どちらにせよ、ブイオーアイシーイーブイオーエックスよりはわかりやすいので嬉しそうです。
VOICEVOXはOpenJTalkに乗っかっている関係で、辞書になかった単語にオリジナルの変換をかませるのが難しいです。 OpenJTalkを改変して専用の処理を追加することが必要かもしれません。
また、VOICEVOXのメインターゲットのクリエイターには、英語が良い感じに読めるのはあってもなくても良い機能なので、優先度はとても低くなりそうです。
もし @AlphaIru さんがVOICEVOXをより良くしたいということで、OpenJTalkの改変に取り組んでくださるのであれば大歓迎です!!!
オッケーです!Open-Jtalkの改変にいつか携わりたいです! だけどその前に自分のDiscordBotのアップデートと他のプロジェクトの通訳を先に終わらせたいのでその後だったら行けると思います! 問題として、Open-JTalkを頻繁に使うのに中身を知らないことですね…(; ・`д・´)
English User from Overseas, i wanted to show this/海外からの英語ユーザー、これを見せたかった: https://user-images.githubusercontent.com/114430241/192339330-e9dd5bb2-2051-4361-a300-1bd06faf1d2a.mp4
Instad of "I love you [ai rabyuu]" it goes "I love you [ei ai eru ei bi wai yu yu]", wich is bad! AIVOICE/VOICEROID already have it working wich helps a lot the overseas fans! I think adding this to VOICEVOX would be a really good way to atract more oversea fans! Adding romaji could help alot to for non-japanese that are learning!
内容
英文章を読み上げる時、単語毎に空白(スペース)が入るので発音がどうしてもナチュラルじゃないのをなんとかしてもらいたいです。
Pros 良くなる点
英文章が聞き取りやすくなる。
Cons 悪くなる点
大きな問題は’殆どないと思います: ただ日本語と英語の切り替えが問題かもしれないです。
実現方法
僕としては英単語同士の時に空白の時間を極限まで短くするとかしてもらいたいです。
VOICEVOXのバージョン
0.11.4
OSの種類/ディストリ/バージョン
Windows 11 Home 64Bit 21H2 (22000.493)
その他
これは自分がDiscordの読み上げBot(読ませてイルカ)を制作していた時に気づいた直し方です。ここでも応用できないかと気になっていました。