Skip to content

[BUG] STT in Godot fails with ONNXRuntimeError while registering CUDAExecutionProvider with 'No such file or directory' #646

Description

@pwab

Describe the bug
When trying the new NobodyWhoSTT node on slightly older AMD hardware with current Fedora OS I get an error at stt.transcribe_file("res://recording.mp3") and my recording is not transcribed.

Output:

Godot Engine v4.7.1.stable.official.a13da4feb - https://godotengine.org
OpenGL API 4.6 (Core Profile) Mesa 26.1.5 - Compatibility - Using Device: AMD - AMD Radeon RX 570 Series (radeonsi, polaris10, ACO, DRM 3.64, 7.1.5-200.fc44.x86_64)

2026-07-27T09:02:51.240180Z  INFO nobodywho::huggingface: Using cached repo: /home/pwab/.cache/nobodywho/models/onnx-community/whisper-base
2026-07-27T09:02:51.270541Z  INFO ort::logging: Discovered OrtHardwareDevice {vendor_id:0x1002, device_id:0x67df, vendor:, type:1, metadata: [card_idx=1, pci_bus_id=0000:08:00.0, ]}
2026-07-27T09:02:51.270687Z  INFO ort::logging: Discovered OrtHardwareDevice {vendor_id:0x1022, device_id:0x0, vendor:AMD, type:0, metadata: []}
2026-07-27T09:02:51.274644Z  INFO ort::ep: Successfully registered `CPUExecutionProvider` source=session options
2026-07-27T09:02:51.382882Z  INFO ort::ep: Successfully registered `CPUExecutionProvider` source=session options
2026-07-27T09:02:53.444649Z  INFO nobodywho::stt::architectures::whisper: Loaded Whisper STT n_mels=80 num_layers=6 num_heads=8 head_dim=64 lang_count=99 language="auto"
2026-07-27T09:02:53.444766Z  INFO nobodywho::stt::architecture: Initialized Whisper STT elapsed=2.216935562s

Debugger:

E 0:00:00:519   <nobodywho_godot::GodotWriter as std::io::Write>::write: 2026-07-27T09:02:51.274397Z ERROR ort::ep: An error occurred when attempting to register `CUDAExecutionProvider`: /home/runner/work/ort-artifacts/ort-artifacts/onnxruntime/onnxruntime/core/session/provider_bridge_ort.cc:1952 Provider &onnxruntime::ProviderLibrary::Get() [ONNXRuntimeError] : 1 : FAIL : Failed to load library /home/pwab/Workspace/godot/nobodywho-stt-tts/addons/nobodywho/libonnxruntime_providers_shared.so with error: /home/pwab/Workspace/godot/nobodywho-stt-tts/addons/nobodywho/libonnxruntime_providers_shared.so: cannot open shared object file: No such file or directory
 source=session options
  <C++ Source>  godot/src/lib.rs:3035 @ <nobodywho_godot::GodotWriter as std::io::Write>::write()

To Reproduce
Steps to reproduce the behavior:

  1. Go to the official STT docs
  2. Try to recreate the Quick start sample (you will need a recording.mp3)

Or you can download my MRP: nobodywho-stt.zip (You need to download the nobodywho package and drop it into the addons folder as I did not wanted to upload a 4GB zip file.)

Expected behavior

  • No errors
  • Transcribed text in console output

Environment:

  • Hardware: AMD Ryzen 5 1600, 16,0 GiB RAM, AMD Radeon RX 570 8GB VRAM
  • OS: Fedora Linux 44
  • Godot Version: 4.7.1
  • Nobodywho Version: 9.5.0
  • LLM Model: onnx-community/whisper-base (default, cached)

Additional context
Is the current implementation only available for NVIDIA hardware (see CUDAExecutionProvider)? I saw that it succesfully registered CPUExecutionProvider but it seems it switches to CUDA once it starts transcription.

