📣
Google Cloud Text-to-Speechは変な文字の並びになるとたまにバグる
OCRで画像を文字認識してGoogle Cloud Text-to-Speechにかませて音声データを生成すると、
文字数制限とかには引っかかってないのに定期的にエラーレスポンスが返ってきてた。
{
"error": {
"code": 400,
"message": "Request contains an invalid argument.",
"status": "INVALID_ARGUMENT"
}
}
どうやらたまたまOCRの精度が悪くて記号多めで読み上げが辛そうなテキストになると
たまにRequest contains an invalid argument.
なるエラーが出力されるらしい。
sample.txt(適当に作った読み上げるには辛そうなテキスト)
{`{'_?*}*{{~=)=()(&)#"$%、あsふぁdsjgふぉああgf
@☻fdさgふぁmS,ふぁsがえgふぁsふぁ「」あfだ
¥43¥¥^~r32rfsad,fda/fdsaaj@[@fasにゃ@<imoopa34t4wtfq#$%&'U()IO
¥43¥¥¥43¥¥¥43¥¥¥_03432432423{`{'_?*}*{{~=)=()(&)#"$%&'())('&%$#"$%&'()=`{}_*`?>+`*?{`{'_?*}*{{~=)=()(&)#"$%&'())('&%$#"$%&'()=`{}_*`?>+`*?{`{'_?*}*{{~=)=()(&)#"$%&'())('&%$#"$%&'()=`{}_*`?>+`*?{`{'_?*}*{{~=)=()(&)#"$%&'())('&%$#"$%&'()=`{}_*`?>+43¥¥¥43¥¥¥43¥¥¥43¥¥¥43¥¥¥43¥¥¥43¥¥¥43¥¥¥43¥¥¥43¥¥¥43¥¥¥43¥¥
fdsagaga48u||||fsavfdsaP{`)UPOJOIRUGIOSPJKL{`+}*S
{`{'_?*}*{{~=)=()(&)#"$%&'())('&%$#"$%&'()=`{}_*`?>+`*?+><LP`*+><MJKIOP`PLKJKL+
()’&)(%’(%()={`}*_?<L+KNHUYRE&%'&(`P}*_}}*P{~=)(&%#”#$%&’()P+`*+?<UG'&F$ED&%TVBILOM+L)I()'&('$&']}{{{_*}
test.py
with open("sample.txt", "r", encoding="utf-8") as f:
text = f.read()
client = texttospeech.TextToSpeechClient()
synthesis_input = texttospeech.SynthesisInput(text=text)
voice = texttospeech.VoiceSelectionParams(
language_code="ja-JP",
name="ja-JP-Neural2-C",
)
audio_config = texttospeech.AudioConfig(
audio_encoding=texttospeech.AudioEncoding.MP3
)
response = client.synthesize_speech(
input=synthesis_input, voice=voice, audio_config=audio_config
)
with open("audio.mp3", "wb") as out:
out.write(response.audio_content)
ただし、同じテキストでも2分割して2回送信した上で音声データを結合してあげるとエラーにならなかったり、VoiceTypeをいじったら解消されたり発動条件はよくわからなかった。
Discussion