-
Notifications
You must be signed in to change notification settings - Fork 206
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
voicevox engineが異常終了する #384
Comments
長すぎる文字列が渡されたせいでクラッシュしたと思われます。 この2つの関数の引数である # 値は適当です
if len(text) > 200:
raise ValueError("入力の文字列が長すぎます。") こうすることで Cython周りはちょっと自信が無いため、他の方にも意見を伺いたいです。 |
同じく、文章が長すぎることが原因なエラーかなと思いました。 |
JSON自体は問題とされていないようなので、全角ひらがな3000文字のテキストを用いてテストした結果 1回目リクエスト結果ログ
実行後サーバ状態 => 稼動 2回目リクエスト結果ログ(同じテキスト)
実行後サーバ状態 => 異常終了 ちなみに、メモリ使用量はこの時点では微々たるものでした。 ただ、このテスト中docker落ちる→docker再起動を繰り返しているうちに、voicevox-engineがメモリだけを永遠に食いつぶして起動しないという事象にも遭遇しました。(Vmmem.exeが延々とメモリ消費している状態になる)
|
なるほどです!! 文字数が多くてメモリを食いつぶしてしまう感じなんですね! @takana-v さんの仰るように、メモリオーバーで異常終了しないように、文字数が多かったらエラーを返すというのはどうでしょう。 思いつく最長の日本語はじゅげむなのですが、どうやら140文字程度らしいです。 @anyworks さん、プルリクエスト作成に挑戦してみませんか・・・?👀 |
気になったので、限界の閾値を調べてみました。 test用powershellスクリプト function makePhrase($len){
$token = "隣の客は良く柿食う客だ"
[int]$length = $len
[int]$loop = [Math]::Truncate($length / $token.Length)
[int]$mod = $length % $token.Length
$res=""
for($i=0 ; $i -lt $loop;$i++){
$res+= $token
}
$mod--
if($mod -ne -1){
$res += $token[0..$mod] -join ""
}
$res
}
#[OK]2733 [KO]2734
$basephrase = makePhrase(2733) #一度に送る文字列サイズを指定
$i=2 #リクエストをvoicevoxのログで見分けたい場合、都度変える
$basephrase = $basephrase[0..($basephrase.Length-5)] -join ""
$num = (""+$i).padLeft(4,"0")
$phrase = $basephrase + $num
write-host $phrase
write-host "length to send:" $phrase.Length
Invoke-WebRequest -Uri "192.168.10.11:50021/audio_query?speaker=1&text=$phrase" -Method "POST" | out-null
write-host "end request" pythonにはあまり明るく無いのですが、自身が発行したIssueでもありますし |
utf-8ではその文字種で2733文字だと8199bytes (一文字3bytes)なので、上記( #384 (comment) ) の 8192bytes配列の限界近辺になりますね |
おー!調査ありがとうございます!! |
なるほどです。文字コードの問題でしたか。ありがとうございます&お騒がせしました。 |
不具合の内容
voicevox engineが異常終了する
現象・ログ
voicevox_engine_1 | WARNING: JPCommonLabel_insert_word() in jpcommon_label.c: First mora should not be short pause.
voicevox_engine_1 | *** stack smashing detected ***: terminated
docker_voicevox_engine_1 exited with code 139
再現手順
voicevox-engineのaudio_queryAPIのパラメータ"text"に値として、JSON文字列を与える
例)
/audio_query?speaker=1&text=${JSON_STRING}
audio_queryが出力したJSONを誤って指定したら発生しました。(2回中2回再現)
期待動作
変換処理のエラー判別がなんらかの方法で可能
VOICEVOXのバージョン
0.11.4
OSの種類/ディストリ/バージョン
Windows 10 Pro 64bit (19044.1586)
その他
楽しく使わせてもらってます。ありがとうございます。
環境としては、Windows10 上でのdocker環境起動です。
#377の方が言っている、std::bad_allocエラーにも出くわしましたが、今回のエラーはその原因とは関係無いようです。参考まで。
The text was updated successfully, but these errors were encountered: