{"id":2576,"date":"2017-08-18T10:01:12","date_gmt":"2017-08-18T08:01:12","guid":{"rendered":"https:\/\/blog.mi.hdm-stuttgart.de\/?p=2576"},"modified":"2023-06-08T15:39:05","modified_gmt":"2023-06-08T13:39:05","slug":"2576","status":"publish","type":"post","link":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2017\/08\/18\/2576\/","title":{"rendered":"Setup your own Google Home with custom Hotwords"},"content":{"rendered":"<p>In this article, I will show you how to setup your own Google Home on your Raspberry Pi or any other Linux computer.<br \/>\nFurther, I will teach you how can create own triggers and hotwords for your assistant.<\/p>\n<p><a href=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2017\/08\/architecturesnowboy.png\"><img loading=\"lazy\" decoding=\"async\" data-attachment-id=\"2580\" data-permalink=\"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2017\/08\/18\/2576\/architecturesnowboy\/\" data-orig-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2017\/08\/architecturesnowboy.png\" data-orig-size=\"1032,547\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"architecturesnowboy\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2017\/08\/architecturesnowboy-1024x543.png\" class=\"alignnone wp-image-2580\" src=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2017\/08\/architecturesnowboy-300x159.png\" alt=\"\" width=\"638\" height=\"338\" srcset=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2017\/08\/architecturesnowboy-300x159.png 300w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2017\/08\/architecturesnowboy-768x407.png 768w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2017\/08\/architecturesnowboy-1024x543.png 1024w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2017\/08\/architecturesnowboy.png 1032w\" sizes=\"auto, (max-width: 638px) 100vw, 638px\" \/><\/a><\/p>\n<p><!--more--><\/p>\n<h2 id=\"hardware\">Hardware<\/h2>\n<p>Before we start, make sure you have connected a microphone and speakers to your device. A regular USB webcam will also do the trick.<\/p>\n<p>To check if the devices are actually connected we use the command:<\/p>\n<pre><code class=\"\" data-line=\"\">arecord -l\n<\/code><\/pre>\n<p>to check the microphone and<\/p>\n<pre><code class=\"\" data-line=\"\">aplay -l\n<\/code><\/pre>\n<p>for the speakers.<\/p>\n<p>At this point, it is important that you remember the card number and device number of the microphone and speaker you have chosen to use.<\/p>\n<p>This gained numbers we now have to write in our configuration file under <em>~\/.asoundrc<\/em>:<\/p>\n<pre><code class=\"\" data-line=\"\">pcm.!default {\n    type asym\n    playback.pcm {\n        type plug\n        slave.pcm &quot;hw:1,0&quot;\n    }\n    capture.pcm {\n        type plug\n        slave.pcm &quot;hw:0,0&quot;\n    }\n}\n<\/code><\/pre>\n<p><em>Where the two numbers after <strong>hw:<\/strong> are the card number followed by the device number and should be replaced by your own values<\/em><\/p>\n<p>More information about the ALSA sound configuration can be found <a href=\"https:\/\/wiki.ubuntuusers.de\/.asoundrc\/\">here<\/a><\/p>\n<p>Now you should be able to record sound with:<\/p>\n<pre><code class=\"\" data-line=\"\">rec test.wav\n<\/code><\/pre>\n<p>and hear your own voice with:<\/p>\n<pre><code class=\"\" data-line=\"\">play test.wav\n<\/code><\/pre>\n<h2 id=\"googleassistant\">Google Assistant<\/h2>\n<h3 id=\"googleapiregisteration\">Google API Registration<\/h3>\n<p>First, if you don&#8217;t have a Google account already, create one. After you are logged in to the google developer console, create a new project. Now we have to enable the <a href=\"https:\/\/console.developers.google.com\/apis\/api\/embeddedassistant.googleapis.com\/overview\">Assistant API<\/a>. Next, to create our OAuth ClientID we have to go <a href=\"https:\/\/console.developers.google.com\/apis\/credentials\/oauthclient\">here<\/a>. Select <strong>&#8220;Other&#8221;<\/strong> and when you finished download the json file, you can transfer it to your Raspberry Pi with:<\/p>\n<pre><code class=\"\" data-line=\"\">scp ~\/Downloads\/client_secret_client-id.json pi@raspberry-pi-ip-address:\/home\/pi\/\n<\/code><\/pre>\n<h3 id=\"installgoogleassistantlibrary\">Install Google Assistant Library<\/h3>\n<p>To download and install the libarary in a python3 enviroment we use the folling script:<\/p>\n<pre><code class=\"\" data-line=\"\">sudo apt-get update\nsudo apt-get install python3-dev python3-venv \npython3 -m venv env\nenv\/bin\/python -m pip install --upgrade pip setuptools\nsource env\/bin\/activate\npython -m pip install --upgrade google-assistant-library\npython -m pip install --upgrade google-auth-oauthlib[tool]\npython -m pip install --upgrade google-assistant-sdk[samples]\n<\/code><\/pre>\n<h3 id=\"authentificationwithgooglecloud\">Authentification with google cloud<\/h3>\n<p>Before we can use the assistant we first have to authorize our application. To do this we call:<\/p>\n<pre><code class=\"\" data-line=\"\">google-oauthlib-tool --client-secrets \/path\/to\/client_secret_client-id.json --scope https:\/\/www.googleapis.com\/auth\/assistant-sdk-prototype --save --headless\n<\/code><\/pre>\n<p>We will receive a code on a website that we have to enter in the terminal.<\/p>\n<h3 id=\"runthesample\">Run the sample<\/h3>\n<p>Once you authorized your application, you can now run the sample from google.<\/p>\n<pre><code class=\"\" data-line=\"\">google-assistant-demo\n<\/code><\/pre>\n<p>You now have built a regular google home and can trigger your running assistant with <em>&#8220;OK, Google&#8221;<\/em> or <em>&#8220;Hey, Google&#8221;<\/em>.<\/p>\n<h2 id=\"customtrigger\">Custom Trigger<\/h2>\n<p>Since we are building our Google Home on our own, we are open to customization. So we will create our own Trigger. While others use a button to trigger there Assistant, I still want to use voice. I just wasn&#8217;t so happy with the hotword, so I replaced it with something more sympathetic to me: <em>&#8220;Samantha&#8221;<\/em>, but you can choose anything you like.<\/p>\n<h3 id=\"snowboy\">Snowboy<\/h3>\n<p><a href=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2017\/08\/snowboylogo.png\"><img loading=\"lazy\" decoding=\"async\" data-attachment-id=\"2579\" data-permalink=\"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2017\/08\/18\/2576\/snowboylogo\/\" data-orig-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2017\/08\/snowboylogo.png\" data-orig-size=\"1200,270\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"snowboylogo\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2017\/08\/snowboylogo-1024x230.png\" class=\"alignnone wp-image-2579\" src=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2017\/08\/snowboylogo-300x68.png\" alt=\"\" width=\"697\" height=\"158\" srcset=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2017\/08\/snowboylogo-300x68.png 300w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2017\/08\/snowboylogo-768x173.png 768w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2017\/08\/snowboylogo-1024x230.png 1024w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2017\/08\/snowboylogo.png 1200w\" sizes=\"auto, (max-width: 697px) 100vw, 697px\" \/><\/a><br \/>\nTo create our own personal trained model for hotword detection we use the <a href=\"https:\/\/snowboy.kitt.ai\/\">Snowboy Engine<\/a><\/p>\n<h3 id=\"createhotword\">Create Hotword<\/h3>\n<p>Once you are logged in you have the option to choose a existing hotword or create your own.<br \/>\nIn any case, you will receive the model as the file to download. After downloading you also need to transfer this file to your Raspberry Pi.<\/p>\n<h3 id=\"python3support\">Python3 Support<\/h3>\n<p>Unfortunately, <a href=\"https:\/\/snowboy.kitt.ai\/\">Snowboy<\/a> just delivers executable binaries for Python 2. To work with our Python 3 Google Assistant Library we need to build the binary on our own. To do this we first clone the Snowboy GitHub repository:<\/p>\n<pre><code class=\"\" data-line=\"\">git clone https:\/\/github.com\/Kitt-AI\/snowboy.git\n<\/code><\/pre>\n<p>First, we have to make the snowboydetect.py file with swig in the directory <em>\/swig\/python3\/<\/em><\/p>\n<pre><code class=\"\" data-line=\"\">make\n<\/code><\/pre>\n<p><em>You need to have swig v3.0.10 or higher &#8211; if you are stuck read the comments of the Makefile<\/em><\/p>\n<p>After successful build you should be able to run the Snowboy sample under <em>examples\/Python3\/<\/em> with:<br \/>\n<code class=\"\" data-line=\"\">python demo.py your-trained-model.pmdl<\/code><\/p>\n<h3 id=\"triggergoogleassistantwithsnowboy\">Trigger Google Assistant with Snowboy<\/h3>\n<p>The Last step is to connect Snowboy with the Google Assistant. That means when Snowboy detects your hotword, it will activate the Google Assistant, so he starts listening immediately. You don&#8217;t need to say <em>&#8220;OK, Google&#8221;<\/em> anymore.<\/p>\n<p>First, we change the snowboy demo.py file to call the google library:<\/p>\n<pre><code class=\"\" data-line=\"\">import snowboydecoder\nimport sys\nimport signal\nfrom googlesamples.assistant.grpc.pushtotalk import main\ninterrupted = False\n\ndef signal_handler(signal, frame):\n    global interrupted\n    interrupted = True\n\ndef interrupt_callback():\n    global interrupted\n    return interrupted\n\nmodel = &quot;your-trained-model.pmdl&quot; \n\n# capture SIGINT signal, e.g., Ctrl+C\nsignal.signal(signal.SIGINT, signal_handler)\n\ndetector = snowboydecoder.HotwordDetector(model, sensitivity=0.5)\nprint(&#039;Listening... Press Ctrl+C to exit&#039;)\n\ndetector.start(detected_callback=main,\n               interrupt_check=interrupt_callback,\n               sleep_time=0.03)\n\ndetector.terminate()\n<\/code><\/pre>\n<p>After that, we modify the google library file at the end in you python environment under <em>\/env\/lib\/python3.5\/site-packages\/googlesamples\/assistant\/grpc\/pushtotalk.py<\/em> and replace following code at the end of the file<\/p>\n<pre><code class=\"\" data-line=\"\">wait_for_user_trigger = not once\nwhile True:\n    if wait_for_user_trigger:\n        click.pause(info=&#039;Press Enter to send a new request...&#039;)\n    continue_conversation = assistant.converse()\n<\/code><\/pre>\n<p>with<\/p>\n<pre><code class=\"\" data-line=\"\">wait_for_user_trigger = once\nwhile True:\n    if wait_for_user_trigger:\n        return\n    continue_conversation = assistant.converse()\n<\/code><\/pre>\n<p>Now you should be able to trigger you assistant with your own hotword by running the Snowboy <em>demo.py<\/em>.<\/p>\n<h3 id=\"conclusion\">Conclusion<\/h3>\n<p>I hope you got some inspiration for further experiments with the Google Assistant. Another interesting point is, for example, to jump straight into your own google voice app.<br \/>\nIf you want to know how to build a google voice application, check out my other post <a href=\"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2017\/08\/17\/build-a-serverless-google-home-app\/\">here<\/a><\/p>\n<p>Thanks for reading through my post. For feedback or questions feel free to contact me.<\/p>\n<h4 id=\"cheers\">Cheers!<\/h4>\n<h4 id=\"moritzgruber\">Moritz Gruber<\/h4>\n<p><a href=\"http:\/\/moritzgruber.me\">Website<\/a><\/p>\n<p><a href=\"https:\/\/github.com\/MoritzGruber\">Github<\/a><\/p>\n<p><a href=\"https:\/\/twitter.com\/movCode\">Twitter<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>In this article, I will show you how to setup your own Google Home on your Raspberry Pi or any other Linux computer. Further, I will teach you how can create own triggers and hotwords for your assistant.<\/p>\n","protected":false},"author":486,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[1,22,657],"tags":[],"ppma_author":[726],"class_list":["post-2576","post","type-post","status-publish","format-standard","hentry","category-allgemein","category-student-projects","category-teaching-and-learning"],"aioseo_notices":[],"jetpack_featured_media_url":"","jetpack-related-posts":[{"id":3933,"url":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2018\/08\/15\/anonymity\/","url_meta":{"origin":2576,"position":0},"title":"Preserving Anonymity","author":"David Bochan","date":"15. August 2018","format":false,"excerpt":"Since the amount and value of data are constantly increasing more and more data of each individual is collected and processed. Moreover Facebook's recent data leak with Cambridge Analytica shows that collected data cannot be absolutely securely treated and stored. In 2014 and 2015, the Facebook platform allowed an app\u2026","rel":"","context":"In &quot;Secure Systems&quot;","block_context":{"text":"Secure Systems","link":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/category\/system-designs\/secure-systems\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2018\/08\/identification_methods-1024x495.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2018\/08\/identification_methods-1024x495.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2018\/08\/identification_methods-1024x495.png?resize=525%2C300&ssl=1 1.5x"},"classes":[]},{"id":718,"url":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2016\/06\/28\/side-channel-attacks\/","url_meta":{"origin":2576,"position":1},"title":"Side-channel Attacks","author":"Daniel Grie\u00dfhaber","date":"28. June 2016","format":false,"excerpt":"This post will give you an introduction to Side-channel Attacks by looking at some common vulnerabilities and concrete attacks that try to exploit those. But first: What actually is a Side-channel attack in general? A Side-channel Attack is an attack on a system, most probably a \u201csecure\u201d system, that does\u2026","rel":"","context":"In &quot;Allgemein&quot;","block_context":{"text":"Allgemein","link":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/category\/allgemein\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":4147,"url":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2018\/08\/30\/using-the-power-of-google-cloud-api-a-dockerized-node-app-counting-words-in-prasentations\/","url_meta":{"origin":2576,"position":2},"title":"Using the power of google cloud API:  A dockerized node app counting words in prasentations.","author":"sd092","date":"30. August 2018","format":false,"excerpt":"For the Dev4Cloud lecture at HdM Stuttgart, we created a simple Go\/NodeJS\/React App, which helps people to keep track of often used words during presentations. In a presentation setting, most people tend to use too many fill words and to train against this, we want to introduce our presentation counter\u2026","rel":"","context":"In &quot;Allgemein&quot;","block_context":{"text":"Allgemein","link":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/category\/allgemein\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2018\/08\/aufbau.jpg?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2018\/08\/aufbau.jpg?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2018\/08\/aufbau.jpg?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2018\/08\/aufbau.jpg?resize=700%2C400&ssl=1 2x, https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2018\/08\/aufbau.jpg?resize=1050%2C600&ssl=1 3x, https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2018\/08\/aufbau.jpg?resize=1400%2C800&ssl=1 4x"},"classes":[]},{"id":1807,"url":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2017\/02\/16\/building-a-hdm-alexa-skill-part-1\/","url_meta":{"origin":2576,"position":3},"title":"Building a HdM Alexa Skill &#8211; Part 1","author":"Eric Schmidt","date":"16. February 2017","format":false,"excerpt":"We present our own HdM Alexa Skill and share the experience we gained throughout this project.","rel":"","context":"In &quot;Cloud Technologies&quot;","block_context":{"text":"Cloud Technologies","link":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/category\/scalable-systems\/cloud-technologies\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2017\/02\/chatbot.jpg?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2017\/02\/chatbot.jpg?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2017\/02\/chatbot.jpg?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2017\/02\/chatbot.jpg?resize=700%2C400&ssl=1 2x, https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2017\/02\/chatbot.jpg?resize=1050%2C600&ssl=1 3x"},"classes":[]},{"id":2493,"url":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2017\/07\/29\/spying-on-everyone-cheap-and-simple\/","url_meta":{"origin":2576,"position":4},"title":"Spying on everyone &#8211; Cheap and Simple","author":"mk297","date":"29. July 2017","format":false,"excerpt":"Introduction Espionage, or less formally \u201csyping\u201d has become a huge public topic in Summer 2013. Edward Snowden revealed that The American NSA (National Security Agency) and the allied Great Britain GCHQ (Government Communications Headquarters) are surveilling, storing and examing all network traffic in- and outbound the US and Great Britain.\u2026","rel":"","context":"In &quot;Allgemein&quot;","block_context":{"text":"Allgemein","link":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/category\/allgemein\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2023\/08\/nx4271_3.jpg?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2023\/08\/nx4271_3.jpg?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2023\/08\/nx4271_3.jpg?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2023\/08\/nx4271_3.jpg?resize=700%2C400&ssl=1 2x"},"classes":[]},{"id":1266,"url":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2016\/08\/02\/project-how-to-build-an-intelligent-mirror\/","url_meta":{"origin":2576,"position":5},"title":"[Project] How to build an intelligent mirror","author":"Matthias Schmidt","date":"2. August 2016","format":false,"excerpt":"Hello there, today we want to feature a project, we were working in the last semester. A Smart Mirror. It\u2019s not that new to build such a mirror and we\u2019re not the first who built one. We still wanted to do it in another way with another focus. Instead of\u2026","rel":"","context":"In &quot;Student Projects&quot;","block_context":{"text":"Student Projects","link":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/category\/student-projects\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]}],"jetpack_sharing_enabled":true,"authors":[{"term_id":726,"user_id":486,"is_guest":0,"slug":"mg166","display_name":"mg166@hdm-stuttgart.de","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/f9a93f52325d5f9d19f265bcb0374926406fe5ae7f28165e1955221e8593288e?s=96&d=mm&r=g","0":null,"1":"","2":"","3":"","4":"","5":"","6":"","7":"","8":""}],"_links":{"self":[{"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/posts\/2576","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/users\/486"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/comments?post=2576"}],"version-history":[{"count":7,"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/posts\/2576\/revisions"}],"predecessor-version":[{"id":24723,"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/posts\/2576\/revisions\/24723"}],"wp:attachment":[{"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/media?parent=2576"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/categories?post=2576"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/tags?post=2576"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/ppma_author?post=2576"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}