• Home
  • Inline Documentation
  • Private Doc
  • Search
  • Home
  • Inline Documentation
  • Private Doc
  • Search
  • 1 Praktische Relevanz und Innovationskraft
    • 1.1 Das Ziel des Projekts CulinAIbot
    • 1.2 Die praktische Relevanz von CulinAIBot
    • 1.3 Anwendungsfälle und Nutzung der Ergebnisse
    • 1.4 Innovationskraft
  • 2 Workflow und Eingesetzte Methoden
    • 2.1 Architektur
      • 2.1.1 Hardware
      • 2.1.2 Software
    • 2.2 Sprach Dialogsystem
      • 2.2.1 Spracherkennung und Sprachverarbeitung
        • 2.2.1.1 Daten
        • 2.2.1.2 KI-Modelle
      • 2.2.2 Spracherzeugung
        • 2.2.2.1 Daten
        • 2.2.2.2 KI-Modelle
    • 2.3 Bild- und Objekterkennung
      • 2.3.1 Daten
      • 2.3.2 KI-Modelle
    • 2.4 Multimodales Dialogmanagement: Kombination von Sprache und visuellen Daten
    • 2.5 Wahrnehmung und Kartierung
    • 2.6 Action Management
    • 2.7 Autonome Navigation und Mobilitätssystem
    • 2.8 Präzisionsmanipulation und Steuerung der Roboterarme
  • 3 Anwendungen und Ergebnisse
    • 3.1 Bilder des CulinAIBot
    • 3.2 Rezepte suchen und generieren
  • 4 Kritische Reflexion des Projekts
    • 4.1 Auswertung des Projekts
    • 4.2 Herausforderungen während der Umsetzung
    • 4.3 Potential des Projekts
    • 4.4 Schwachstellen des Projekts
    • 4.5 Nächste Schritte
  • 5 Programm Code
  • 6 Zusätzliche Daten
  • 7 Video Pitch
  • 8 Literaturverzeichnis
  • 9. Abkürzungsverzeichnis und Glossar
  • 10 Das Team

5 Programm Code

8 views 0[print-me printstyle="pom-small-grey" tag="span" id="2239" target=".title-content-print"]

Written by admin
September 20, 2024

Als Teil der BWKI Abgabe ich habe ich die folgenden Python Programme eingereicht:

  • CulianAIBot_Lebensmittelerkennung_Rezepterstellung.py
  • CulianAIBot_Lebensmittelerkennung_Rezepterstellung.py
  • CulinAIbot_Spracherkennung.py

import torch
from ultralytics import YOLO
import openai
import os
import pyaudio
import json
from vosk import Model, KaldiRecognizer

# OpenAI API-Key festlegen
openai.api_key = 'HIER_DEN_OPENAI_API_KEY_EINFUEGEN'

# Rezeptgenerierung mit Zutaten und Zubereitungsanleitung
def generate_recipe_with_instructions(prompt):
    response = openai.ChatCompletion.create(
        model="gpt-3.5-turbo",
        messages=[
            {"role": "system", "content": "You are a helpful kitchen assistant. Provide recipes with ingredients that need to be purchased and cooking instructions."},
            {"role": "user", "content": prompt},
        ]
    )
    
    # Antwort des Sprachmodells extrahieren
    full_response = response['choices'][0]['message']['content']
    
    # In der Antwort sollten die Zutaten und Zubereitungsschritte getrennt sein
    return full_response

# Initialisiere YOLO8 Modell
def initialize_yolo_model(model_path="CulinaiBot.pt"):
    model = YOLO(model_path)
    return model

# Objekterkennung mit YOLO8
def detect_objects(image_path, model):
    results = model(image_path)
    detected_items = results.names
    return detected_items

# PyAudio und VOSK initialisieren
def initialize_pyaudio_vosk(model_path="model"):
    if not os.path.exists(model_path):
        print("Bitte das VOSK-Modell herunterladen und den Pfad angeben.")
        exit(1)
    
    # Initialisiere VOSK-Modell
    vosk_model = Model(model_path)
    
    # Initialisiere PyAudio
    p = pyaudio.PyAudio()
    
    # Audioeinstellungen (z.B. 16000 Hz, 16-bit, Mono)
    stream = p.open(format=pyaudio.paInt16, channels=1, rate=16000, input=True, frames_per_buffer=8000)
    stream.start_stream()
    
    return vosk_model, stream, p

# Echtzeit-Spracherkennung mit PyAudio und VOSK
def transcribe_audio_stream(vosk_model, stream):
    recognizer = KaldiRecognizer(vosk_model, 16000)
    transcription = ""
    
    print("Spracherkennung läuft... Drücke Strg+C, um zu stoppen.")
    
    try:
        while True:
            data = stream.read(4000)
            if recognizer.AcceptWaveform(data):
                result = recognizer.Result()
                transcription += json.loads(result)["text"] + " "
    except KeyboardInterrupt:
        # Stoppt die Erkennung, wenn der Benutzer Strg+C drückt
        print("\nErkennung beendet.")
    
    return transcription.strip()

# Beispielaufgabe: Erkennung eines Bildes und Generierung eines Rezepts mit Zutaten und Anweisungen
def perform_task(image_path, yolo_model, vosk_model, stream):
    # Bildverarbeitung mit YOLO8
    detected_objects = detect_objects(image_path, yolo_model)
    
    # Spracherkennung in Echtzeit mit VOSK und PyAudio
    spoken_task = transcribe_audio_stream(vosk_model, stream)
    
    # Rezept generieren mit OpenAI basierend auf der Spracherkennung
    recipe_details = generate_recipe_with_instructions(spoken_task)
    
    return detected_objects, spoken_task, recipe_details

# Hauptfunktion
if __name__ == "__main__":
    # Initialisiere YOLO und VOSK mit PyAudio
    yolo_model = initialize_yolo_model("CulinaiBot.pt")
    vosk_model, stream, p = initialize_pyaudio_vosk("path_to_vosk_model")

    # Pfad zu einem Beispielbild (z.B. das Bild eines Apfels)
    image_path = "path_to_image.jpg"

    # Führe die Aufgabe aus
    detected_objects, transcription, recipe = perform_task(image_path, yolo_model, vosk_model, stream)

    # Ergebnisse ausgeben
    print(f"Erkannte Objekte: {detected_objects}")
    print(f"Transkribierter Text: {transcription}")
    print(f"Rezept mit Anleitung und Zutaten:\n{recipe}")

    # Audio-Stream und PyAudio beenden
    stream.stop_stream()
    stream.close()
    p.terminate()

Was this helpful?

Yes  No
Related Articles
  • 2.5 Wahrnehmung und Kartierung
  • 3.1 Bilder des CulinAIBot
  • 2.7 Autonome Navigation und Mobilitätssystem
  • 2.8 Präzisionsmanipulation und Steuerung der Roboterarme
  • 9. Abkürzungsverzeichnis und Glossar
  • 2.6 Action Management

No luck finding what you need? Contact Us

Leave A Comment Antworten abbrechen

Previously
4.5 Nächste Schritte
Up Next
6 Zusätzliche Daten
Copyright 2024 CulinAIBot.de. All Rights Reserved