-
Notifications
You must be signed in to change notification settings - Fork 200
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
pyopenjtalk-plusに切り替えるかどうか判断するための調査を行う #1486
Comments
I ran a rough benchmark on ROHAN 4600, I use bleu score for evaluation metric and here's the result: OJT-Plus:
OJT:
Delta (
Each score is calculated with from nltk.translate.bleu_score import corpus_bleu
from nltk.translate.bleu_score import SmoothingFunction
smooth = SmoothingFunction()
corpus_score_1 = corpus_bleu(ref, hyp, weights=(1, 0, 0, 0), smoothing_function=smooth.method1)
corpus_score_2 = corpus_bleu(ref, hyp, weights=(0.5, 0.5, 0, 0), smoothing_function=smooth.method1)
corpus_score_3 = corpus_bleu(ref, hyp, weights=(0.33, 0.33, 0.33, 0), smoothing_function=smooth.method1)
corpus_score_4 = corpus_bleu(ref, hyp, smoothing_function=smooth.method1) Full script# %%
import csv
import re
file = open('Rohan4600_transcript_utf8.txt')
csvreader = csv.reader(file)
i = 0
label = []
data = []
for row in csvreader:
text = row[0]
text = text.split(":")[1]
result = re.sub(r"\(.*?\)", "", text)
data.append(result)
label.append(row[1])
file.close()
# %%
import pyopenjtalk
from tqdm.autonotebook import tqdm
ref = []
hyp = []
for i, d in enumerate(tqdm(data)):
hyp.append(list(pyopenjtalk.g2p(d, kana=True)))
ref.append([list(label[i])])
# %%
from nltk.translate.bleu_score import SmoothingFunction, corpus_bleu
smooth = SmoothingFunction()
corpus_score_1 = corpus_bleu(ref, hyp, weights=(1, 0, 0, 0), smoothing_function=smooth.method1)
corpus_score_2 = corpus_bleu(ref, hyp, weights=(0.5, 0.5, 0, 0), smoothing_function=smooth.method1)
corpus_score_3 = corpus_bleu(ref, hyp, weights=(0.33, 0.33, 0.33, 0), smoothing_function=smooth.method1)
corpus_score_4 = corpus_bleu(ref, hyp, smoothing_function=smooth.method1)
# %%
print(corpus_score_1)
print(corpus_score_2)
print(corpus_score_3)
print(corpus_score_4) Inference speedIt's worth noting that while the bleu score is slightly better, |
素晴らしい検証ですね! 音素レベルだと性能向上は0.1%くらいで、速度はかなり落ちると。 どういう文章で違いがあるのかちょっと気になりました。 あと音素以外に、アクセント区切りやアクセントにどれくらい違いがあるのか気になりますね・・・!! |
確かに中身を見ると
みたいな 長音の変換が割と簡単に解決できなさそうので、時間を取ってまだ調べようと思います。 |
長音で発音するかどうか、なるほどです!! 引き続き調査募集中です!! |
内容
どなたかpyopenjtalk-plusという、pyopenjtalkに色々な変更を加えたライブラリがあります。
リプレイスを検討したいのですが、何がどれくらい違うかわからないのでチェックして、自信を持って変更したいです。
なので調査してくださる方を募集します!
Pros 良くなる点
VOICEVOXのデフォルトのアクセントがより正しくなるかも
実現方法
手順はこんな感じかなと:
pyopenjtalk
をアンインストールし、pyopenjtalk-plus
をインストールテキストはたぶんweb小節とかが未知語がほどよく現れて良いと思います。
興味ある方いたら気軽にコメントください 🙏
その他
結果はGithubやGoogle Driveか、zipとかにしてアップロードして共有いただければ。
アクセントは結構変わる気がしています。
The text was updated successfully, but these errors were encountered: