ahmetoner / whisper-asr-webservice

OpenAI Whisper ASR Webservice API
https://ahmetoner.github.io/whisper-asr-webservice
MIT License
1.85k stars 331 forks source link

Fix fileName with non-ASCII char error : https://github.com/ahmetone… #184

Closed zj1123581321 closed 5 months ago

zj1123581321 commented 6 months ago

upload fileName with non-ASCII char. will cause error · Issue #91 · ahmetoner/whisper-asr-webservice


This error is caused by the fact that the key-value pairs in the HTTP header must be encoded using the ASCII character set. In your code, the value of the Content-Disposition header contains non-ASCII characters (Chinese characters), thus causing this error.

To fix this problem, you can properly encode values ​​containing non-ASCII characters. In this case, you can use the urllib.parse.quote method to URL-encode the filename to ensure it contains only ASCII characters. The encoded filename is then used as the value of the Content-Disposition header.

Here is the modified code example:

from urllib.parse import quote

#...

return StreamingResponse(
     result,
     media_type="text/plain",
     headers={
         'Asr-Engine': ASR_ENGINE,
         'Content-Disposition': f'attachment; filename="{quote(audio_file.filename)}.{output}"'
     }
)

By URL-encoding the file name using the quote method, you can ensure that the generated value contains only ASCII characters, thus avoiding errors. In this way, no matter whether the file name contains Chinese characters or not, it can be processed normally.