Activity

  1. added
    bugSomething isn't working
    on Jul 27, 2026
  2. changed the title [-][BUG] STT fails with ONNXRuntimeError while registering `CUDAExecutionProvider` with _No such file or directory_[/-] [+][BUG] STT fails with ONNXRuntimeError while registering `CUDAExecutionProvider` with 'No such file or directory'[/+] on Jul 27, 2026
  3. changed the title [-][BUG] STT fails with ONNXRuntimeError while registering `CUDAExecutionProvider` with 'No such file or directory'[/-] [+][BUG] STT fails with `ONNXRuntimeError` while registering `CUDAExecutionProvider` with 'No such file or directory'[/+] on Jul 27, 2026
  4. changed the title [-][BUG] STT fails with `ONNXRuntimeError` while registering `CUDAExecutionProvider` with 'No such file or directory'[/-] [+][BUG] STT in Godot fails with `ONNXRuntimeError` while registering `CUDAExecutionProvider` with 'No such file or directory'[/+] on Jul 27, 2026
  5. krebso commented on Jul 29, 2026

    @krebso
    Contributor

    Hello there, we tried reproducing the issue at one of our computers with AMD and were not able to reproduce. You are correctly assuming that we currently only support CUDA, and default to CPU if it is not available.

    However, the logtrace looks strange:

    2026-07-27T09:02:51.270541Z  INFO ort::logging: Discovered OrtHardwareDevice {vendor_id:0x1002, device_id:0x67df, vendor:, type:1, metadata: [card_idx=1, pci_bus_id=0000:08:00.0, ]}
    2026-07-27T09:02:51.270687Z  INFO ort::logging: Discovered OrtHardwareDevice {vendor_id:0x1022, device_id:0x0, vendor:AMD, type:0, metadata: []}
    

    The second device is correctly identified as vendor:AMD, the first one is vendor:, which I think is the culprit of the library selecting the card as CUDA.

    Are your drivers up to date? In the meantime, I will look into it at the onnx side.

  6. pwab commented on Aug 21, 2026

    @pwab
    Author

    Hey @krebso thanks for looking into this and trying to reproduce!

    I checked the system on my side, and everything seems to be set up correctly. I don't appear to have a second GPU or another (or broken) GPU driver installed. My system and drivers are up to date.

    Some additional checks I did:

    • lspci -nn shows only one VGA device: my Radeon RX 570 (1002:67df).
    • lsmod shows amdgpu loaded and no radeon module.
    • glxinfo reports AMD Radeon RX 570 Series (radeonsi, polaris10, ACO).
    • vulkaninfo reports the RX 570 (RADV POLARIS10) as GPU 0 and llvmpipe as GPU 1. As far as I understand, llvmpipe is just the CPU-based software renderer, not another physical GPU.

    So the OrtHardwareDevice enumeration also seems reasonable to me:

    # AMD RX 570 GPU
    OrtHardwareDevice {
        vendor_id:0x1002,
        device_id:0x67df,
        vendor: ,
        type:1,
        metadata:[card_idx=1, pci_bus_id=0000:08:00.0]
    }
    
    # AMD Ryzen 5 1600 CPU
    OrtHardwareDevice {
        vendor_id:0x1022,
        device_id:0x0,
        vendor:AMD,
        type:0,
        metadata:[]
    }

    The first device is clearly my RX 570 (type 1, 1002:67df), while the second appears to be the AMD CPU (type 0). My Ryzen 5 1600 does not have an integrated GPU, so I don't see any indication of a second GPU here.

    The only thing that still looks slightly strange is that the RX 570 has an empty vendor: field, while the CPU is reported as vendor:AMD. I'm not sure whether that is significant or just how the enumeration currently works.

    If we take it as is, it seems the ONNX enumeration is reporting my GPU without the vendor string and NobodyWho then assumes it must be a CUDA card and so does not utilize another execution provider (like Vulkan or CPU) and then fails. Maybe just add a little check for empty vendor fields to fall back to the CPU provider?

    Or could the actual problem instead be related to the fact that the RX 570 is a Polaris/GCN 4 GPU and isn't supported by the current ROCm versions? Perhaps the hardware is discovered correctly, but the GPU cannot actually be used by the relevant ONNX execution provider?

    In any case there might be a try-catch-block needed for the GPU provider that falls back to the CPU provider if it fails (or something like that).

    For reference, the ONNX Runtime API documentation for the hardware enumeration and the execution-provider documentation:

    I'm happy to check anything else that could help narrow this down.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working🤖 GodotRelated to Godot engine

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions