Code – die besten Beiträge

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

Kann mir jemand erklären warum diese Arduino Schaltung nicht richtig funktioniert? bzw. die Taster?

Ich habe btw Natürlich die Kabel richtig verbunden falls das jemand fragt weil ich den arduino ausgelassen habe

Code:

const int Taster1 = 1;  // Pin für den ersten Taster
const int Taster2 = 2;  // Pin für den zweiten Taster
const int Taster3 = 3;  // Pin für den dritten Taster

const int helligkeitsreglerPin = A5;  // Pin für den Helligkeitsregler
const int numLEDs = 8;
const int AmpelLEDs = 2;

int LEDs1[numLEDs] = {6, 7, 8, 9, 10, 11, 12, 13};  // Pins für die LEDs
int LEDs2[numLEDs] = {12, 10, 9, 7, 13, 11, 8, 6};  // Another pattern
int LEDrot[AmpelLEDs] = {10, 11};
int LEDgelb[AmpelLEDs] = {9, 8};
int LEDgruen[AmpelLEDs] = {7, 6};

void setup() {
  for (int i = 0; i < numLEDs; i++) {
    pinMode(LEDs1[i], OUTPUT);
    pinMode(LEDs2[i], OUTPUT);
  }

  gleichzeitigBlinken(LEDs1, 12, 13);
  delay(200);  // Warte 2 Sekunden
  gleichzeitigBlinken(LEDs1, 10, 11);
  delay(200);  // Warte 2 Sekunden
  gleichzeitigBlinken(LEDs1, 9, 8);
  delay(200);  // Warte 2 Sekunden
  gleichzeitigBlinken(LEDs1, 7, 6);
  delay(200);  // Warte 2 Sekunden
}

void loop() {
  if (digitalRead(Taster1) == HIGH) {
    Variation1(LEDs1);
    delay(1000);  // Entprellzeit
  }

  if (digitalRead(Taster2) == HIGH) {
    Variation2(LEDs2);
    delay(1000);  // Entprellzeit
  }

  if (digitalRead(Taster3) == HIGH) {
    ampelProgram(LEDrot, LEDgelb, LEDgruen);
    delay(1000);  // Entprellzeit
  }

  // Weitere Bedingungen für andere Programme hinzufügen, wenn nötig
}
void Variation1(int LEDs[]) {
  int brightness = analogRead(helligkeitsreglerPin) / 4;  // 0-1023 to 0-255
  for (int i = 0; i < numLEDs; i++) {
    analogWrite(LEDs[i], brightness);
    delay(200);                 // Beispiel: LED für 0,5 Sekunden einschalten
    analogWrite(LEDs[i], LOW);  // LED ausschalten
  }
}

void Variation2(int LEDs[]) {
  int brightness = analogRead(helligkeitsreglerPin) / 4;  // 0-1023 to 0-255
  for (int i = 0; i < numLEDs; i++) {
    analogWrite(LEDs[i], brightness);
    delay(200);                 // Beispiel: LED für 0,2 Sekunden einschalten
    analogWrite(LEDs[i], LOW);  // LED ausschalten
  }
}
void ampelProgram(int redLEDs[], int yellowLEDs[], int greenLEDs[]) {
  // Rote LEDs einschalten
  turnOnLEDs(redLEDs, AmpelLEDs);
  delay(200);  // Warte 2 Sekunden

  // Rote LEDs ausschalten
  turnOffLEDs(redLEDs, AmpelLEDs);

  // Gelbe LEDs einschalten
  turnOnLEDs(yellowLEDs, AmpelLEDs);
  delay(200);  // Warte 1 Sekunde

  // Gelbe LEDs ausschalten
  turnOffLEDs(yellowLEDs, AmpelLEDs);

  // Grüne LEDs einschalten
  turnOnLEDs(greenLEDs, AmpelLEDs);
  delay(200);  // Warte 2 Sekunden

  // Grüne LEDs ausschalten
  turnOffLEDs(greenLEDs, AmpelLEDs);
}

void turnOnLEDs(int leds[], int num) {
  for (int i = 0; i < num; i++) {
    analogWrite(leds[i], 255);  // Vollhelligkeit für die LEDs
  }
}

void turnOffLEDs(int leds[], int num) {
  for (int i = 0; i < num; i++) {
    analogWrite(leds[i], 0);  // LEDs ausschalten
  }
}

void gleichzeitigBlinken(int LEDs[], int pin1, int pin2) {
  for (int i = 0; i < numLEDs; i++) {
    if (i == pin1 || i == pin2) {
      digitalWrite(LEDs[i], HIGH);
    }
  }

  delay(200);  // Beispiel: LEDs für 1 Sekunde einschalten
  for (int i = 0; i < numLEDs; i++) {
    digitalWrite(LEDs[i], LOW);
  }
}
Bild zum Beitrag
Arduino, Code, Arduino Uno

Meistgelesene Beiträge zum Thema Code