ChatGPT Sprach Assistent

Hallo,

habe heute OpenAI installiert und den ChatGPT Assistenten. Wenn ich dies nun über Laptop testen möchte, werde ich immer darauf hingewiesen, dass ich kein HTTPS benutze und es könne dadurch nicht auf das Mikrofon zugegriffen werden.

Ich hatte ne Zeit lang https, bin aber wieder zurück, da ich die HA Cloud Nabu habe.

Wie muss ich nun vorgehen, dass ich es auch mit dem PC (Laptop) nutzen kann?

Ganz einfach,

Du musst Dich vom Laptop aus, auf die “externe” Verbindung über NabuCasa anmelden, dann klappt es.
Alternativ zum Testen einfach Text in Assist eingeben, das geht auch über http.

Hallo,

ich war überrascht, als ich in der Ankündigung des neuen Updates 2024.6.0 gelesen habe, dass (etwas) KI beim HA einzieht.

Hat von Euch das schon jemand ausprobiert und ist es wirklich hilfreich? Ist hierzu die HomeAssistant Cloud (NabuCasa) zwingend notwendig oder kann man dies auch ohne Abbo bei sich laufen lassen?

Grüße

Es gibt dazu bereits zahlreiche YT-Videos, da ist es ziemlich gut erklärt.
Vorab:
Bei mir mit der Nabu-Casa-Cloud funktioniert es sehr gut, es geht aber auch ohne
Nabu-Casa:

Danke für diese Links - damit habe ich bei mir die benötigten Ad-ons installiert und einrichten können.
Einzig am Punkt des “Billings” bin ich gescheitert. Muss man zwangsläufig eine der Varianten vom OpenAI abbonieren bzw. entstehen hier Kosten? Ich schaue bei den Angaben und der Vielfalt an verschiedenen Varianten nicht durch…

Es sind ein paar Cent die abgebucht werden du kannst dein chatgpt Konto mit 5 oder 10 Dollar auffüllen

Du kannst unabhängig von nabu casa lokal Verschlüsselung nutzen.

Habe ich bei mir laufen, trotz VPN und nabu Casa.

Ich hab 5$ auf mein Konto geladen, kostet incl. Steuern 5.95$ und mit dem aktuellen Wechselkurs €5.54.
Wichtig das automatische Nachladen deaktivieren.
Ich habe jetzt ein paar Tage „rumgespielt“ und seither nur 0.17$ verbraucht :smiley:

ok - danke für die Info. Damit habe ich ein Gefühl, was das an Kosten mit sich bringt. Die Infos auf der Homepage konnte ich nicht ein schätzen :smile:

Update:

OpenAI ist im vgl zum “StandardHA” schon besser - das System kann mit verschiedenen Sätzen gefüttert werden und erkennt was gemacht werden soll.
Im Haus habe ich mehrere Alexas, die wir bisher für die Steuerungen nutzen. Ich habe die Alexa mit dem HA verknüpft und über exakte Sprachbefehle, die bei Alexa hinterlegt sind, steuern wir z.B. die Rolläden.
Das ist immer etwas nervig, da man gerne vergisst, was genau hinterlegt wurde (Bsp.: auf die Frage: “Alexa, sind die Fenster zu” gibts keine Antwort; auf “Alexa, sind alle Fenster zu” gibts Feedback). Nun alle Fragemöglichkeiten bei Alexa einzutexten macht auch keine Freude.
Daher nun meine Frage - Gibt es eine Möglichkeit, die Alexaspracherkennung direkt (ohne den Kram dahinter) mit dem OpenAI des HA zu verknüpfen? Dann hätte man ein flott und meist richtig erkennendes “Speech->Text” und dahintergeschaltet die entsprechende logische Verknüpfung über OpenAI auf die Schnittstellen des HA. Das Beste aus zwei bzw. drei Welten… :thinking:

:crayon:by HarryP: Zusammenführung Doppelpost (bitte “bearbeiten” Funktion nutzen)

