[BUG] Windows: non-ASCII file paths are incorrectly decoded by sherpa-onnx

Author: o101010Created Aug 22, 2026Updated Sep 4, 2026
Labelsbug

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

  1. Download and extract sherpa-onnx v1.13.6 for Windows x64.
  2. Use sherpa-onnx-offline-websocket-server.exe.
  3. Place the Parakeet TDT 0.6B v3 model in (mine coming from openWhispr project) : C:\Temp\Hölla-test
  4. 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"
  1. Observe that sherpa-onnx reports: '--tokens=C:\Temp\H÷lla-test\tokens.txt'
  2. It then fails with: tokens: 'C:\Temp\H÷lla-test\tokens.txt' does not exist
  3. 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-onnx version: 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

bash
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>