Programmiersprache – die neusten Beiträge

Warum funktioniert mein Code auf dem Raspberry Pi nicht?

Hallo,

Ich programmiere gerade einen Sprachassistenten und auf meinem Windows PC hat alles super funktioniert, aber als ich das Programm auf den Pi geladen und das Programm gestartet habe, kam diese Fehlermeldung:

Traceback (most recent call last):

 File "/home/grafjulian08/PycharmProjects/voiceAssistant/main.py", line 1164, in <module>

  execute()

 File "/home/grafjulian08/PycharmProjects/voiceAssistant/main.py", line 658, in execute

  if detect_wake_word(): # Falls das Wake-Word erkannt wurde

    ^^^^^^^^^^^^^^^^^^

 File "/home/grafjulian08/PycharmProjects/voiceAssistant/main.py", line 139, in detect_wake_word

  recognizer.adjust_for_ambient_noise(source) # Hintergrundgeräusche anpassen

  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

 File "/home/grafjulian08/PycharmProjects/voiceAssistant/.venv/lib/python3.11/site-packages/speech_recognition/__init__.py", line 389, in adjust_for_ambient_noise

  assert source.stream is not None, "Audio source must be entered before adjusting, see documentation for ``AudioSource``; are you using ``source`` outside of a ``with`` statement?"

      ^^^^^^^^^^^^^^^^^^^^^^^^^

AssertionError: Audio source must be entered before adjusting, see documentation for ``AudioSource``; are you using ``source`` outside of a ``with`` statement?

Ich habe ein gutes Mikrofon am Pi, welches auch funktioniert, und ich habe schon viel am Code geändert, aber es geht nicht weg. Woran kann das sonst liegen?

Wenn ich Teile meines Codes zeigen soll, könnt ihr das sagen.

Freundliche Grüsse

cmd, Code, künstliche Intelligenz, Programmiersprache, Python, Python 3, Raspberry Pi, Pycharm, ChatGPT

Python variable ändern (erhöhen oder verringern)?

Ich bin ein absoluter Anfänger was programmieren angeht, lerne aber immer mehr und mehr dazu. Ich möchte für etwas ein Python Script erstellen, was auf meinem Pi die ganze Zeit läuft und die MQTT Nachrichten mitliest, um diese auszuführen und/oder eine Nachricht zurück zu senden.

Ich habe versucht eine Nachricht zu senden der den wert der Variable um 1 erhöhen soll und damit auch die While schleife aktivieren soll. Jedoch funktioniert es nicht, da die variable nicht in "def on_message" verfügbar ist und es die Erhöhung quasi nicht nach außen austrägt.

Was gibt es für Möglichkeiten die variable zu erhöhen, sodass sich die while schleife aktiviert? Und gibt es auch andere Ansätze wie man eine diese Schleife machen kann?

Script:

import paho.mqtt.client as mqtt
import os
import subprocess
import time
import smbus2
import bme280

#Bme280_basic Temperature
# BME280 sensor address (default address)
address = 0x76
# Initialize I2C bus
bus = smbus2.SMBus(1)
# Load calibration parameters
calibration_params = bme280.load_calibration_params(bus, address)
# to activate loop
y = int(1)
#Temperature loop
while y == 2:
      data = bme280.sample(bus, address, calibration_params)

      # Extract temperature, pressure, and humidity
      temperature_celsius = data.temperature      
      # Print the readings
      print("Temperature: {:.2f} °C".format(temperature_celsius))
      # Wait for a few seconds before the next reading
      time.sleep(2)
      #print(y)
else:
      print("stopped") 
    
#Connection successfull
def on_connect(client, userdata, flags, rc):
  print("Connected to MQTT broker")


#Checking for messages to execute code
def on_message(client, userdata, msg):
    print(msg.topic+" "+str(msg.qos)+" "+str(msg.payload))
    if msg.payload.decode() == "temp_bme280_start":
        print("Calling script to for temperature start...")
        # activate loop by adding 1
        y += 1   
        print(y)
    if msg.payload.decode() == "temp_bme280_stop":
        print("Calling script to for temperature stop...")
        # deactivate loop by remove 1
        y -= 1  
        print(y)  

def on_subscribe(client, userdata, mid, granted_qos):
    print("Subscribed to topic : " + str(mid) +" with QoS" + str(granted_qos))

client = mqtt.Client()

client.username_pw_set( "userxxx" , "passwortxxx" )

client.connect( "192.16x.xxx.xxx", 1883, 60)

client.subscribe( "frame/monitor" , qos=1)

client.on_connect = on_connect

client.on_message = on_message

client.loop_forever()

Würde Chat GPT sowas lösen können?

Code, Programmiersprache, Python, Script, Python 3, Raspberry Pi, while-Schleife, ChatGPT

Wie kann ich die Porcupine Wake-Word detection verwenden?

Hallo,

ich programmiere gerade einen Sprachassistenten und wollte nun die Wake-Word Funktion hinzufügen. Das ist mein Code:

def wait_for_wake_word(recognizer, source):
    keyword_path = r"C:\Users\User\PycharmProjects\voiceAssistant\hey-Luna_de_windows_v3_0_0 (2)\hey-Luna_de_windows_v3_0_0.ppn"
    sensitivity = 0.5
    access_key = "..."

    handle = pvporcupine.create(keywords=[keyword_path], sensitivities=[sensitivity], access_key=access_key)

    if handle is None:
        print("Fehler beim Erstellen des Porcupine-Objekts. Überprüfe den Dateipfad und den Zugriffsschlüssel.")
        return

    audio = pyaudio.PyAudio()

    try:
        print("Warte auf das Wake-Word...")

        stream = audio.open(
            rate=handle.sample_rate,
            channels=1,
            format=pyaudio.paInt16,
            input=True,
            frames_per_buffer=handle.frame_length)

        while True:
            pcm = stream.read(handle.frame_length)
            pcm = pcm[0: handle.frame_length]

            keyword_index = handle.process(pcm)
            if keyword_index >= 0:
                print("Wake-Word 'Luna' erkannt!")
                break
    finally:
        if handle is not None:
            handle.delete()
        if stream is not None:
            stream.close()
        if audio is not None:
            audio.terminate()

Wenn ich es nun aber ausführe, kommt diese Fehlermeldung:

Traceback (most recent call last):

 File "C:\Users\User\PycharmProjects\voiceAssistant\main.py", line 1162, in <module>

  execute()

 File "C:\Users\User\PycharmProjects\voiceAssistant\main.py", line 671, in execute

  wait_for_wake_word(recognizer, source)

 File "C:\Users\User\PycharmProjects\voiceAssistant\main.py", line 121, in wait_for_wake_word

  handle = pvporcupine.create(keywords=[keyword_path], sensitivities=[sensitivity], access_key=access_key)

       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

 File "C:\Users\User\PycharmProjects\voiceAssistant\venv\interpreter\Lib\site-packages\pvporcupine\_factory.py", line 59, in create

  raise ValueError(

ValueError: One or more keywords are not available by default. Available default keywords are:\ngrapefruit, picovoice, terminator, americano, computer, hey siri, bumblebee, hey barista, ok google, alexa, hey google, blueberry, grasshopper, jarvis, porcupine, pico clock

Es liegt aber nicht an einem Rechtschreibfehler im Dateipfad oder im API Key. Woran kann es sonst liegen?

Freundliche Grüsse

cmd, Code, künstliche Intelligenz, Programmiersprache, Python, Python 3, Pycharm

Programmierung mit Arduino, Fehler?

Ich soll für die Schule einen Heißen Draht programmieren mit Arduino, dass bei der 1. und 2. Berührung ein grünes Licht an geht, und bei der Berührung ein Ton ertönt, bei der 3. Berührung ein gelbes Licht angeht und bei der Berührung ein Ton ertönt, bei der 4. Berührung ein Rotes Licht angeht und ein Ton ertönt bei der Berührung und ab der 5. Berührung ein das rote Licht an ist und der Ton durchgehend ertönt. Zudem soll ein Reset-Taster verbaut sein, der egal an welcher Stelle man ist, wieder das Spiel von Neu startet.

Das hätte ich bereits, nur leider klappt es noch nicht, kann mir jemand halfen

int LEDgr = 2;
int LEDge = 3;
int LEDro = 4; 
int Draht = 5;
int ton = 6;  
nt Reset = 7;
int x = 0;   
boolean Start1 = LOW; 
boolean Start2 = LOW;
void setup ()
{
     pinMode (LEDgr, OUTPUT);   
     pinMode (LEDge, OUTPUT);
     pinMode (LEDro, OUTPUT);
     pinMode (ton, OUTPUT);    
     pinMode (Draht, INPUT);  
     pinMode (Reset, INPUT);  
}
void loop() 
{
   if (digitalRead(Draht) == LOW)  
     {
       Start1 == HIGH; 
       }
   if (digitalRead(Draht)==LOW && (Start2 == LOW) && (Start1 ==HIGH)) 
     {
       x = x +1; 
       }
   if (digitalRead(Draht)==LOW&&(Start1 == HIGH))
     {
       Start2 == HIGH; 
     }
   if (digitalRead(Draht) == HIGH) 
     {
       Start2 == LOW; 
       }
   Start1 == LOW;   
   if (x<=2)  
     {
        digitalRead(LEDgr, HIGH) ;
digitalRead(Ton, HIGH);
       }
       else {
if (x == 3)    
      {
          digitalRead(LEDgr, LOW);
          digitalRead(LEDge,HIGH);
digitalRead(Ton, HIGH);
          
         }
       else {
      if (x == 4)     
     {
        digitalRead(LEDge, LOW);
        digitalRead(LEDro,HIGH); digitalRead(Ton, HIGH);
       }
       else {
     if (x >= 5)     
     {
        digitalRead(LEDro,HIGH);
        digitalRead(ton,HIGH); 
               }
             }
           }
         }
    if (digitalRead(Reset) == LOW)  
     {
       digitalWrite (LEDgr, LOW);
       digitalWrite (LEDge, LOW);
       digitalWrite (LEDro, LOW);
       digitalWrite (ton,LOW);
       x = 0; 
       } 
}
Arduino, Code, Programmiersprache, Arduino Uno, Arduino IDE

code verstehen aber nicht coden können?

ich habe informatik in der schule. Verständnis habe ich, aber wenn es dazu kommt dass ich selber coden soll ist alles falsch

ich soll ca. sowas schreiben:

public class Kurs {
    private Schueler[] schueler;

   
    public Kurs() {
        schueler = new Schueler[5];
        int[] noten = {5, 3, 4, 2, 3}; 
        for (int i = 0; i < 5; i++) { 
            schueler[i] = new Schueler("Schüler " + i, noten[i]); 
        }
    }

   
    public void alleNotenAusgeben() {
        for (int i = 0; i < schueler.length; i++) { 
            System.out.println(schueler[i].getName() + ": " + schueler[i].getNote()); 
        }
    }

    
    public void durchschnittAusgeben() {
        int summe = 0; 
        for (int i = 0; i < schueler.length; i++) { 
            summe += schueler[i].getNote(); 
        }
        double durchschnitt = summe*1.0 / schueler.length; // Berechnung des Durchschnitts
        System.out.println("Durchschnittsnote: " + durchschnitt); 
    }

    
    public void besteAusgeben() {
        int besteNote = 7; 
        String besterSchueler = ""; 
        for (int i = 0; i < schueler.length; i++) { 
            if (schueler[i].getNote() < besteNote) { 
                besteNote = schueler[i].getNote(); 
                besterSchueler = schueler[i].getName(); 
            }
        }
        System.out.println("Beste Note: " + besteNote + " von " + besterSchueler); // Ausgabe der besten Note und des Namens des besten Schülers
    }

} Wahrscheinlich ist das für euch Coding profis einfach, aber ich bin in der 10. Klasse und es ist jetzt nicht wirklich mein lieblingsfach. Ich versteh alles was dort gemacht wird, wie die Methode durchs Alley läuft, aber ich versteh auch irgendwie garnichts. ihr braucht mir das nicht zu erklären aber bitte helft mir wie ich mich verbessern soll

Java, Programmiersprache

Javascript für allgemein programmieren lernen?

Hallo,

ich lerne aktuell programmieren bzw. habe schon etwas Erfahrung. Ich habe etwas in c rein geschnuppert, da ich mit Platinen gearbeitet habe. Allerdings habe ich da das Problem, dass ich zwar Sachen zum Laufen bekomme, es aber sehr lang dauert bzw. es mir sehr schwer fällt eine Struktur in mein Programm zu bringen.
Was in c noch dazu kommt: Man kann nicht so richtig das "reine programmieren" üben, weil man nie weiß ob es ein Hardware oder Software Problem ist. Teilweise debugge ich sehr lange meinen Code, nur um dann irgendeinen Hardware Fehler zu
finden und umgedreht.
Mir ist auch klar, dass genau das c programmieren ausmacht. Aber ich möchte jetzt erstmal etwas besser in programmieren und strukturieren von Programmen werden.

Jetzt hatte ich auch ein kleines bisschen mit Python angefangen, da man das auch später mal für Scripte gebrauchen kann. Hier fehlt mir allerdings etwas der Antrieb. Ideen für größere Programme finde ich nicht so richtig im Netz.

Jetzt war meine Idee ein paar kleine Spiele, wie z.B. Snake/TicTacToe etc. zu programmieren. Mit einer UI ist das in Python aber wieder etwas Pain.

In Javacript bzw. HTML/CSS bekommt man ja sehr viel leichter eine UI hin.

Denkt ihr ich kann auch Javascript verwenden um einfach besser im programmieren zu werden? Oder was sind eure Erfahrungen, wie man c programmieren besser lernt?

Bin für alle Tipps offen, vielen Dank!

HTML, CSS, Programmiersprache, Python

Meistgelesene Beiträge zum Thema Programmiersprache