Eine Frage habe ich dabei: werden irgendwelche sicherheitsrelevanten Informationen vom HA an OpenAI übermittelt, oder ist das unkritisch. Ich habe bei keinem Video nur eine Silbe davon gehört.

Hallo, ich habe mich jetzt schon einige Tage mit dem Sprachassitenten Assist beschäftigt und denke schon, dass das alles auf dem richtigen Weg ist. Zunächst musste ich mir natürlich einiges Zubehör bestellen, ich habe derzeit hiefür in Betrieb:

  • ESP32 S3 Box 3
  • Wyoming Satelitte (auf alten Raspberry PI 3) mit Anker Lautsprecher und Micro
  • M5Stack Atom Echo

Alle drei funktionieren grundsätzlich wobei der Satelitte mit dem Anker Lautsprecher natürlich die deutlichste und lauteste Sprachausgabe hat. Die S3 Box ist schon recht zuverlässig und auch recht schnell, allerdings ein wenig leise. Der M5Stack ist sehr klein aber auch sehr leise, er versteht auch nicht so gut wie die anderen beiden.
Ich habe sowohl openai und googleai probiert, lokal funktioniert auch ist aber eingeschränkter, eigen wake word auf den devices funktionieren bislang bei mir noch nicht deswegen lasse ich das über HA laufen. Ich habe festgestellt das die Antworten bei google AI schneller sind als bei openai, openai ist dafür aber etwas besser. Manchmal schalten die KIs auch Unsinn, da muss man schon mal in den Logs schauen was gerade an bzw aus gegangen ist, aber das lässt sich durch Aliase an den ENtitäten verbessern. Was bislang noch nicht erkannt wird sind automationen mit festgelegten Sätzen und Antworten, aber im Prinzip auch nicht schlimm weil ich ja grundsätzlich von den vorgegeben Sätzen weg will.
Die eigene Wakewordentwicklung hat gut geklappt und gefühlt ist es so, dass das wakeword zunehmend besser verstanden wird.
Es funktioniert noch nicht so reibungslos wie Alexa, aber an Siri ist es dicht dran, ich glaube diese Entwicklung hat erhebliches potenzial und sehe perspektivisch schon, dass Alexa und Co dadurch verzichtbar wird.

2 „Gefällt mir“

Ergänzung zu meinem vorhergehenden Post.
Ich habe mittlerweile die Erfahrung gemacht, dass openAI durchaus einiges kostet. Ich hatte mir ein Budget von 20 Euro gegeben, das war dann in wenigen Tagen aufgebraucht. Ich nutze daher nun primär google AI. Mittlerweile muss ich sagen, dass es durchaus noch Entwicklungsbedarf gibt. Es wird doch recht häufig nicht bzw. falsch verstanden und daher dann die falsche Aktion ausgeführt. D.h. für mich das System (das LLM) muss geschult bzw. angelernt werden. Ich versuche das gerade mit dem prompts des Google AI Studios. Allerdings ist das für mich völliges Neuland also sehr viel trial and error. Gibt es andere die sich damit beschäftigen? Ich wäre dann an einem Erfahrungsaustausch sehr interessiert.
Bzgl. des erkennens der Sprachbefehle hat sich die ESP32 S3 Box 3 als zuverlässigste heraus gestellt. Da ist die Trefferquote recht hoch. Mit Abstand aber dann am zweiter Stelle kommt der M5Stack, der allerdings sehr leise ist. Daher habe ich ihn um einen Lautsprecher ergänzt, dadurch versteht man ihn nun deutlich besser… Der Wyoming Satelitte mit dem Anker Lautsprecher versteht nicht so gut und ist auch recht langsam. Erstaunlicherweise sind die Interpretationen und dadurch auch die Reaktionen der „Assets“ auch sehr unterschiedlich, obwohl sie grundsätzlich gleich aufgesetzt sind und auf das gleiche Assist zugreifen.

Hier mal wieder ein update, GPT 4.o war mir einfach zu teuer geworden und Google AI funktionierte nicht mehr richtig, weil ich die “intents” löschen musste. Nach langem Suchen habe ich dann die folgende Repository gefunden:
https://github.com/jekalmin/extended_openai_conversation
Das habe ich nun installiert und nutze es für Assist. Die Anwendung klappt gut mit got 3.5 turbo und ist dadurch deutlich günstiger. Nach ein wenig Feintuning habe ich nun ein System welches einigermassen stabil läuft (mit intents). Interessant ist, dass der “Assist” geschriebene Anweisungen viel klarer erkennt und auch befolgt. Da ist also noch eine Verbesserung beim Sprachassistenten erforderlich. Ich habe darüber hinaus inzwischen überwiegend den M5Atom in Verwendung, und zwar habe ich den nun so eingerichtet, dass die Ausgabe nicht mehr über den eigenen Lautsprecher sondern über einen von mir gewählten media.player erfolgt. Dadurch kann man ihn deutlich besser verstehen.
Das ganze funktioniert noch nicht so stabil und schnell wie Alexa, ich bin aber sehr optimistisch, dass dies über kurz oder lang möglich sein wird. Gibt’s weitere mit Erfahrungen zum Thema?

Hi Elbre,

das Thema mit der Spracherkennung war mir auch schon aufgefallen. Alexa kann das deutlich. Leider habe ich noch keine Möglichkeit gefunden, Alexa als speech → text für den HA zu gebrauchen. Der Nutzen von Alexa hätte (für mich und ggf. einige andere auch) den Vorteil, dass die Dinger im Haushalt schon überall rumstehen und man sofort auf eine extrem gute Spracherkennung zurückgreifen könnte.

Hallo,

ich nutze Alexa auch, Nachteil, 1. die Daten werden an Amazon übertragen und 2. es ist derzeit noch nicht von KI unterstützt, so dass sowohl die Eingabe als auch die Ausgabe relativ begrenzt ist. Durch Assist besteht grundsätzlich die Möglichkeit das ganze lokaler zu gestalten und die Aufforderung offener: z.B. Bei Alexa muss man z.B. sagen “Schalte das Deckenlicht in der Küche an” dann sollte das psezifische Licht angeschaltet werden. Bei Assist sollte auch folgende Formulierung klappen: “Am Herd ist es etwas dunkel, kannst Du das ändern” dann würde Assist das Licht entsprechend anschalten.
Aber wie gesagt es läuft noch nicht so ganz sicher und steckt noch in der Kinderschuhen.

Hi,

genau das Manko meine/kenne ich - Alexa kann sehr gut speech-to-text. Der Rest dahinter ist nicht so toll.
Daher meine Idee, Alexa nur als Speech-to-text (im Bild anstelle von fast-whisper) und die Verarbeitung dann im HA:

Dann könnte man das weitverbreitete und sehr gute Speech-to-text System Alexa im HA nutzen und nicht die Krückenlösung vgl. fast-whisper.

Ich bin sehr angetan von Chat GPT als Sprachassistent und das Geld für die API-Calls wäre mir das wert. Die Qualität des M5Atom finde ich weder in Bezug auf die Lautsprecher noch die Mikrofone tragbar. Am Liebsten hätte ich irgendetwas wie den Sonos oder eine meiner x-Alexas, jedoch dass der Sprachtransfer komplett über ChatGPT für HA läuft und Funktionen, wie Musik von Spotify abspielen dürfen auch nicht fehlen. Dafür will ich dann nur ein Aktivierungswort (wie Alexa oder Ok Nabu verwenden können.) Schade, dass es da noch keine Möglichkeit zu geben scheint.

Hallo,

ich habe ähnliche Erfahrungen mit dem M5 gemacht, ich würde ihn zur Zeit nicht empfehlen, mittlerweile funktioniert der Wyoming Sattelite am besten die ESP S3 Box geht auch nur der externe Lautsprecher klappt nnocht nicht

Eigenes Wakeword erstellen ist möglich, was ich nur noch nicht geschafft habe ist es das wakeword auf dem Gerät zu haben, das kommt aber ggf. kann das mit dem jüngsten ESP update gehen

Hallo, wie habt ihr es geschafft die Sprachausgabe des M5 Atom auf einen Alexa Speaker umzustellen?

Hi,

ich bin jetzt so weit, dass ich externe Lautsprecher wieder vom M5 ansprechbar sind, allerdings geht das nicht mit Alexa und Apple speakern, bei mir klappt es mit Sonos und Google.

Das ESPhome Script sieht dann so aus:

esphome:
  name: m5stack-atom-echo-30e6b0
  friendly_name: M5Stack WZ 30e6b0
  min_version: 2024.6.0
  name_add_mac_suffix: true
#  project:
#    name: m5stack.atom-echo-voice-assistant
#    version: "24.7.24"

esp32:
  board: m5stack-atom
  framework:
    type: esp-idf

logger:
api:
  encryption:
    key: !Secret API Key

ota:
  - platform: esphome
    id: ota_esphome
#  - platform: http_request
#    id: ota_http_request

# update:
#  - platform: http_request
#    id: update_http_request
#    name: Firmware
#    source: https://firmware.esphome.io/voice-assistant/m5stack-atom-echo/manifest.json

# http_request:

# dashboard_import:
#  package_import_url: github://esphome/firmware/voice-assistant/m5stack-atom-echo.adopted.yaml@main

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password
 #  on_connect:
#    - delay: 5s  # Gives time for improv results to be transmitted
#    - ble.disable:
#  on_disconnect:
#    - ble.enable:
  ap:

# improv_serial: 

# esp32_improv:
#  authorizer: none

button:
  - platform: safe_mode
    id: button_safe_mode
    name: Safe Mode Boot

  - platform: factory_reset
    id: factory_reset_btn
    name: Factory reset

i2s_audio:
  - id: i2s_audio_bus
    i2s_lrclk_pin: GPIO33
    i2s_bclk_pin: GPIO19

microphone:
  - platform: i2s_audio
    id: echo_microphone
    i2s_din_pin: GPIO23
    adc_type: external
    pdm: true

speaker:
  - platform: i2s_audio
    id: echo_speaker
    i2s_dout_pin: GPIO21  # GPIO21 speaker off, GPIO22 speaker on 
    dac_type: external
    mode: mono

voice_assistant:
  id: va
  microphone: echo_microphone
  speaker: echo_speaker
  noise_suppression_level: 2
  auto_gain: 31dBFS
  volume_multiplier: 2.0
  vad_threshold: 3
  on_listening:
    - light.turn_on:
        id: led
        blue: 100%
        red: 0%
        green: 0%
        effect: "Slow Pulse"
  on_stt_vad_end:
    - light.turn_on:
        id: led
        blue: 100%
        red: 0%
        green: 0%
        effect: "Fast Pulse"
  on_tts_start:
    - light.turn_on:
        id: led
        blue: 100%
        red: 0%
        green: 0%
        brightness: 100%
        effect: none
  on_tts_end:
     - homeassistant.service:
         service: media_player.play_media
         data:
           entity_id: media_player.google_home_esszimmer # <- this is hard-coded
           media_content_id: !lambda 'return x;'
           media_content_type: music
           announce: "true"
  on_end:
    - delay: 100ms
    - wait_until:
        not:
          speaker.is_playing:
    - script.execute: reset_led
  on_error:
    - light.turn_on:
        id: led
        red: 100%
        green: 0%
        blue: 0%
        brightness: 100%
        effect: none
    - delay: 1s
    - script.execute: reset_led
  on_client_connected:
    - if:
        condition:
          switch.is_on: use_wake_word
        then:
          - voice_assistant.start_continuous:
          - script.execute: reset_led
  on_client_disconnected:
    - if:
        condition:
          switch.is_on: use_wake_word
        then:
          - voice_assistant.stop:
          - light.turn_off: led
  on_timer_finished:
    - voice_assistant.stop:
    - switch.turn_on: timer_ringing
    - wait_until:
        not:
          microphone.is_capturing:
    - light.turn_on:
        id: led
        red: 0%
        green: 100%
        blue: 0%
        brightness: 100%
        effect: "Fast Pulse"
    - while:
        condition:
          switch.is_on: timer_ringing
        then:
          - lambda: id(echo_speaker).play(id(timer_finished_wave_file), sizeof(id(timer_finished_wave_file)));
          - delay: 1s
    - wait_until:
        not:
          speaker.is_playing:
    - light.turn_off: led
    - switch.turn_off: timer_ringing
    - if:
        condition:
          switch.is_on: use_wake_word
        then:
          - voice_assistant.start_continuous:
          - script.execute: reset_led  

