Informatik

4.911 Beiträge

Die Cuda-Bibliothek kann in Python nicht gefunden werden?

Hallo, ich verwende Python im VS-Code und möchte einen einfachen Sprachtranskribierer mit einem schnelleren Whisper-AI-Modell basierend auf dem Whisper-Modell von Open AI erstellen. Jedes Mal, wenn ich den Code verwendete, trat derselbe Fehler auf:

"Could not locate cudnn_ops_infer64_8.dll. Please make sure it is in your library path!"

Ich habe versucht, meine CPU anstelle von Cuda zu verwenden, aber es war einfach viel zu langsam. Ich habe auch versucht, PyCharm zu verwenden, um sicherzustellen, dass das Problem nicht im VS-Code liegt, habe aber den gleichen Fehler erhalten. Ich habe sowohl Cuda als auch cudnn installiert und die scheinbar fehlende DLL-Datei befindet sich unter:

"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.6\bin\cudnn_ops_infer64_8.dll"

Ich verwende einen i5 12600k, 32 GB DDR5 und eine RTX 3070 Ti.

Kann mir jemand helfen? Ich bin nicht so erfahren in Ai und habe die letzten zwei Tage alles versucht. Ich habe keine Idee, das Problem zu lösen.

Hier ist mein Code:

import pyaudio
import numpy as np
from faster_whisper import WhisperModel

CHUNK_SIZE = 16000  # 1 Sekunde Audio bei 16kHz
FORMAT = pyaudio.paInt16
CHANNELS = 1
RATE = 16000

model_size = "large-v2"  # Größeres Modell für bessere Leistung mit Deutsch

def list_microphones():
    p = pyaudio.PyAudio()
    info = p.get_host_api_info_by_index(0)
    num_devices = info.get('deviceCount')
    
    for i in range(num_devices):
        device = p.get_device_info_by_host_api_device_index(0, i)
        if device.get('maxInputChannels') > 0:
            print(f"ID {i}: {device.get('name')}")
    
    p.terminate()

def select_microphone():
    list_microphones()
    while True:
        try:
            device_id = int(input("Geben Sie die ID des gewünschten Mikrofons ein: "))
            return device_id
        except ValueError:
            print("Ungültige Eingabe. Bitte geben Sie eine Zahl ein.")

def send_audio(device_id):
    p = pyaudio.PyAudio()
    stream = p.open(format=FORMAT, channels=CHANNELS, rate=RATE, input=True, 
                    frames_per_buffer=CHUNK_SIZE, input_device_index=device_id)
    model = WhisperModel(model_size, device="cuda", compute_type="float16")

    print("Höre zu... Drücken Sie Strg+C zum Beenden.")

    last_text = ""
    try:
        while True:
            # Sammle 5 Sekunden Audio
            audio_data = []
            for _ in range(5):  # 5 Sekunden
                data = stream.read(CHUNK_SIZE)
                audio_data.append(data)

            # Konvertiere in numpy array
            audio_np = np.frombuffer(b''.join(audio_data), dtype=np.int16).astype(np.float32)
            
            # Normalisiere
            audio_np = audio_np / np.iinfo(np.int16).max

            # Transkribiere
            segments, _ = model.transcribe(audio_np, beam_size=5, language="de")
            
            # Verarbeite und gib das Ergebnis aus
            for segment in segments:
                text = segment.text.strip()
                if text and text != last_text:  # Nur neue, nicht-leere Segmente ausgeben
                    print(f"[{segment.start:.2f}s -> {segment.end:.2f}s] {text}")
                    last_text = text

    except KeyboardInterrupt:
        print("Stoppe...")
    finally:
        stream.stop_stream()
        stream.close()
        p.terminate()

if __name__ == '__main__':
    selected_device = select_microphone()
    send_audio(selected_device)
Ask Me Anything: Themenspecials