[BUG] Windows: non-ASCII file paths are incorrectly decoded by sherpa-onnx
Important Instructions ⚠️
Before submitting this issue, please read carefully and confirm the following:
- I am using the latest version of
sherpa-onnx. If not, I will upgrade and check if the issue persists. - I understand that issues not reproducible on the latest version may be closed without response.
- I have verified that the error is reproducible using only
sherpa-onnx, not code from my own project. - I will provide detailed steps to reproduce the issue.
- I will provide complete logs and error messages.
- I understand that issues not following these instructions may be closed or receive no response (如果直接删掉这个issue template 里的步骤,我们很有可能不会回复您的issue).
Describe the issue
On Windows x64, sherpa-onnx-offline-websocket-server.exe incorrectly handles file paths containing non-ASCII characters.
The issue is reproducible with sherpa-onnx v1.13.6.
For example, a valid path containing ö:
C:\Temp\Hölla-test
is interpreted by sherpa-onnx as:
C:\Temp\H÷lla-test
As a result, the model files cannot be found even though they exist at the original path.
Steps to reproduce
- Download and extract sherpa-onnx v1.13.6 for Windows x64.
- Use sherpa-onnx-offline-websocket-server.exe.
- Place the Parakeet TDT 0.6B v3 model in (mine coming from openWhispr project) :
C:\Temp\Hölla-test - Run:
& "C:\Temp\sherpa-onnx-v1.13.6-win-x64-shared-MT-Release-no-tts\bin\sherpa-onnx-offline-websocket-server.exe" `
"--port=6008" `
"--num-threads=4" `
"--tokens=C:\Temp\Hölla-test\tokens.txt" `
"--encoder=C:\Temp\Hölla-test\encoder.int8.onnx" `
"--decoder=C:\Temp\Hölla-test\decoder.int8.onnx" `
"--joiner=C:\Temp\Hölla-test\joiner.int8.onnx" `
"--model-type=transducer" `
"--debug=true"- Observe that sherpa-onnx reports: '--tokens=C:\Temp\H÷lla-test\tokens.txt'
- It then fails with:
tokens: 'C:\Temp\H÷lla-test\tokens.txt' does not exist - The actual file exists at:
C:\Temp\Hölla-test\tokens.txt
For comparison, the exact same model works when located in an ASCII-only path such as: C:\Temp\parakeet-tdt-0.6b-v3
Expected behavior
sherpa-onnx-offline-websocket-server.exe should preserve Windows Unicode paths exactly as provided and successfully load model files from paths containing non-ASCII characters.
Environment
sherpa-onnxversion: 1.13.6- OS: Windows 11 25h2
- Python version: N/A
- onnxruntime version: Unknow
- GPU (if applicable): None
- NPU (if applicable): Intel AI Boost from Intel Ultra Core 7 255U, but supposed not used
Logs
PS C:\Temp> & "C:\Temp\sherpa-onnx-v1.13.6-win-x64-shared-MT-Release-no-tts\bin\sherpa-onnx-offline-websocket-server.exe" `
>> "--tokens=C:\Temp\parakeet-tdt-0.6b-v3\tokens.txt" `
>> "--encoder=C:\Temp\parakeet-tdt-0.6b-v3\encoder.int8.onnx" `
>> "--decoder=C:\Temp\parakeet-tdt-0.6b-v3\decoder.int8.onnx" `
>> "--joiner=C:\Temp\parakeet-tdt-0.6b-v3\joiner.int8.onnx" `
>> "--port=6007" `
>> "--num-threads=4"
D:\a\sherpa-onnx\sherpa-onnx\sherpa-onnx\csrc\parse-options.cc:Read:374 'C:\Temp\sherpa-onnx-v1.13.6-win-x64-shared-MT-Release-no-tts\bin\sherpa-onnx-offline-websocket-server.exe' '--tokens=C:\Temp\parakeet-tdt-0.6b-v3\tokens.txt' '--encoder=C:\Temp\parakeet-tdt-0.6b-v3\encoder.int8.onnx' '--decoder=C:\Temp\parakeet-tdt-0.6b-v3\decoder.int8.onnx' '--joiner=C:\Temp\parakeet-tdt-0.6b-v3\joiner.int8.onnx' --port=6007 --num-threads=4
D:\a\sherpa-onnx\sherpa-onnx\sherpa-onnx\csrc\offline-websocket-server.cc:main:93 Started!
D:\a\sherpa-onnx\sherpa-onnx\sherpa-onnx\csrc\offline-websocket-server.cc:main:94 Listening on: 6007
D:\a\sherpa-onnx\sherpa-onnx\sherpa-onnx\csrc\offline-websocket-server.cc:main:95 Number of work threads: 3
PS C:\Temp> & "C:\Temp\sherpa-onnx-v1.13.6-win-x64-shared-MT-Release-no-tts\bin\sherpa-onnx-offline-websocket-server.exe" `
>> "--port=6008" `
>> "--num-threads=4" `
>> "--tokens=C:\Temp\Hölla-test\tokens.txt" `
>> "--encoder=C:\Temp\Hölla-test\encoder.int8.onnx" `
>> "--decoder=C:\Temp\Hölla-test\decoder.int8.onnx" `
>> "--joiner=C:\Temp\Hölla-test\joiner.int8.onnx" `
>> "--model-type=transducer" `
>> "--debug=true"
D:\a\sherpa-onnx\sherpa-onnx\sherpa-onnx\csrc\parse-options.cc:Read:374 'C:\Temp\sherpa-onnx-v1.13.6-win-x64-shared-MT-Release-no-tts\bin\sherpa-onnx-offline-websocket-server.exe' --port=6008 --num-threads=4 '--tokens=C:\Temp\H÷lla-test\tokens.txt' '--encoder=C:\Temp\H÷lla-test\encoder.int8.onnx' '--decoder=C:\Temp\H÷lla-test\decoder.int8.onnx' '--joiner=C:\Temp\H÷lla-test\joiner.int8.onnx' --model-type=transducer --debug=true
D:\a\sherpa-onnx\sherpa-onnx\sherpa-onnx\csrc\offline-model-config.cc:Validate:105 tokens: 'C:\Temp\H÷lla-test\tokens.txt' does not exist
D:\a\sherpa-onnx\sherpa-onnx\sherpa-onnx\csrc\offline-websocket-server-impl.cc:Validate:34 Error in recognizer config
PS C:\Temp> get-ChildItem C:\Temp\Hölla-test
Directory: C:\Temp\Hölla-test
Mode LastWriteTime Length Name
---- ------------- ------ ----
d---- 22/08/2026 03:09 test_wavs
-a--- 16/08/2025 11:28 11845275 decoder.int8.onnx
-a--- 16/08/2025 11:28 652184281 encoder.int8.onnx
-a--- 16/08/2025 11:28 6355277 joiner.int8.onnx
-a--- 16/08/2025 11:28 93939 tokens.txt
PS C:\Temp> get-ChildItem C:\Temp\parakeet-tdt-0.6b-v3\
Directory: C:\Temp\parakeet-tdt-0.6b-v3
Mode LastWriteTime Length Name
---- ------------- ------ ----
d---- 22/08/2026 03:05 test_wavs
-a--- 16/08/2025 11:28 11845275 decoder.int8.onnx
-a--- 16/08/2025 11:28 652184281 encoder.int8.onnx
-a--- 16/08/2025 11:28 6355277 joiner.int8.onnx
-a--- 16/08/2025 11:28 93939 tokens.txt
PS C:\Temp>Source: k2-fsa/sherpa-onnx