binary_sensor:
  - platform: gpio
    pin:
      number: GPIO39
      inverted: true
    name: Button
    disabled_by_default: true
    entity_category: diagnostic
    id: echo_button
    on_multi_click:
      - timing:
          - ON for at least 50ms
          - OFF for at least 50ms
        then:
          - if:
              condition:
                switch.is_on: timer_ringing
              then:
                - switch.turn_off: timer_ringing
              else:
                - if:
                    condition:
                      switch.is_off: use_wake_word
                    then:
                      - if:
                          condition: voice_assistant.is_running
                          then:
                            - voice_assistant.stop:
                            - script.execute: reset_led
                          else:
                            - voice_assistant.start:
                    else:
                      - voice_assistant.stop
                      - delay: 1s
                      - script.execute: reset_led
                      - script.wait: reset_led
                      - voice_assistant.start_continuous:
      - timing:
          - ON for at least 10s
        then:
          - button.press: factory_reset_btn

light:
  - platform: esp32_rmt_led_strip
    id: led
    name: None
    disabled_by_default: true
    entity_category: config
    pin: GPIO27
    default_transition_length: 0s
    chipset: SK6812
    num_leds: 1
    rgb_order: grb
    rmt_channel: 0
    effects:
      - pulse:
          name: "Slow Pulse"
          transition_length: 250ms
          update_interval: 250ms
          min_brightness: 50%
          max_brightness: 100%
      - pulse:
          name: "Fast Pulse"
          transition_length: 100ms
          update_interval: 100ms
          min_brightness: 50%
          max_brightness: 100%

script:
  - id: reset_led
    then:
      - if:
          condition:
            - switch.is_on: use_wake_word
            - switch.is_on: use_listen_light
          then:
            - light.turn_on:
                id: led
                red: 100%
                green: 89%
                blue: 71%
                brightness: 60%
                effect: none
          else:
            - light.turn_off: led

switch:
  - platform: template
    name: Use wake word
    id: use_wake_word
    optimistic: true
    restore_mode: RESTORE_DEFAULT_ON
    entity_category: config
    on_turn_on:
      - lambda: id(va).set_use_wake_word(true);
      - if:
          condition:
            not:
              - voice_assistant.is_running
          then:
            - voice_assistant.start_continuous
      - script.execute: reset_led
    on_turn_off:
      - voice_assistant.stop
      - lambda: id(va).set_use_wake_word(false);
      - script.execute: reset_led
  - platform: template
    name: Use listen light
    id: use_listen_light
    optimistic: true
    restore_mode: RESTORE_DEFAULT_ON
    entity_category: config
    on_turn_on:
      - script.execute: reset_led
    on_turn_off:
      - script.execute: reset_led
  - platform: template
    id: timer_ringing
    optimistic: true
    internal: true
    restore_mode: ALWAYS_OFF
    on_turn_on:
      - delay: 15min
      - switch.turn_off: timer_ringing

external_components:
  - source: github://pr#5230
    components:
      - esp_adf
    refresh: 0s
  - source: github://jesserockz/esphome-components
    components: [file]
    refresh: 0s

esp_adf:

file:
  - id: timer_finished_wave_file
    file: https://github.com/esphome/firmware/raw/main/voice-assistant/sounds/timer_finished.wav

Gruß
Elmar

2 „Gefällt mir“