{"id":1935,"date":"2026-04-08T20:44:40","date_gmt":"2026-04-08T20:44:40","guid":{"rendered":"http:\/\/sofapiano.com\/?page_id=1935"},"modified":"2026-05-25T09:01:10","modified_gmt":"2026-05-25T09:01:10","slug":"listening-trainer","status":"publish","type":"page","link":"https:\/\/sofapiano.com\/es\/listening-trainer\/","title":{"rendered":"Comprensi\u00f3n Auditiva"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"1935\" class=\"elementor elementor-1935\">\n\t\t\t\t<div class=\"elementor-element elementor-element-cb60c5c e-con-full e-flex e-con e-parent\" data-id=\"cb60c5c\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;,&quot;animation&quot;:&quot;none&quot;}\">\n\t\t<div class=\"elementor-element elementor-element-0672105 e-con-full animated-slow e-flex elementor-invisible e-con e-child\" data-id=\"0672105\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;,&quot;animation&quot;:&quot;slideInLeft&quot;,&quot;animation_delay&quot;:500}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-9239073 elementor-widget elementor-widget-heading\" data-id=\"9239073\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Listening Trainer<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-54ac7e6 elementor-widget__width-auto premium-modal-dismissible-yes elementor-widget elementor-widget-premium-addon-modal-box\" data-id=\"54ac7e6\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;premium_modal_box_animation&quot;:&quot;slideInLeft&quot;}\" data-widget_type=\"premium-addon-modal-box.default\">\n\t\t\t\t\t\n\t\t<div class=\"premium-modal-box-container\" data-settings=\"{&quot;trigger&quot;:&quot;button&quot;,&quot;show_on_exit&quot;:false}\">\n\t\t\t<div class=\"premium-modal-trigger-container\">\n\t\t\t\t\t\t\t\t\t<button data-toggle=\"premium-modal\" data-target=\"#premium-modal-54ac7e6\" type=\"button\" class=\"premium-modal-trigger-btn premium-btn-lg premium-button-none \" data-text=\"\">\n\n\t\t\t\t\t\t<svg class=\"svg-inline--fas-fa-info-circle premium-svg-nodraw\" aria-hidden=\"true\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewbox=\"0 0 512 512\"><path d=\"M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 110c23.196 0 42 18.804 42 42s-18.804 42-42 42-42-18.804-42-42 18.804-42 42-42zm56 254c0 6.627-5.373 12-12 12h-88c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h12v-64h-12c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h64c6.627 0 12 5.373 12 12v100h12c6.627 0 12 5.373 12 12v24z\"><\/path><\/svg>\n\t\t\t\t\t\t<div class=\"premium-button-text-icon-wrapper\">\n\t\t\t\t\t\t\t<span><\/span>\n\t\t\t\t\t\t<\/div>\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t<\/button>\n\t\t\t\t\t\t\t<\/div>\n\n\t\t\t<div id=\"premium-modal-54ac7e6\" class=\"premium-modal-box-modal\"\n\t\t\trole=\"dialog\"\n\t\t\tstyle=\"display: none\"\n\t\t\t>\n\t\t\t\t<div class=\"premium-modal-box-modal-dialog\" data-delay-animation=\"\" data-modal-animation=\"slideInLeft animated-\">\n\t\t\t\t\t\t\t\t\t\t\t<div class=\"premium-modal-box-modal-header\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"premium-modal-box-close-button-container\">\n\t\t\t\t\t\t\t\t\t<button type=\"button\" class=\"premium-modal-box-modal-close\" data-dismiss=\"premium-modal\">&times;<\/button>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t<div class=\"premium-modal-box-modal-body\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<h2 data-path-to-node=\"12\"><b data-path-to-node=\"12\" data-index-in-node=\"0\">How to Use the Listening Trainer<\/b><\/h2><p data-path-to-node=\"13\">Improve your German listening and writing skills:<\/p><ol start=\"1\" data-path-to-node=\"14\"><li><p data-path-to-node=\"14,0,0\"><b data-path-to-node=\"14,0,0\" data-index-in-node=\"0\">Listen:<\/b> Choose your level (A1-B2) and click <b data-path-to-node=\"14,0,0\" data-index-in-node=\"44\">\ud83d\udd0a Listen<\/b> to hear a German sentence.<\/p><\/li><li><p data-path-to-node=\"14,1,0\"><b data-path-to-node=\"14,1,0\" data-index-in-node=\"0\">Type:<\/b> Write exactly what you have heard in the text box.<\/p><\/li><li><p data-path-to-node=\"14,2,0\"><b data-path-to-node=\"14,2,0\" data-index-in-node=\"0\">Check:<\/b> Click <b data-path-to-node=\"14,2,0\" data-index-in-node=\"13\">\u2705 Check<\/b> to see your results. Correct words turn green; missing words turn red.<\/p><\/li><li><p data-path-to-node=\"14,3,0\"><b data-path-to-node=\"14,3,0\" data-index-in-node=\"0\">Stuck?<\/b> Use <b data-path-to-node=\"14,3,0\" data-index-in-node=\"11\">\ud83d\udca1 Hint<\/b> to reveal letters or <b data-path-to-node=\"14,3,0\" data-index-in-node=\"40\">\ud83d\udd04 Next<\/b> for a new challenge.<\/p><\/li><\/ol><p data-path-to-node=\"15\"><b data-path-to-node=\"15\" data-index-in-node=\"0\">Pro Tip:<\/b> Adjust the <b data-path-to-node=\"15\" data-index-in-node=\"20\">Voice Speed<\/b> slider to slow down the audio if the sentence is too fast!<\/p>\n\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-895477f e-con-full e-flex e-con e-child\" data-id=\"895477f\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-bddb16c elementor-widget elementor-widget-html\" data-id=\"bddb16c\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<div id=\"trainer-wrapper-fixed\">\n<div id=\"trainer-container-final\" class=\"trainer-app-scoped\">\n\n<style>\n#trainer-wrapper-fixed { all: initial; display: block; width: 100%; clear: both; }\n#trainer-container-final.trainer-app-scoped { display: block !important; text-align: center !important; max-width: 650px !important; margin: 20px auto !important; padding: 25px !important; font-family: 'Segoe UI', Roboto, Arial, sans-serif !important; background-color: #F4FEFF !important; border: 1px solid #d0eef0 !important; border-radius: 30px !important; box-shadow: 0 10px 30px rgba(0,0,0,0.05) !important; box-sizing: border-box !important; }\n#trainer-container-final .top-row { display: grid !important; grid-template-columns: 150px 1fr 130px !important; align-items: center !important; margin-bottom: 25px !important; width: 100% !important; gap: 5px !important; }\n#trainer-container-final .decent-group { display: flex !important; flex-direction: column !important; align-items: center !important; justify-content: center !important; white-space: nowrap !important; }\n#trainer-container-final .level-pills { display: flex !important; gap: 3px !important; margin-bottom: 5px !important; }\n#trainer-container-final .level-pill { padding: 4px 6px !important; font-size: 10px !important; font-weight: 700 !important; border-radius: 6px !important; cursor: pointer !important; background: rgba(255,255,255,0.7) !important; color: #6a8b8d !important; border: 1px solid rgba(0,0,0,0.05) !important; }\n#trainer-container-final .level-pill.active { background: #2d7ef7 !important; color: white !important; border-color: #2d7ef7 !important; }\n#trainer-container-final .speed-slider-container { display: flex !important; align-items: center !important; gap: 5px !important; width: 100% !important; max-width: 120px !important; margin-bottom: 5px !important; }\n#trainer-container-final .speed-text { font-size: 9px !important; color: #8da4a6 !important; font-weight: bold !important; }\n#trainer-container-final .speed-slider { flex-grow: 1 !important; height: 4px !important; cursor: pointer !important; accent-color: #2d7ef7 !important; width: 60px !important; }\n#trainer-container-final .label-tiny { font-size: 9px !important; font-weight: 700 !important; color: #8da4a6 !important; text-transform: uppercase !important; letter-spacing: 0.5px !important; }\n#trainer-container-final .main-buttons-group { display: flex !important; gap: 15px !important; justify-content: center !important; }\n#trainer-container-final .btn-icon { width: 55px !important; height: 55px !important; border-radius: 16px !important; font-size: 26px !important; cursor: pointer !important; background: #fff !important; display: flex !important; align-items: center !important; justify-content: center !important; border: 1px solid rgba(0,0,0,0.1) !important; transition: background-color 0.1s, transform 0.1s, color 0.1s !important; color: #444 !important; outline: none !important; }\n#trainer-container-final .active-flash { background-color: #2d7ef7 !important; color: white !important; transform: scale(0.92) !important; }\n#trainer-container-final .btn-audio-main { color: #2d7ef7 !important; border-color: rgba(45, 126, 247, 0.2) !important; }\n#trainer-container-final .btn-label { font-size: 10px !important; color: #6a8b8d !important; margin-top: 6px !important; font-weight: bold !important; text-transform: uppercase !important; }\n#trainer-container-final .input-area { width: 100% !important; height: 65px !important; font-size: 18px !important; padding: 15px !important; border-radius: 18px !important; border: 1px solid #c9e4e6 !important; background: #fff !important; text-align: center !important; margin-bottom: 10px !important; box-sizing: border-box !important; }\n#trainer-container-final .feedback-text { font-size: 20px !important; line-height: 1.6 !important; margin: 15px 0 !important; min-height: 32px !important; }\n#trainer-container-final .word { padding: 2px 5px !important; border-radius: 6px !important; margin: 0 2px !important; display: inline-block !important; }\n#trainer-container-final .correct { background: #c8e6c9 !important; color: #1b5e20 !important; }\n#trainer-container-final .missing { background: #ffcdd2 !important; color: #b71c1c !important; }\n#trainer-container-final .tip-word { background: #fff59d !important; color: #827717 !important; border-bottom: 2px solid #fbc02d !important; }\n\n#trainer-container-final .translation-section { margin-top: 15px !important; display: flex !important; flex-direction: column !important; align-items: center !important; gap: 10px !important; }\n#trainer-container-final #translateBtnWrapper { display: none; }\n#trainer-container-final .btn-flags { background: white !important; border: 1px solid #d0eef0 !important; padding: 10px 20px !important; border-radius: 50px !important; font-size: 13px !important; font-weight: 600 !important; color: #5d7d7f !important; cursor: pointer !important; box-shadow: 0 4px 10px rgba(0,0,0,0.03) !important; transition: all 0.2s !important; }\n#trainer-container-final .btn-flags:hover { transform: translateY(-2px) !important; box-shadow: 0 6px 15px rgba(0,0,0,0.06) !important; }\n#trainer-container-final .translation-box { font-size: 14px !important; color: #5d7d7f !important; padding: 15px !important; border-top: 1px solid #d0eef0 !important; display: none; background: rgba(255,255,255,0.6); border-radius: 15px; width: 100% !important; }\n#trainer-container-final .bottom-actions { display: flex !important; justify-content: center !important; gap: 20px !important; margin-top: 10px !important; }\n\n@media (max-width: 600px) {\n  #trainer-container-final .top-row { grid-template-columns: 1fr 1fr !important; gap: 10px !important; }\n  #trainer-container-final .main-buttons-group { grid-column: 1 \/ 3 !important; grid-row: 2 !important; margin-top: 10px !important; }\n}\n<\/style>\n\n<div class=\"unified-box\">\n  <div class=\"top-row\">\n    <div class=\"decent-group\">\n      <div class=\"level-pills\" id=\"levelContainer\">\n        <div class=\"level-pill\" data-value=\"A1\">A1<\/div>\n        <div class=\"level-pill active\" data-value=\"A2\">A2<\/div>\n        <div class=\"level-pill\" data-value=\"B1\">B1<\/div>\n        <div class=\"level-pill\" data-value=\"B2\">B2<\/div>\n      <\/div>\n      <div class=\"label-tiny\">Level<\/div>\n    <\/div>\n\n    <div class=\"main-buttons-group\">\n      <div class=\"control-item\">\n          <button class=\"btn-icon btn-audio-main\" id=\"playBtn\">\ud83d\udd0a<\/button>\n          <div class=\"btn-label\">Listen<\/div>\n      <\/div>\n      <div class=\"control-item\">\n          <button class=\"btn-icon\" id=\"nextBtn\">\ud83d\udd04<\/button>\n          <div class=\"btn-label\">Next<\/div>\n      <\/div>\n    <\/div>\n\n    <div class=\"decent-group\">\n      <div class=\"speed-slider-container\">\n        <span class=\"speed-text\">Slow<\/span>\n        <input type=\"range\" id=\"speedRate\" class=\"speed-slider\" min=\"0.4\" max=\"1.2\" step=\"0.1\" value=\"0.8\">\n        <span class=\"speed-text\">Fast<\/span>\n      <\/div>\n      <div class=\"label-tiny\">Voice Speed<\/div>\n    <\/div>\n  <\/div>\n\n  <textarea id=\"textIn\" class=\"input-area\" placeholder=\"Type what you hear...\"><\/textarea>\n  <div id=\"feedBack\" class=\"feedback-text\"><\/div>\n\n  <div class=\"translation-section\">\n    <div id=\"translateBtnWrapper\">\n        <button class=\"btn-flags\" id=\"translateBtn\">Show \ud83c\uddfa\ud83c\uddf8 \ud83c\uddea\ud83c\uddf8 Translation<\/button>\n    <\/div>\n    <div id=\"transBox\" class=\"translation-box\"><\/div>\n  <\/div>\n\n  <div class=\"bottom-actions\">\n    <div class=\"control-item\">\n        <button class=\"btn-icon\" id=\"hintBtn\">\ud83d\udca1<\/button>\n        <div class=\"btn-label\">Hint<\/div>\n    <\/div>\n    <div class=\"control-item\">\n        <button class=\"btn-icon\" id=\"checkBtn\">\u2705<\/button>\n        <div class=\"btn-label\">Check<\/div>\n    <\/div>\n  <\/div>\n<\/div>\n\n<script>\n(function(){\n    const SHEET_ID = '1jV4htReTIOu9qlcb_B-E9kDSU6o-igJLvfDfiChBucU';\n    const CSV_URL = `https:\/\/docs.google.com\/spreadsheets\/d\/${SHEET_ID}\/export?format=csv`;\n    const container = document.getElementById('trainer-container-final');\n    \n    let allSents = []; \n    let currSent = null;\n    let tLevel = 0;\n    let targetLevel = \"A2\";\n    const synth = window.speechSynthesis;\n\n    function addVisualFeedback(el) {\n        if (!el) return;\n        el.classList.add('active-flash');\n        setTimeout(() => el.classList.remove('active-flash'), 150);\n    }\n\n    function speak(textToSpeak) {\n        if (!textToSpeak) return;\n        synth.cancel(); \n        const u = new SpeechSynthesisUtterance(textToSpeak);\n        const voices = synth.getVoices();\n        \n        const preferredVoice = voices.find(v => \n            (v.lang.startsWith('de') && v.name.includes('Google')) || \n            (v.lang.startsWith('de') && v.name.includes('Stefan')) || \n            (v.lang.startsWith('de') && v.name.includes('Hedda')) ||\n            (v.lang.startsWith('de') && v.name.includes('Microsoft'))\n        );\n        \n        if (preferredVoice) u.voice = preferredVoice;\n        u.lang = \"de-DE\";\n        u.pitch = 1.0; \n        u.rate = parseFloat(container.querySelector(\"#speedRate\").value) || 0.95; \n        u.volume = 1.0;\n        \n        setTimeout(() => {\n            synth.speak(u);\n        }, 50);\n    }\n\n    if (synth.onvoiceschanged !== undefined) {\n        synth.onvoiceschanged = () => synth.getVoices();\n    }\n\n    async function load() {\n        try {\n            const r = await fetch(CSV_URL);\n            const txt = await r.text();\n            const rows = txt.split(\/\\r?\\n\/).slice(1); \n            allSents = rows.map(row => {\n                const c = row.split(\/,(?=(?:(?:[^\"]*\"){2})*[^\"]*$)\/); \n                return { \n                    lvl: c[0]?.replace(\/\"\/g, '').trim(), \n                    de:  c[3]?.replace(\/\"\/g, '').trim(), \n                    en:  c[4]?.replace(\/\"\/g, '').trim(), \n                    es:  c[5]?.replace(\/\"\/g, '').trim() \n                };\n            }).filter(s => s.de && s.de.length > 1);\n            newSent(false); \n        } catch (e) { console.error(\"Load error:\", e); }\n    }\n\n    function newSent(shouldSpeak = false){\n        tLevel = 0;\n        container.querySelector(\"#textIn\").value = \"\";\n        container.querySelector(\"#feedBack\").innerHTML = \"\";\n        container.querySelector(\"#transBox\").style.display = \"none\";\n        container.querySelector(\"#translateBtnWrapper\").style.display = \"none\";\n        \n        const fil = allSents.filter(s => s.lvl === targetLevel);\n        if(fil.length > 0) {\n            currSent = fil[Math.floor(Math.random() * fil.length)];\n            if(shouldSpeak) speak(currSent.de); \n        }\n    }\n\n    function check() {\n        if(!currSent) return;\n        const fb = container.querySelector(\"#feedBack\");\n        const val = container.querySelector(\"#textIn\").value.toLowerCase().replace(\/[.,!?]\/g,'').trim();\n        const userWords = val.split(\/\\s+\/);\n        fb.innerHTML = \"\";\n        currSent.de.split(\" \").forEach(word => {\n            const span = document.createElement(\"span\");\n            span.textContent = word + \" \";\n            const cleanWord = word.toLowerCase().replace(\/[.,!?]\/g,'');\n            span.className = \"word \" + (userWords.includes(cleanWord) ? \"correct\" : \"missing\");\n            fb.appendChild(span);\n        });\n        container.querySelector(\"#translateBtnWrapper\").style.display = \"block\";\n    }\n\n    function showTrans() {\n        if(!currSent) return;\n        const tb = container.querySelector(\"#transBox\");\n        tb.innerHTML = `\ud83c\uddfa\ud83c\uddf8 ${currSent.en}<br>\ud83c\uddea\ud83c\uddf8 ${currSent.es}`;\n        tb.style.display = \"block\";\n        container.querySelector(\"#translateBtnWrapper\").style.display = \"none\";\n    }\n\n    container.querySelectorAll(\".level-pill\").forEach(pill => {\n        pill.addEventListener('click', () => {\n            container.querySelectorAll(\".level-pill\").forEach(p => p.classList.remove(\"active\"));\n            pill.classList.add(\"active\");\n            targetLevel = pill.getAttribute(\"data-value\");\n            newSent(false);\n        });\n    });\n\n    container.querySelector(\"#playBtn\").onclick = function() { addVisualFeedback(this); if(currSent) speak(currSent.de); };\n    container.querySelector(\"#nextBtn\").onclick = function() { addVisualFeedback(this); newSent(false); }; \n    container.querySelector(\"#checkBtn\").onclick = function() { addVisualFeedback(this); check(); };\n    container.querySelector(\"#translateBtn\").onclick = function() { showTrans(); };\n    container.querySelector(\"#hintBtn\").onclick = function() {\n        addVisualFeedback(this);\n        if(!currSent) return;\n        tLevel++;\n        container.querySelector(\"#feedBack\").innerHTML = currSent.de.split(\" \").map(w => `<span class=\"word tip-word\">${w.slice(0, tLevel)}${tLevel < w.length ? '..' : ''}<\/span>`).join(\" \");\n        container.querySelector(\"#translateBtnWrapper\").style.display = \"block\";\n    };\n    \n    container.querySelector(\"#textIn\").onkeydown = (e) => { if(e.key === \"Enter\") { e.preventDefault(); check(); } };\n\n    load();\n})();\n<\/script>\n<\/div>\n<\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Listening Trainer &times; How to Use the Listening Trainer Improve your German listening and writing skills: Listen: Choose your level (A1-B2) and click \ud83d\udd0a Listen to hear a German sentence. Type: Write exactly what you have heard in the text box. Check: Click \u2705 Check to see your results. Correct words turn green; missing words [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-1935","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Listening Trainer - sofapiano<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/sofapiano.com\/es\/listening-trainer\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Listening Trainer - sofapiano\" \/>\n<meta property=\"og:description\" content=\"Listening Trainer &times; How to Use the Listening Trainer Improve your German listening and writing skills: Listen: Choose your level (A1-B2) and click \ud83d\udd0a Listen to hear a German sentence. Type: Write exactly what you have heard in the text box. Check: Click \u2705 Check to see your results. Correct words turn green; missing words [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/sofapiano.com\/es\/listening-trainer\/\" \/>\n<meta property=\"og:site_name\" content=\"sofapiano\" \/>\n<meta property=\"article:modified_time\" content=\"2026-05-25T09:01:10+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data1\" content=\"8 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/sofapiano.com\\\/listening-trainer\\\/\",\"url\":\"https:\\\/\\\/sofapiano.com\\\/listening-trainer\\\/\",\"name\":\"Listening Trainer - sofapiano\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/sofapiano.com\\\/#website\"},\"datePublished\":\"2026-04-08T20:44:40+00:00\",\"dateModified\":\"2026-05-25T09:01:10+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/sofapiano.com\\\/listening-trainer\\\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/sofapiano.com\\\/listening-trainer\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/sofapiano.com\\\/listening-trainer\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Start\",\"item\":\"https:\\\/\\\/sofapiano.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Listening Trainer\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/sofapiano.com\\\/#website\",\"url\":\"https:\\\/\\\/sofapiano.com\\\/\",\"name\":\"sofapiano\",\"description\":\"Learn German through translation\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/sofapiano.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Listening Trainer - sofapiano","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/sofapiano.com\/es\/listening-trainer\/","og_locale":"es_ES","og_type":"article","og_title":"Listening Trainer - sofapiano","og_description":"Listening Trainer &times; How to Use the Listening Trainer Improve your German listening and writing skills: Listen: Choose your level (A1-B2) and click \ud83d\udd0a Listen to hear a German sentence. Type: Write exactly what you have heard in the text box. Check: Click \u2705 Check to see your results. Correct words turn green; missing words [&hellip;]","og_url":"https:\/\/sofapiano.com\/es\/listening-trainer\/","og_site_name":"sofapiano","article_modified_time":"2026-05-25T09:01:10+00:00","twitter_card":"summary_large_image","twitter_misc":{"Tiempo de lectura":"8 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/sofapiano.com\/listening-trainer\/","url":"https:\/\/sofapiano.com\/listening-trainer\/","name":"Listening Trainer - sofapiano","isPartOf":{"@id":"https:\/\/sofapiano.com\/#website"},"datePublished":"2026-04-08T20:44:40+00:00","dateModified":"2026-05-25T09:01:10+00:00","breadcrumb":{"@id":"https:\/\/sofapiano.com\/listening-trainer\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/sofapiano.com\/listening-trainer\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/sofapiano.com\/listening-trainer\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Start","item":"https:\/\/sofapiano.com\/"},{"@type":"ListItem","position":2,"name":"Listening Trainer"}]},{"@type":"WebSite","@id":"https:\/\/sofapiano.com\/#website","url":"https:\/\/sofapiano.com\/","name":"sofapiano","description":"Aprende alem\u00e1n a trav\u00e9s de la traducci\u00f3n","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/sofapiano.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"}]}},"_links":{"self":[{"href":"https:\/\/sofapiano.com\/es\/wp-json\/wp\/v2\/pages\/1935","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sofapiano.com\/es\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/sofapiano.com\/es\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/sofapiano.com\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/sofapiano.com\/es\/wp-json\/wp\/v2\/comments?post=1935"}],"version-history":[{"count":6,"href":"https:\/\/sofapiano.com\/es\/wp-json\/wp\/v2\/pages\/1935\/revisions"}],"predecessor-version":[{"id":16173,"href":"https:\/\/sofapiano.com\/es\/wp-json\/wp\/v2\/pages\/1935\/revisions\/16173"}],"wp:attachment":[{"href":"https:\/\/sofapiano.com\/es\/wp-json\/wp\/v2\/media?parent=1935"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}