{
    "version": "https://jsonfeed.org/version/1",
    "title": "SceneMakerAI 블로그",
    "home_page_url": "https://doc.scenemaker.solbox.com/blog",
    "description": "SceneMakerAI 기술 블로그 — 오픈소스 AI로 방송 콘텐츠를 재가공하는 플랫폼 개발 이야기",
    "items": [
        {
            "id": "https://doc.scenemaker.solbox.com/blog/6",
            "content_html": "<ul>\n<li class=\"\">PPT 참고 및 코드 내용 입력</li>\n<li class=\"\">Langraph 가 뭐고, 워크플로우를 써본다</li>\n</ul>\n",
            "url": "https://doc.scenemaker.solbox.com/blog/6",
            "title": "07_Langgraph 기반 방송 워크플로우 설계",
            "summary": "- PPT 참고 및 코드 내용 입력",
            "date_modified": "2026-07-13T00:00:00.000Z",
            "tags": []
        },
        {
            "id": "https://doc.scenemaker.solbox.com/blog/5",
            "content_html": "<ul>\n<li class=\"\">PPT 참고 및 코드 내용 입력</li>\n<li class=\"\">자용자 질문울 어떻게 해석시키는지로 변경</li>\n</ul>\n",
            "url": "https://doc.scenemaker.solbox.com/blog/5",
            "title": "07_RAG 파이프라인 구축",
            "summary": "- PPT 참고 및 코드 내용 입력",
            "date_modified": "2026-07-13T00:00:00.000Z",
            "tags": []
        },
        {
            "id": "https://doc.scenemaker.solbox.com/blog/3",
            "content_html": "<p>(src/pipeline.py)<br>\n확인하여, 보정 전과 보정 후 비교</p>\n<!-- -->\n<ul>\n<li class=\"\">STT 이용 보정하여, 결과가 발달한 글을 작성한다.</li>\n<li class=\"\">1차 보정, 2차 보정 사진 첨부</li>\n</ul>",
            "url": "https://doc.scenemaker.solbox.com/blog/3",
            "title": "07_faster-whisper 한국어 음성인식 최적화 경험 공유",
            "summary": "(src/pipeline.py)",
            "date_modified": "2026-07-10T00:00:00.000Z",
            "author": {
                "name": "sbin",
                "url": "https://github.com/sb"
            },
            "tags": []
        },
        {
            "id": "https://doc.scenemaker.solbox.com/blog/4",
            "content_html": "<div class=\"theme-admonition theme-admonition-note admonition_xJq3 alert alert--secondary\"><div class=\"admonitionHeading_Gvgb\"><span class=\"admonitionIcon_Rf37\"><svg viewBox=\"0 0 14 16\"><path fill-rule=\"evenodd\" d=\"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z\"></path></svg></span>노트</div><div class=\"admonitionContent_BuS1\"><p>💡 이 글은 음성을 글자 변환  (Speech to Text) 하는 과정을 구체적으로 명시한 글이다</p></div></div>\n<!-- -->\n<p>음성 분석 과정을 가장 쉽게 요약하면</p>\n<ol>\n<li class=\"\">\n<p>소리를 입력</p>\n</li>\n<li class=\"\">\n<p>사람 말하는 구간 탐색 (VAD)</p>\n</li>\n<li class=\"\">\n<p>WhisperModel 도입</p>\n<ol>\n<li class=\"\">\n<p>소리를 텍스트로 변환 (STT)</p>\n</li>\n<li class=\"\">\n<p>어떤 언어인지 탐지 (LID)</p>\n</li>\n</ol>\n</li>\n<li class=\"\">\n<p>결과 json 으로 변환</p>\n</li>\n</ol>\n<p>이 정도다.</p>\n<!-- -->\n<p>최적화를 위한 여러 라이브러리가 존재하는 것을 파악하였고, 최종 Flow를 아래와 같이 하였다.</p>\n<div class=\"language-bash codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(220, 13%, 18%);--prism-color:hsl(220, 14%, 71%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-bash codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(220, 13%, 18%);color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><code class=\"codeBlockLines_e6Vv\"><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token comment\" style=\"color:hsl(220, 10%, 40%)\"># worker-prep_stt/main.py</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\" style=\"display:inline-block\"></span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\">run</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">(</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">)</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\"> ├ </span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">0</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">)</span><span class=\"token plain\"> _load_audio       오디오 로드 및 denoise</span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\"> ├ </span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">1</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">)</span><span class=\"token plain\"> vad.detect        발화 구간 </span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">(</span><span class=\"token plain\">Silero VAD</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">)</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\"> ├ 1b</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">)</span><span class=\"token plain\"> speaker.diarize  화자 구분 </span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">(</span><span class=\"token plain\">pyannote</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">)</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\"> ├ </span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">2</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">)</span><span class=\"token plain\"> _classify_languages  구간별 언어 판정 </span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">(</span><span class=\"token plain\">LID</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">)</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\"> ├ </span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">3</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">)</span><span class=\"token plain\"> _transcribe_batched  ◀── 여기가 진짜 음성→텍스트 </span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">(</span><span class=\"token plain\">ASR</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">)</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\"> ├ </span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">4</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">)</span><span class=\"token plain\"> _assemble_segments   단어→문장 재조립 + 화자 매핑</span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\"> └ </span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">5</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">)</span><span class=\"token plain\"> json 저장</span><br></div></code></pre></div></div>\n<p>그 중 발화 구간, 화자 구분, 언어 판정, ASR 과정을 각각 살펴보겠다</p>\n<hr>\n<h4 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"1-발화-구간-추출-vad\">1. 발화 구간 추출 (VAD)<a href=\"https://doc.scenemaker.solbox.com/blog/4#1-%EB%B0%9C%ED%99%94-%EA%B5%AC%EA%B0%84-%EC%B6%94%EC%B6%9C-vad\" class=\"hash-link\" aria-label=\"1. 발화 구간 추출 (VAD)에 대한 직접 링크\" title=\"1. 발화 구간 추출 (VAD)에 대한 직접 링크\" translate=\"no\">​</a></h4>\n<ul>\n<li class=\"\">간단히 요약하면, <strong>사람이 말하는 부분을 추출하는 공간</strong> 이다.</li>\n</ul>\n<div class=\"language-python codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(220, 13%, 18%);--prism-color:hsl(220, 14%, 71%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-python codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(220, 13%, 18%);color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><code class=\"codeBlockLines_e6Vv\"><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\"> model</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">=</span><span class=\"token string\" style=\"color:hsl(95, 38%, 62%)\">\"silero_vad\"</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\" style=\"display:inline-block\"></span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\"> </span><span class=\"token comment\" style=\"color:hsl(220, 10%, 40%)\"># lib/audio/vad.py</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\"> </span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\"></span><span class=\"token keyword\" style=\"color:hsl(286, 60%, 67%)\">def</span><span class=\"token plain\"> </span><span class=\"token function\" style=\"color:hsl(207, 82%, 66%)\">detect</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">(</span><span class=\"token plain\">audio_np</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">:</span><span class=\"token plain\"> np</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">.</span><span class=\"token plain\">ndarray</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">,</span><span class=\"token plain\"> sr</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">:</span><span class=\"token plain\"> </span><span class=\"token builtin\" style=\"color:hsl(95, 38%, 62%)\">int</span><span class=\"token plain\"> </span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">=</span><span class=\"token plain\"> </span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">16000</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">)</span><span class=\"token plain\"> </span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">-</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">&gt;</span><span class=\"token plain\"> </span><span class=\"token builtin\" style=\"color:hsl(95, 38%, 62%)\">list</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">[</span><span class=\"token builtin\" style=\"color:hsl(95, 38%, 62%)\">tuple</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">[</span><span class=\"token builtin\" style=\"color:hsl(95, 38%, 62%)\">float</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">,</span><span class=\"token plain\"> </span><span class=\"token builtin\" style=\"color:hsl(95, 38%, 62%)\">float</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">]</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">]</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">:</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\">    </span><span class=\"token triple-quoted-string string\" style=\"color:hsl(95, 38%, 62%)\">\"\"\"발화 구간 타임스탬프 추출.</span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token triple-quoted-string string\" style=\"display:inline-block;color:hsl(95, 38%, 62%)\"></span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token triple-quoted-string string\" style=\"color:hsl(95, 38%, 62%)\">    audio_np : float32 1D numpy (16kHz 권장)</span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token triple-quoted-string string\" style=\"color:hsl(95, 38%, 62%)\">    sr       : 샘플레이트 (Silero VAD 는 16k / 8k 만 공식 지원)</span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token triple-quoted-string string\" style=\"display:inline-block;color:hsl(95, 38%, 62%)\"></span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token triple-quoted-string string\" style=\"color:hsl(95, 38%, 62%)\">    Returns: [(start_sec, end_sec), ...]  — 발화 구간 (정렬됨)</span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token triple-quoted-string string\" style=\"color:hsl(95, 38%, 62%)\">    \"\"\"</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\" style=\"display:inline-block\"></span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\">    audio_t </span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">=</span><span class=\"token plain\"> torch</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">.</span><span class=\"token plain\">from_numpy</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">(</span><span class=\"token plain\">audio_np</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">)</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">.</span><span class=\"token builtin\" style=\"color:hsl(95, 38%, 62%)\">float</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">(</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">)</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\">    ts_list </span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">=</span><span class=\"token plain\"> _get_speech_timestamps</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">(</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\">        audio_t</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">,</span><span class=\"token plain\"> _model</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">,</span><span class=\"token plain\"> sampling_rate</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">=</span><span class=\"token plain\">sr</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">,</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\">        min_speech_duration_ms</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">=</span><span class=\"token builtin\" style=\"color:hsl(95, 38%, 62%)\">int</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">(</span><span class=\"token plain\">MIN_SPEECH_S </span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">*</span><span class=\"token plain\"> </span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">1000</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">)</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">,</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\">        max_speech_duration_s</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">=</span><span class=\"token plain\">MAX_SPEECH_S</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">,</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\">        min_silence_duration_ms</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">=</span><span class=\"token builtin\" style=\"color:hsl(95, 38%, 62%)\">int</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">(</span><span class=\"token plain\">MIN_SILENCE_S </span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">*</span><span class=\"token plain\"> </span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">1000</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">)</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">,</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\">    </span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">)</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\">    </span><span class=\"token keyword\" style=\"color:hsl(286, 60%, 67%)\">return</span><span class=\"token plain\"> </span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">[</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">(</span><span class=\"token plain\">t</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">[</span><span class=\"token string\" style=\"color:hsl(95, 38%, 62%)\">\"start\"</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">]</span><span class=\"token plain\"> </span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">/</span><span class=\"token plain\"> sr</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">,</span><span class=\"token plain\"> t</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">[</span><span class=\"token string\" style=\"color:hsl(95, 38%, 62%)\">\"end\"</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">]</span><span class=\"token plain\"> </span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">/</span><span class=\"token plain\"> sr</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">)</span><span class=\"token plain\"> </span><span class=\"token keyword\" style=\"color:hsl(286, 60%, 67%)\">for</span><span class=\"token plain\"> t </span><span class=\"token keyword\" style=\"color:hsl(286, 60%, 67%)\">in</span><span class=\"token plain\"> ts_list</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">]</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\">    </span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\">    </span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\" style=\"display:inline-block\"></span><br></div></code></pre></div></div>\n<ul>\n<li class=\"\">\n<p>사람이 말하는 구간을 찾아내고, 샘플링 레이트를 16kHz 로 설정시키는 과정</p>\n<ul>\n<li class=\"\">Silero VAD가 <strong>샘플 번호</strong> 로 주는 걸, <code>÷16000</code> 해서 <strong>초 단위</strong> 로 바꿔 반환</li>\n</ul>\n</li>\n<li class=\"\">\n<p>구체적 입출력</p>\n<div class=\"language-python codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(220, 13%, 18%);--prism-color:hsl(220, 14%, 71%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-python codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(220, 13%, 18%);color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><code class=\"codeBlockLines_e6Vv\"><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\">입력</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">:</span><span class=\"token plain\">  </span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">[</span><span class=\"token plain\">침묵····말·······침묵··말말····침묵</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">]</span><span class=\"token plain\">  ← 소리 배열         </span><span class=\"token comment\" style=\"color:hsl(220, 10%, 40%)\"># np.ndarray (float32 1D)</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\">출력</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">:</span><span class=\"token plain\">  </span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">[</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">(</span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">2.1</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">,</span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">5.8</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">)</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">,</span><span class=\"token plain\"> </span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">(</span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">40.3</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">,</span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">47.2</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">)</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">,</span><span class=\"token plain\"> </span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">.</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">.</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">.</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">]</span><span class=\"token plain\">         ← 말하는 구간 시각만 </span><span class=\"token comment\" style=\"color:hsl(220, 10%, 40%)\"># list[tuple[float, float]]</span><br></div></code></pre></div></div>\n</li>\n</ul>\n<hr>\n<h4 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"2-화자-분리\">2. 화자 분리<a href=\"https://doc.scenemaker.solbox.com/blog/4#2-%ED%99%94%EC%9E%90-%EB%B6%84%EB%A6%AC\" class=\"hash-link\" aria-label=\"2. 화자 분리에 대한 직접 링크\" title=\"2. 화자 분리에 대한 직접 링크\" translate=\"no\">​</a></h4>\n<ul>\n<li class=\"\">하나의 영상에는 다양한 사람이 나오고, 그 사람들의 목소리는 당연히 다르다.</li>\n<li class=\"\"><strong>이번엔</strong> <strong>화자를 구분 시키는 부분</strong> 이다. 오픈소스 라이브러리.  pyannotate 도입하였다.</li>\n</ul>\n<div class=\"language-python codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(220, 13%, 18%);--prism-color:hsl(220, 14%, 71%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-python codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(220, 13%, 18%);color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><code class=\"codeBlockLines_e6Vv\"><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\"> PYANNOTE_DIARIZE </span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">=</span><span class=\"token plain\">  </span><span class=\"token string\" style=\"color:hsl(95, 38%, 62%)\">\"pyannote-diarization\"</span><span class=\"token plain\">  </span><span class=\"token comment\" style=\"color:hsl(220, 10%, 40%)\"># 화자 구분 (community-1, self-contained)</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\"> </span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\"> </span><span class=\"token comment\" style=\"color:hsl(220, 10%, 40%)\"># lib/audio/speaker.py</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\" style=\"display:inline-block\"></span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\"> </span><span class=\"token keyword\" style=\"color:hsl(286, 60%, 67%)\">def</span><span class=\"token plain\"> </span><span class=\"token function\" style=\"color:hsl(207, 82%, 66%)\">diarize</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">(</span><span class=\"token plain\">audio_np</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">:</span><span class=\"token plain\"> np</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">.</span><span class=\"token plain\">ndarray</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">,</span><span class=\"token plain\"> sr</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">:</span><span class=\"token plain\"> </span><span class=\"token builtin\" style=\"color:hsl(95, 38%, 62%)\">int</span><span class=\"token plain\"> </span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">=</span><span class=\"token plain\"> </span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">16000</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">)</span><span class=\"token plain\"> </span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">-</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">&gt;</span><span class=\"token plain\"> </span><span class=\"token builtin\" style=\"color:hsl(95, 38%, 62%)\">list</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">[</span><span class=\"token builtin\" style=\"color:hsl(95, 38%, 62%)\">tuple</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">[</span><span class=\"token builtin\" style=\"color:hsl(95, 38%, 62%)\">float</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">,</span><span class=\"token plain\"> </span><span class=\"token builtin\" style=\"color:hsl(95, 38%, 62%)\">float</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">,</span><span class=\"token plain\"> </span><span class=\"token builtin\" style=\"color:hsl(95, 38%, 62%)\">str</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">]</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">]</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">:</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\">    </span><span class=\"token triple-quoted-string string\" style=\"color:hsl(95, 38%, 62%)\">\"\"\"화자 턴 타임라인 추출.</span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token triple-quoted-string string\" style=\"display:inline-block;color:hsl(95, 38%, 62%)\"></span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token triple-quoted-string string\" style=\"color:hsl(95, 38%, 62%)\">    audio_np : float32 1D numpy (16k mono)</span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token triple-quoted-string string\" style=\"color:hsl(95, 38%, 62%)\">    Returns  : [(start_s, end_s, speaker_label), ...]  (시간순)</span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token triple-quoted-string string\" style=\"color:hsl(95, 38%, 62%)\">    \"\"\"</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\">    </span><span class=\"token comment\" style=\"color:hsl(220, 10%, 40%)\">#...</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\">    </span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\">    waveform </span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">=</span><span class=\"token plain\"> torch</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">.</span><span class=\"token plain\">from_numpy</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">(</span><span class=\"token plain\">audio_np</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">)</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">.</span><span class=\"token plain\">unsqueeze</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">(</span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">0</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">)</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">.</span><span class=\"token plain\">to</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">(</span><span class=\"token plain\">_device</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">)</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\">    out </span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">=</span><span class=\"token plain\"> _pipeline</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">(</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">{</span><span class=\"token string\" style=\"color:hsl(95, 38%, 62%)\">\"waveform\"</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">:</span><span class=\"token plain\"> waveform</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">,</span><span class=\"token plain\"> </span><span class=\"token string\" style=\"color:hsl(95, 38%, 62%)\">\"sample_rate\"</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">:</span><span class=\"token plain\"> sr</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">}</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">)</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\">    </span><span class=\"token comment\" style=\"color:hsl(220, 10%, 40%)\"># pyannote 4.x: DiarizeOutput.speaker_diarization 이 Annotation</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\">    turns </span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">=</span><span class=\"token plain\"> </span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">[</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\">        </span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">(</span><span class=\"token plain\">turn</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">.</span><span class=\"token plain\">start</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">,</span><span class=\"token plain\"> turn</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">.</span><span class=\"token plain\">end</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">,</span><span class=\"token plain\"> speaker</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">)</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\">        </span><span class=\"token keyword\" style=\"color:hsl(286, 60%, 67%)\">for</span><span class=\"token plain\"> turn</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">,</span><span class=\"token plain\"> _</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">,</span><span class=\"token plain\"> speaker </span><span class=\"token keyword\" style=\"color:hsl(286, 60%, 67%)\">in</span><span class=\"token plain\"> out</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">.</span><span class=\"token plain\">speaker_diarization</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">.</span><span class=\"token plain\">itertracks</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">(</span><span class=\"token plain\">yield_label</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">=</span><span class=\"token boolean\" style=\"color:hsl(29, 54%, 61%)\">True</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">)</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\">    </span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">]</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\">    log</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">.</span><span class=\"token plain\">info</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">(</span><span class=\"token string-interpolation string\" style=\"color:hsl(95, 38%, 62%)\">f\"diarization: </span><span class=\"token string-interpolation interpolation punctuation\" style=\"color:hsl(220, 14%, 71%)\">{</span><span class=\"token string-interpolation interpolation builtin\" style=\"color:hsl(95, 38%, 62%)\">len</span><span class=\"token string-interpolation interpolation punctuation\" style=\"color:hsl(220, 14%, 71%)\">(</span><span class=\"token string-interpolation interpolation\">turns</span><span class=\"token string-interpolation interpolation punctuation\" style=\"color:hsl(220, 14%, 71%)\">)</span><span class=\"token string-interpolation interpolation punctuation\" style=\"color:hsl(220, 14%, 71%)\">}</span><span class=\"token string-interpolation string\" style=\"color:hsl(95, 38%, 62%)\"> turns, </span><span class=\"token string-interpolation interpolation punctuation\" style=\"color:hsl(220, 14%, 71%)\">{</span><span class=\"token string-interpolation interpolation builtin\" style=\"color:hsl(95, 38%, 62%)\">len</span><span class=\"token string-interpolation interpolation punctuation\" style=\"color:hsl(220, 14%, 71%)\">(</span><span class=\"token string-interpolation interpolation builtin\" style=\"color:hsl(95, 38%, 62%)\">set</span><span class=\"token string-interpolation interpolation punctuation\" style=\"color:hsl(220, 14%, 71%)\">(</span><span class=\"token string-interpolation interpolation\">t</span><span class=\"token string-interpolation interpolation punctuation\" style=\"color:hsl(220, 14%, 71%)\">[</span><span class=\"token string-interpolation interpolation number\" style=\"color:hsl(29, 54%, 61%)\">2</span><span class=\"token string-interpolation interpolation punctuation\" style=\"color:hsl(220, 14%, 71%)\">]</span><span class=\"token string-interpolation interpolation\"> </span><span class=\"token string-interpolation interpolation keyword\" style=\"color:hsl(286, 60%, 67%)\">for</span><span class=\"token string-interpolation interpolation\"> t </span><span class=\"token string-interpolation interpolation keyword\" style=\"color:hsl(286, 60%, 67%)\">in</span><span class=\"token string-interpolation interpolation\"> turns</span><span class=\"token string-interpolation interpolation punctuation\" style=\"color:hsl(220, 14%, 71%)\">)</span><span class=\"token string-interpolation interpolation punctuation\" style=\"color:hsl(220, 14%, 71%)\">)</span><span class=\"token string-interpolation interpolation punctuation\" style=\"color:hsl(220, 14%, 71%)\">}</span><span class=\"token string-interpolation string\" style=\"color:hsl(95, 38%, 62%)\"> speakers\"</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">)</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\">    </span><span class=\"token keyword\" style=\"color:hsl(286, 60%, 67%)\">return</span><span class=\"token plain\"> turns</span><br></div></code></pre></div></div>\n<p><img decoding=\"async\" loading=\"lazy\" alt=\"image\" src=\"https://doc.scenemaker.solbox.com/assets/images/img-00-721abf8b1b8069c8e17be757ef62be22.png\" width=\"1280\" height=\"197\" class=\"img_ev3q\"></p>\n<ul>\n<li class=\"\">구체적 입출력\n<div class=\"language-python codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(220, 13%, 18%);--prism-color:hsl(220, 14%, 71%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-python codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(220, 13%, 18%);color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><code class=\"codeBlockLines_e6Vv\"><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\">입력</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">:</span><span class=\"token plain\"> 오디오 전체</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">,</span><span class=\"token plain\"> 16kHz Float 배열</span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\" style=\"display:inline-block\"></span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\">출력</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">:</span><span class=\"token plain\"> 화자 구분</span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\"></span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">[</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\">    </span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">(</span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">0.0</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">,</span><span class=\"token plain\">   </span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">5.8</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">,</span><span class=\"token plain\">  </span><span class=\"token string\" style=\"color:hsl(95, 38%, 62%)\">\"SPEAKER_00\"</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">)</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">,</span><span class=\"token plain\">   </span><span class=\"token comment\" style=\"color:hsl(220, 10%, 40%)\"># 0~5.8초: 화자0</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\">    </span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">(</span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">5.8</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">,</span><span class=\"token plain\">   </span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">12.3</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">,</span><span class=\"token plain\"> </span><span class=\"token string\" style=\"color:hsl(95, 38%, 62%)\">\"SPEAKER_01\"</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">)</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">,</span><span class=\"token plain\">   </span><span class=\"token comment\" style=\"color:hsl(220, 10%, 40%)\"># 5.8~12.3초: 화자1</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\">    </span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">(</span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">12.3</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">,</span><span class=\"token plain\">  </span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">15.0</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">,</span><span class=\"token plain\"> </span><span class=\"token string\" style=\"color:hsl(95, 38%, 62%)\">\"SPEAKER_00\"</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">)</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">,</span><span class=\"token plain\">   </span><span class=\"token comment\" style=\"color:hsl(220, 10%, 40%)\"># 다시 화자0</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\">    </span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">(</span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">40.3</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">,</span><span class=\"token plain\">  </span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">47.2</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">,</span><span class=\"token plain\"> </span><span class=\"token string\" style=\"color:hsl(95, 38%, 62%)\">\"SPEAKER_02\"</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">)</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">,</span><span class=\"token plain\">   </span><span class=\"token comment\" style=\"color:hsl(220, 10%, 40%)\"># 화자2</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\">    </span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">.</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">.</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">.</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\"></span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">]</span><br></div></code></pre></div></div>\n</li>\n</ul>\n<hr>\n<p>Whisper-large-v3는 OpenAI에서 공개한 최신 음성 인식 모델로,</p>\n<p>다국어 음성 인식, 자동 자막 생성, 오디오 텍스트 변환 등의 작업에서 뛰어난 성능을 발휘하여, 도입하게 되었다.</p>\n<h4 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"3-언어-판정-lid\">3. 언어 판정 (LID)<a href=\"https://doc.scenemaker.solbox.com/blog/4#3-%EC%96%B8%EC%96%B4-%ED%8C%90%EC%A0%95-lid\" class=\"hash-link\" aria-label=\"3. 언어 판정 (LID)에 대한 직접 링크\" title=\"3. 언어 판정 (LID)에 대한 직접 링크\" translate=\"no\">​</a></h4>\n<ul>\n<li class=\"\">어떤 언어인지를 식별하는 과정이다.</li>\n</ul>\n<div class=\"language-python codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(220, 13%, 18%);--prism-color:hsl(220, 14%, 71%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-python codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(220, 13%, 18%);color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><code class=\"codeBlockLines_e6Vv\"><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\">MODEL </span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">:</span><span class=\"token plain\"> </span><span class=\"token string\" style=\"color:hsl(95, 38%, 62%)\">\"whisper-large-v3\"</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\">COMPUTE_TYPE </span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">:</span><span class=\"token plain\"> </span><span class=\"token string\" style=\"color:hsl(95, 38%, 62%)\">\"float16\"</span><span class=\"token plain\"> </span><span class=\"token comment\" style=\"color:hsl(220, 10%, 40%)\"># GPU 서버이기에 COMPUTE_TYPE 은 float16 선정</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\" style=\"display:inline-block\"></span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\"> </span><span class=\"token comment\" style=\"color:hsl(220, 10%, 40%)\"># lib/audio/whisper.py</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\" style=\"display:inline-block\"></span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\"></span><span class=\"token keyword\" style=\"color:hsl(286, 60%, 67%)\">def</span><span class=\"token plain\"> </span><span class=\"token function\" style=\"color:hsl(207, 82%, 66%)\">detect_language</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">(</span><span class=\"token plain\">chunk</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">:</span><span class=\"token plain\"> np</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">.</span><span class=\"token plain\">ndarray</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">)</span><span class=\"token plain\"> </span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">-</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">&gt;</span><span class=\"token plain\"> </span><span class=\"token builtin\" style=\"color:hsl(95, 38%, 62%)\">tuple</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">[</span><span class=\"token builtin\" style=\"color:hsl(95, 38%, 62%)\">str</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">,</span><span class=\"token plain\"> </span><span class=\"token builtin\" style=\"color:hsl(95, 38%, 62%)\">float</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">]</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">:</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\">    </span><span class=\"token triple-quoted-string string\" style=\"color:hsl(95, 38%, 62%)\">\"\"\"raw chunk → (lang_code, prob). LID 는 raw 오디오에서 (PoC Strategy 2).\"\"\"</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\" style=\"display:inline-block\"></span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\">    lang_code</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">,</span><span class=\"token plain\"> prob</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">,</span><span class=\"token plain\"> _all_probs </span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">=</span><span class=\"token plain\"> _model</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">.</span><span class=\"token plain\">detect_language</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">(</span><span class=\"token plain\">chunk</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">)</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\">    </span><span class=\"token keyword\" style=\"color:hsl(286, 60%, 67%)\">return</span><span class=\"token plain\"> lang_code</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">,</span><span class=\"token plain\"> prob</span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\" style=\"display:inline-block\"></span><br></div></code></pre></div></div>\n<ul>\n<li class=\"\">\n<p>wav 음성 파일 LID 과정.</p>\n<ul>\n<li class=\"\">ko=1.00 → 가장 높은 확률로 ko 로 인식한다는 뜻이다.</li>\n</ul>\n</li>\n<li class=\"\">\n<p>두 모델 (Whisper LID / VoxLingua107 LID) 비교하였다.</p>\n</li>\n</ul>\n<div class=\"language-python codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(220, 13%, 18%);--prism-color:hsl(220, 14%, 71%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-python codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(220, 13%, 18%);color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><code class=\"codeBlockLines_e6Vv\"><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">2026</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">-</span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">05</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">-</span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">28</span><span class=\"token plain\"> </span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">18</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">:</span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">35</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">:</span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">21</span><span class=\"token plain\"> </span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">[</span><span class=\"token plain\">INFO</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">]</span><span class=\"token plain\"> lid_bench</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">:</span><span class=\"token plain\"> DeepFilterNet3 loaded </span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">(</span><span class=\"token plain\">sr</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">=</span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">48000</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">,</span><span class=\"token plain\"> device</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">=</span><span class=\"token plain\">cuda</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">:</span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">0</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">)</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\"></span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">2026</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">-</span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">05</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">-</span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">28</span><span class=\"token plain\"> </span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">18</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">:</span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">35</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">:</span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">21</span><span class=\"token plain\"> </span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">[</span><span class=\"token plain\">INFO</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">]</span><span class=\"token plain\"> lid_bench</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">:</span><span class=\"token plain\"> Loading Silero VAD</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">.</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">.</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">.</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\"></span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">2026</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">-</span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">05</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">-</span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">28</span><span class=\"token plain\"> </span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">18</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">:</span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">35</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">:</span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">21</span><span class=\"token plain\"> </span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">[</span><span class=\"token plain\">INFO</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">]</span><span class=\"token plain\"> lid_bench</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">:</span><span class=\"token plain\"> Loading Whisper LID</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">:</span><span class=\"token plain\"> mobiuslabsgmbh</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">/</span><span class=\"token plain\">faster</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">-</span><span class=\"token plain\">whisper</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">-</span><span class=\"token plain\">large</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">-</span><span class=\"token plain\">v3</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">-</span><span class=\"token plain\">turbo</span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\"></span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">2026</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">-</span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">05</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">-</span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">28</span><span class=\"token plain\"> </span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">18</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">:</span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">35</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">:</span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">22</span><span class=\"token plain\"> </span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">[</span><span class=\"token plain\">INFO</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">]</span><span class=\"token plain\"> lid_bench</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">:</span><span class=\"token plain\"> Loading VoxLingua107 LID </span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">(</span><span class=\"token plain\">savedir</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">=</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">/</span><span class=\"token plain\">stg</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">/</span><span class=\"token plain\">models</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">/</span><span class=\"token plain\">voxlingua107</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">)</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\"></span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">2026</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">-</span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">05</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">-</span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">28</span><span class=\"token plain\"> </span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">18</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">:</span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">35</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">:</span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">22</span><span class=\"token plain\"> </span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">[</span><span class=\"token plain\">INFO</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">]</span><span class=\"token plain\"> lid_bench</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">:</span><span class=\"token plain\"> </span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">==</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">=</span><span class=\"token plain\"> models loaded </span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">==</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">=</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\"></span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">2026</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">-</span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">05</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">-</span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">28</span><span class=\"token plain\"> </span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">18</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">:</span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">35</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">:</span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">22</span><span class=\"token plain\"> </span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">[</span><span class=\"token plain\">INFO</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">]</span><span class=\"token plain\"> lid_bench</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">:</span><span class=\"token plain\"> </span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">==</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">=</span><span class=\"token plain\"> bench start</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">:</span><span class=\"token plain\"> </span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">/</span><span class=\"token plain\">stg</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">/</span><span class=\"token plain\">vod</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">/</span><span class=\"token plain\">scenemaker</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">/</span><span class=\"token plain\">sound_full</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">/</span><span class=\"token plain\">docu</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">.</span><span class=\"token plain\">wav </span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">==</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">=</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\"></span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">2026</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">-</span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">05</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">-</span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">28</span><span class=\"token plain\"> </span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">18</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">:</span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">35</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">:</span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">23</span><span class=\"token plain\"> </span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">[</span><span class=\"token plain\">INFO</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">]</span><span class=\"token plain\"> lid_bench</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">:</span><span class=\"token plain\"> denoise chunked</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">:</span><span class=\"token plain\"> </span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">3520</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">.</span><span class=\"token plain\">7s → </span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">118</span><span class=\"token plain\"> chunks of 30s</span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\"></span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">2026</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">-</span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">05</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">-</span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">28</span><span class=\"token plain\"> </span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">18</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">:</span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">35</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">:</span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">33</span><span class=\"token plain\"> </span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">[</span><span class=\"token plain\">INFO</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">]</span><span class=\"token plain\"> lid_bench</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">:</span><span class=\"token plain\"> denoise saved</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">:</span><span class=\"token plain\"> output</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">/</span><span class=\"token plain\">denoise</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">/</span><span class=\"token plain\">docu</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">.</span><span class=\"token plain\">wav</span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\"></span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">2026</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">-</span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">05</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">-</span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">28</span><span class=\"token plain\"> </span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">18</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">:</span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">35</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">:</span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">43</span><span class=\"token plain\"> </span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">[</span><span class=\"token plain\">INFO</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">]</span><span class=\"token plain\"> lid_bench</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">:</span><span class=\"token plain\"> audio </span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">3520</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">.</span><span class=\"token plain\">7s → VAD </span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">383</span><span class=\"token plain\"> speech segments</span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\"></span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">2026</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">-</span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">05</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">-</span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">28</span><span class=\"token plain\"> </span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">18</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">:</span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">35</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">:</span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">44</span><span class=\"token plain\"> </span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">[</span><span class=\"token plain\">INFO</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">]</span><span class=\"token plain\"> lid_bench</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">:</span><span class=\"token plain\"> </span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">[</span><span class=\"token plain\">  </span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">11.5</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">~</span><span class=\"token plain\">  </span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">12</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">.</span><span class=\"token plain\">7s</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">]</span><span class=\"token plain\"> W</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">-</span><span class=\"token plain\">raw</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">=</span><span class=\"token plain\">ko</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">=</span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">1.00</span><span class=\"token plain\">  V</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">-</span><span class=\"token plain\">raw</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">=</span><span class=\"token plain\">ko</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">=</span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">0.99</span><span class=\"token plain\">  W</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">-</span><span class=\"token plain\">den</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">=</span><span class=\"token plain\">ko</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">=</span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">1.00</span><span class=\"token plain\">  V</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">-</span><span class=\"token plain\">den</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">=</span><span class=\"token plain\">ko</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">=</span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">0.80</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\"></span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">2026</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">-</span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">05</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">-</span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">28</span><span class=\"token plain\"> </span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">18</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">:</span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">35</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">:</span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">44</span><span class=\"token plain\"> </span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">[</span><span class=\"token plain\">INFO</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">]</span><span class=\"token plain\"> lid_bench</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">:</span><span class=\"token plain\"> </span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">[</span><span class=\"token plain\">  </span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">13.1</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">~</span><span class=\"token plain\">  </span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">15</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">.</span><span class=\"token plain\">3s</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">]</span><span class=\"token plain\"> W</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">-</span><span class=\"token plain\">raw</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">=</span><span class=\"token plain\">ko</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">=</span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">1.00</span><span class=\"token plain\">  V</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">-</span><span class=\"token plain\">raw</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">=</span><span class=\"token plain\">ko</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">=</span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">1.00</span><span class=\"token plain\">  W</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">-</span><span class=\"token plain\">den</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">=</span><span class=\"token plain\">ko</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">=</span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">1.00</span><span class=\"token plain\">  V</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">-</span><span class=\"token plain\">den</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">=</span><span class=\"token plain\">ko</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">=</span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">1.00</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\"></span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">.</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">.</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">.</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\"></span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">026</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">-</span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">05</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">-</span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">28</span><span class=\"token plain\"> </span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">18</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">:</span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">35</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">:</span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">45</span><span class=\"token plain\"> </span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">[</span><span class=\"token plain\">INFO</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">]</span><span class=\"token plain\"> lid_bench</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">:</span><span class=\"token plain\"> </span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">[</span><span class=\"token plain\"> </span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">278.4</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">~</span><span class=\"token plain\"> </span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">281</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">.</span><span class=\"token plain\">1s</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">]</span><span class=\"token plain\"> W</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">-</span><span class=\"token plain\">raw</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">=</span><span class=\"token plain\">ko</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">=</span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">1.00</span><span class=\"token plain\">  V</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">-</span><span class=\"token plain\">raw</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">=</span><span class=\"token plain\">ko</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">=</span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">1.00</span><span class=\"token plain\">  W</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">-</span><span class=\"token plain\">den</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">=</span><span class=\"token plain\">ko</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">=</span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">1.00</span><span class=\"token plain\">  V</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">-</span><span class=\"token plain\">den</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">=</span><span class=\"token plain\">ko</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">=</span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">1.00</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\"></span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">2026</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">-</span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">05</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">-</span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">28</span><span class=\"token plain\"> </span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">18</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">:</span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">35</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">:</span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">45</span><span class=\"token plain\"> </span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">[</span><span class=\"token plain\">INFO</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">]</span><span class=\"token plain\"> lid_bench</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">:</span><span class=\"token plain\"> </span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">[</span><span class=\"token plain\"> </span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">282.6</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">~</span><span class=\"token plain\"> </span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">284</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">.</span><span class=\"token plain\">3s</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">]</span><span class=\"token plain\"> W</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">-</span><span class=\"token plain\">raw</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">=</span><span class=\"token plain\">en</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">=</span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">0.30</span><span class=\"token plain\">  V</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">-</span><span class=\"token plain\">raw</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">=</span><span class=\"token plain\">it</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">=</span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">0.79</span><span class=\"token plain\">  W</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">-</span><span class=\"token plain\">den</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">=</span><span class=\"token plain\">en</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">=</span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">0.46</span><span class=\"token plain\">  V</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">-</span><span class=\"token plain\">den</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">=</span><span class=\"token plain\">pt</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">=</span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">0.32</span><br></div></code></pre></div></div>\n<h4 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"4-음성-인식\">4. 음성 인식<a href=\"https://doc.scenemaker.solbox.com/blog/4#4-%EC%9D%8C%EC%84%B1-%EC%9D%B8%EC%8B%9D\" class=\"hash-link\" aria-label=\"4. 음성 인식에 대한 직접 링크\" title=\"4. 음성 인식에 대한 직접 링크\" translate=\"no\">​</a></h4>\n<div class=\"language-python codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(220, 13%, 18%);--prism-color:hsl(220, 14%, 71%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-python codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(220, 13%, 18%);color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><code class=\"codeBlockLines_e6Vv\"><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\"> MODEL </span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">:</span><span class=\"token plain\"> </span><span class=\"token string\" style=\"color:hsl(95, 38%, 62%)\">\"whisper-large-v3\"</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\"> COMPUTE_TYPE </span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">:</span><span class=\"token plain\"> </span><span class=\"token string\" style=\"color:hsl(95, 38%, 62%)\">\"float16\"</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\"> BATCH_SIZE</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">=</span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">16</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\"> </span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\"> </span><span class=\"token comment\" style=\"color:hsl(220, 10%, 40%)\"># lib/audio/whisper.py</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\" style=\"display:inline-block\"></span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\" style=\"display:inline-block\"></span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\"></span><span class=\"token keyword\" style=\"color:hsl(286, 60%, 67%)\">def</span><span class=\"token plain\"> </span><span class=\"token function\" style=\"color:hsl(207, 82%, 66%)\">transcribe_batched</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">(</span><span class=\"token plain\">audio</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">:</span><span class=\"token plain\"> np</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">.</span><span class=\"token plain\">ndarray</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">,</span><span class=\"token plain\"> language</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">:</span><span class=\"token plain\"> </span><span class=\"token builtin\" style=\"color:hsl(95, 38%, 62%)\">str</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">)</span><span class=\"token plain\"> </span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">-</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">&gt;</span><span class=\"token plain\"> </span><span class=\"token builtin\" style=\"color:hsl(95, 38%, 62%)\">list</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">[</span><span class=\"token builtin\" style=\"color:hsl(95, 38%, 62%)\">dict</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">]</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">:</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\">    </span><span class=\"token triple-quoted-string string\" style=\"color:hsl(95, 38%, 62%)\">\"\"\"오디오를 지정 언어로 배치 transcribe (내부 VAD 로 발화 구간만, 30s 윈도우 병렬).</span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token triple-quoted-string string\" style=\"display:inline-block;color:hsl(95, 38%, 62%)\"></span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token triple-quoted-string string\" style=\"color:hsl(95, 38%, 62%)\">    audio 는 보통 \"해당 언어 외 구간을 묵음 처리한 전체 길이 스트림\" → 내부 VAD 가</span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token triple-quoted-string string\" style=\"color:hsl(95, 38%, 62%)\">    묵음을 건너뛰므로 그 언어 발화만 인식되고, timestamp 는 원본 시각 그대로.</span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token triple-quoted-string string\" style=\"display:inline-block;color:hsl(95, 38%, 62%)\"></span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token triple-quoted-string string\" style=\"color:hsl(95, 38%, 62%)\">    word_timestamps 로 단어 단위 반환 → 호출측(stt_service)이 화자 턴/문장부호 기준으로</span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token triple-quoted-string string\" style=\"color:hsl(95, 38%, 62%)\">    재분할 (배치는 segment 가 30s 로 뭉치므로 세밀도/화자 정확도 복원).</span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token triple-quoted-string string\" style=\"display:inline-block;color:hsl(95, 38%, 62%)\"></span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token triple-quoted-string string\" style=\"color:hsl(95, 38%, 62%)\">    Returns: [{\"start\", \"end\", \"word\", \"seg_logprob\"}, ...]  (단어 단위, 절대 시각)</span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token triple-quoted-string string\" style=\"color:hsl(95, 38%, 62%)\">             seg_logprob = 그 단어가 속한 segment 의 avg_logprob (환각 필터용)</span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token triple-quoted-string string\" style=\"color:hsl(95, 38%, 62%)\">    \"\"\"</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\">    </span><span class=\"token keyword\" style=\"color:hsl(286, 60%, 67%)\">if</span><span class=\"token plain\"> _model </span><span class=\"token keyword\" style=\"color:hsl(286, 60%, 67%)\">is</span><span class=\"token plain\"> </span><span class=\"token boolean\" style=\"color:hsl(29, 54%, 61%)\">None</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">:</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\">        load_model</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">(</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">)</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\">    segments_gen</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">,</span><span class=\"token plain\"> _info </span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">=</span><span class=\"token plain\"> _batched</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">.</span><span class=\"token plain\">transcribe</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">(</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\">        audio</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">,</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\">        language</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">=</span><span class=\"token plain\">language</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">,</span><span class=\"token plain\"> </span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\">        batch_size</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">=</span><span class=\"token plain\">BATCH_SIZE</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">,</span><span class=\"token plain\">          </span><span class=\"token comment\" style=\"color:hsl(220, 10%, 40%)\"># 동시에 GPU 올리는 3-s 윈도우 수, 16 으로 설정함</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\">        beam_size</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">=</span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">5</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">,</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\">        no_speech_threshold</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">=</span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">0.6</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">,</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\">        log_prob_threshold</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">=</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">-</span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">1.0</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">,</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\">        compression_ratio_threshold</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">=</span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">2.4</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">,</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\">        condition_on_previous_text</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">=</span><span class=\"token boolean\" style=\"color:hsl(29, 54%, 61%)\">False</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">,</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\">        repetition_penalty</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">=</span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">1.2</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">,</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\">        no_repeat_ngram_size</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">=</span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">3</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">,</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\">        vad_filter</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">=</span><span class=\"token boolean\" style=\"color:hsl(29, 54%, 61%)\">True</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">,</span><span class=\"token plain\">        </span><span class=\"token comment\" style=\"color:hsl(220, 10%, 40%)\"># 묵음 구간 건너뛰기 (묵음 스트림 처리의 핵심)</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\">        word_timestamps</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">=</span><span class=\"token boolean\" style=\"color:hsl(29, 54%, 61%)\">True</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">,</span><span class=\"token plain\">   </span><span class=\"token comment\" style=\"color:hsl(220, 10%, 40%)\"># 단어 단위 타임스탬프</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\">    </span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">)</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\">    words </span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">=</span><span class=\"token plain\"> </span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">[</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">]</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\">    </span><span class=\"token keyword\" style=\"color:hsl(286, 60%, 67%)\">for</span><span class=\"token plain\"> s </span><span class=\"token keyword\" style=\"color:hsl(286, 60%, 67%)\">in</span><span class=\"token plain\"> segments_gen</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">:</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\">        </span><span class=\"token keyword\" style=\"color:hsl(286, 60%, 67%)\">for</span><span class=\"token plain\"> w </span><span class=\"token keyword\" style=\"color:hsl(286, 60%, 67%)\">in</span><span class=\"token plain\"> </span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">(</span><span class=\"token plain\">s</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">.</span><span class=\"token plain\">words </span><span class=\"token keyword\" style=\"color:hsl(286, 60%, 67%)\">or</span><span class=\"token plain\"> </span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">[</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">]</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">)</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">:</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\">            words</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">.</span><span class=\"token plain\">append</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">(</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">{</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\">                </span><span class=\"token string\" style=\"color:hsl(95, 38%, 62%)\">\"start\"</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">:</span><span class=\"token plain\"> </span><span class=\"token builtin\" style=\"color:hsl(95, 38%, 62%)\">float</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">(</span><span class=\"token plain\">w</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">.</span><span class=\"token plain\">start</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">)</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">,</span><span class=\"token plain\"> </span><span class=\"token string\" style=\"color:hsl(95, 38%, 62%)\">\"end\"</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">:</span><span class=\"token plain\"> </span><span class=\"token builtin\" style=\"color:hsl(95, 38%, 62%)\">float</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">(</span><span class=\"token plain\">w</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">.</span><span class=\"token plain\">end</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">)</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">,</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\">                </span><span class=\"token string\" style=\"color:hsl(95, 38%, 62%)\">\"word\"</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">:</span><span class=\"token plain\"> w</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">.</span><span class=\"token plain\">word</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">,</span><span class=\"token plain\"> </span><span class=\"token string\" style=\"color:hsl(95, 38%, 62%)\">\"seg_logprob\"</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">:</span><span class=\"token plain\"> s</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">.</span><span class=\"token plain\">avg_logprob</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">,</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\">            </span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">}</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">)</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\">    </span><span class=\"token keyword\" style=\"color:hsl(286, 60%, 67%)\">return</span><span class=\"token plain\"> words</span><br></div></code></pre></div></div>\n<ul>\n<li class=\"\">\n<p>동작 과정 기록만 되어 있는 상태.</p>\n<div class=\"language-python codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(220, 13%, 18%);--prism-color:hsl(220, 14%, 71%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-python codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(220, 13%, 18%);color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><code class=\"codeBlockLines_e6Vv\"><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">2026</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">/</span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">06</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">/</span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">25</span><span class=\"token plain\"> </span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">17</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">:</span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">15</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">:</span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">31</span><span class=\"token plain\"> INFO </span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">[</span><span class=\"token plain\">stt_service</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">.</span><span class=\"token plain\">py</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">:</span><span class=\"token plain\">_transcribe_batched</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">:</span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">204</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">]</span><span class=\"token plain\"> </span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">-</span><span class=\"token plain\"> batched </span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">[</span><span class=\"token plain\">zh</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">]</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">:</span><span class=\"token plain\"> </span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">81</span><span class=\"token plain\"> words </span><span class=\"token keyword\" style=\"color:hsl(286, 60%, 67%)\">from</span><span class=\"token plain\"> </span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">7</span><span class=\"token plain\"> ranges</span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\"></span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">2026</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">/</span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">06</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">/</span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">25</span><span class=\"token plain\"> </span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">17</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">:</span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">15</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">:</span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">31</span><span class=\"token plain\"> INFO </span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">[</span><span class=\"token plain\">transcribe</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">.</span><span class=\"token plain\">py</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">:</span><span class=\"token plain\">transcribe</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">:</span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">390</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">]</span><span class=\"token plain\"> </span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">-</span><span class=\"token plain\"> Processing audio </span><span class=\"token keyword\" style=\"color:hsl(286, 60%, 67%)\">with</span><span class=\"token plain\"> duration </span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">58</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">:</span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">40.749</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\"></span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">2026</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">/</span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">06</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">/</span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">25</span><span class=\"token plain\"> </span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">17</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">:</span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">15</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">:</span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">34</span><span class=\"token plain\"> INFO </span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">[</span><span class=\"token plain\">transcribe</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">.</span><span class=\"token plain\">py</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">:</span><span class=\"token plain\">transcribe</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">:</span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">458</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">]</span><span class=\"token plain\"> </span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">-</span><span class=\"token plain\"> VAD </span><span class=\"token builtin\" style=\"color:hsl(95, 38%, 62%)\">filter</span><span class=\"token plain\"> removed </span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">58</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">:</span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">38.445</span><span class=\"token plain\"> of audio</span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\"></span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">2026</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">/</span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">06</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">/</span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">25</span><span class=\"token plain\"> </span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">17</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">:</span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">15</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">:</span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">34</span><span class=\"token plain\"> INFO </span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">[</span><span class=\"token plain\">stt_service</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">.</span><span class=\"token plain\">py</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">:</span><span class=\"token plain\">_transcribe_batched</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">:</span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">204</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">]</span><span class=\"token plain\"> </span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">-</span><span class=\"token plain\"> batched </span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">[</span><span class=\"token plain\">vi</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">]</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">:</span><span class=\"token plain\"> </span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">11</span><span class=\"token plain\"> words </span><span class=\"token keyword\" style=\"color:hsl(286, 60%, 67%)\">from</span><span class=\"token plain\"> </span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">1</span><span class=\"token plain\"> ranges</span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\"></span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">2026</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">/</span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">06</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">/</span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">25</span><span class=\"token plain\"> </span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">17</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">:</span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">15</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">:</span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">34</span><span class=\"token plain\"> INFO </span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">[</span><span class=\"token plain\">stt_service</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">.</span><span class=\"token plain\">py</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">:</span><span class=\"token plain\">_assemble_segments</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">:</span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">252</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">]</span><span class=\"token plain\"> </span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">-</span><span class=\"token plain\"> assemble</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">:</span><span class=\"token plain\"> </span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">314</span><span class=\"token plain\"> segments </span><span class=\"token keyword\" style=\"color:hsl(286, 60%, 67%)\">from</span><span class=\"token plain\"> </span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">2477</span><span class=\"token plain\"> words</span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\"></span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">2026</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">/</span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">06</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">/</span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">25</span><span class=\"token plain\"> </span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">17</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">:</span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">15</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">:</span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">34</span><span class=\"token plain\"> INFO </span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">[</span><span class=\"token plain\">util</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">.</span><span class=\"token plain\">py</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">:</span><span class=\"token plain\">write_json</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">:</span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">26</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">]</span><span class=\"token plain\"> </span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">-</span><span class=\"token plain\"> wrote json → output</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">/</span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">2</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">/</span><span class=\"token plain\">result</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">.</span><span class=\"token plain\">json</span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\" style=\"display:inline-block\"></span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\"></span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">.</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">.</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">.</span><br></div></code></pre></div></div>\n</li>\n<li class=\"\">\n<p>json 으로 결과 확인 가능하다.</p>\n<div class=\"language-json codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(220, 13%, 18%);--prism-color:hsl(220, 14%, 71%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-json codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(220, 13%, 18%);color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><code class=\"codeBlockLines_e6Vv\"><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\">  </span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">{</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\">    </span><span class=\"token property\" style=\"color:hsl(355, 65%, 65%)\">\"idx\"</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">:</span><span class=\"token plain\"> </span><span class=\"token number\" style=\"color:hsl(29, 54%, 61%)\">0</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">,</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\">    </span><span class=\"token property\" style=\"color:hsl(355, 65%, 65%)\">\"start\"</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">:</span><span class=\"token plain\"> </span><span class=\"token string\" style=\"color:hsl(95, 38%, 62%)\">\"00:00:07.2\"</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">,</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\">    </span><span class=\"token property\" style=\"color:hsl(355, 65%, 65%)\">\"end\"</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">:</span><span class=\"token plain\"> </span><span class=\"token string\" style=\"color:hsl(95, 38%, 62%)\">\"00:00:09.9\"</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">,</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\">    </span><span class=\"token property\" style=\"color:hsl(355, 65%, 65%)\">\"text\"</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">:</span><span class=\"token plain\"> </span><span class=\"token string\" style=\"color:hsl(95, 38%, 62%)\">\"스포일러 엄청 커 저번이랑\"</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">,</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\">    </span><span class=\"token property\" style=\"color:hsl(355, 65%, 65%)\">\"lang\"</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">:</span><span class=\"token plain\"> </span><span class=\"token string\" style=\"color:hsl(95, 38%, 62%)\">\"ko\"</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">,</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\">    </span><span class=\"token property\" style=\"color:hsl(355, 65%, 65%)\">\"speaker\"</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">:</span><span class=\"token plain\"> </span><span class=\"token string\" style=\"color:hsl(95, 38%, 62%)\">\"S003\"</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\">  </span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">}</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">,</span><br></div></code></pre></div></div>\n</li>\n</ul>\n<hr>\n<p>목표였던 STT 및 정형화 과정이 완료되었다.</p>\n<p>그러나 완벽하지 않기에, 보정이 필요한 것을 확인하였으며, Open-weight 도입으로 추가 보정을 진행할 예정이다.</p>\n<p>참고 링크)</p>\n<ul>\n<li class=\"\"><a href=\"https://www.saytowords.com/ko/blogs/Faster-Whisper-Guide/\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">https://www.saytowords.com/ko/blogs/Faster-Whisper-Guide/</a></li>\n<li class=\"\"><a href=\"https://elice.io/ko/resources/blog/whisper-large-benchmark\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">https://elice.io/ko/resources/blog/whisper-large-benchmark</a></li>\n<li class=\"\"><a href=\"https://kjh1337.tistory.com/3\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">https://kjh1337.tistory.com/3</a></li>\n</ul>",
            "url": "https://doc.scenemaker.solbox.com/blog/4",
            "title": "07_음성분석 처리 과정 및 결과",
            "summary": "💡 이 글은 음성을 글자 변환  (Speech to Text) 하는 과정을 구체적으로 명시한 글이다",
            "date_modified": "2026-07-10T00:00:00.000Z",
            "author": {
                "name": "sbin",
                "url": "https://github.com/sb"
            },
            "tags": []
        },
        {
            "id": "https://doc.scenemaker.solbox.com/blog/2",
            "content_html": "<h3 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"개요\"><strong>개요</strong><a href=\"https://doc.scenemaker.solbox.com/blog/2#%EA%B0%9C%EC%9A%94\" class=\"hash-link\" aria-label=\"개요에 대한 직접 링크\" title=\"개요에 대한 직접 링크\" translate=\"no\">​</a></h3>\n<hr>\n<p>개발 과정에서 달마다 글을 블로그에 작성하기로 했다.</p>\n<!-- -->\n<p>Notion 글 작성까지는 확정이였으나, 퍼블릭 배포를 어떻게 할지가 고민이였다.</p>\n<p>여러 후보 (Velog, Tistory) 가 있어서 동시에 해보다가, docusaurus 를 선택하였다.</p>\n<p><img decoding=\"async\" loading=\"lazy\" alt=\"image\" src=\"https://doc.scenemaker.solbox.com/assets/images/img-00-2e8841890853b1ad55adc0ef22064fc8.png\" width=\"1200\" height=\"750\" class=\"img_ev3q\"></p>\n<p>docusaurus 는 Meta 에서 만든 오픈소스 프로젝트로, 다양한 기업에서 사용하고 있는 SSG (static site generator) 이다.</p>\n<p>공식 문서도 있고, 커뮤니티가 활달하며, 아래와 같은 아키텍처까지 볼 수 있다는 것에 놀랐다.</p>\n<p><img decoding=\"async\" loading=\"lazy\" alt=\"image\" src=\"https://doc.scenemaker.solbox.com/assets/images/img-01-df3a9f80b8fad53f8e5f109c23d9a66c.png\" width=\"826\" height=\"724\" class=\"img_ev3q\"></p>\n<p>그 외에 Plugin, Routing, SSG (Static Site Generation), Client Architecture 까지 있다.</p>\n<p>아래에 참고 링크가 있다.</p>\n<p>참고 링크 : <a href=\"https://docusaurus.io/docs/advanced\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">https://docusaurus.io/docs/advanced</a></p>\n<hr>\n<h3 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"notion-to-docusaurus-동기화\">Notion to Docusaurus 동기화<a href=\"https://doc.scenemaker.solbox.com/blog/2#notion-to-docusaurus-%EB%8F%99%EA%B8%B0%ED%99%94\" class=\"hash-link\" aria-label=\"Notion to Docusaurus 동기화에 대한 직접 링크\" title=\"Notion to Docusaurus 동기화에 대한 직접 링크\" translate=\"no\">​</a></h3>\n<p>작성 글 퍼블릭 배포할 예정인 우리는, 아래 과정을 거쳐 동기화했다.</p>\n<h5 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"1-notion-글-작성\">1. Notion 글 작성<a href=\"https://doc.scenemaker.solbox.com/blog/2#1-notion-%EA%B8%80-%EC%9E%91%EC%84%B1\" class=\"hash-link\" aria-label=\"1. Notion 글 작성에 대한 직접 링크\" title=\"1. Notion 글 작성에 대한 직접 링크\" translate=\"no\">​</a></h5>\n<ul>\n<li class=\"\">협업 시 Notion 을 오랫동안 써왔기에, 일단 생각나는 대로 적기 시작했다</li>\n</ul>\n<p><img decoding=\"async\" loading=\"lazy\" alt=\"image\" src=\"https://doc.scenemaker.solbox.com/assets/images/img-02-6c89edb50e88644d4fdb440823d001de.png\" width=\"1540\" height=\"806\" class=\"img_ev3q\"></p>\n<h5 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"2-docusaurus-config-설정\">2. docusaurus config 설정<a href=\"https://doc.scenemaker.solbox.com/blog/2#2-docusaurus-config-%EC%84%A4%EC%A0%95\" class=\"hash-link\" aria-label=\"2. docusaurus config 설정에 대한 직접 링크\" title=\"2. docusaurus config 설정에 대한 직접 링크\" translate=\"no\">​</a></h5>\n<ul>\n<li class=\"\">공식 문서 참고 추천한다 (<a href=\"https://docusaurus.io/ko/docs/cli\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">https://docusaurus.io/ko/docs/cli</a> )</li>\n<li class=\"\">docusaurus.config.ts 파일. 우리의 url 과, github 페이지를 연결하였다.\n<div class=\"language-typescript codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(220, 13%, 18%);--prism-color:hsl(220, 14%, 71%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-typescript codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(220, 13%, 18%);color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><code class=\"codeBlockLines_e6Vv\"><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token keyword\" style=\"color:hsl(286, 60%, 67%)\">const</span><span class=\"token plain\"> config</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">:</span><span class=\"token plain\"> Config </span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">=</span><span class=\"token plain\"> </span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">{</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\">  title</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">:</span><span class=\"token plain\"> </span><span class=\"token string\" style=\"color:hsl(95, 38%, 62%)\">'SceneMakerAI'</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">,</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\">  tagline</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">:</span><span class=\"token plain\"> </span><span class=\"token string\" style=\"color:hsl(95, 38%, 62%)\">'오픈소스 AI로 방송 콘텐츠를 재가공하다 — SceneMakerAI 기술 블로그 · 문서'</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">,</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\" style=\"display:inline-block\"></span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\">  </span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">...</span><span class=\"token plain\"> </span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\">            sameAs</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">:</span><span class=\"token plain\"> </span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">[</span><span class=\"token string\" style=\"color:hsl(95, 38%, 62%)\">'https://github.com/SceneMakerAI'</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">]</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">,</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\">            parentOrganization</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">:</span><span class=\"token plain\"> </span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">{</span><span class=\"token plain\"> </span><span class=\"token string-property property\" style=\"color:hsl(355, 65%, 65%)\">'@type'</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">:</span><span class=\"token plain\"> </span><span class=\"token string\" style=\"color:hsl(95, 38%, 62%)\">'Organization'</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">,</span><span class=\"token plain\"> name</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">:</span><span class=\"token plain\"> </span><span class=\"token string\" style=\"color:hsl(95, 38%, 62%)\">'솔박스(Solbox Inc.)'</span><span class=\"token plain\"> </span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">}</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">,</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\">          </span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">}</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">,</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\">          </span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">{</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\">            </span><span class=\"token string-property property\" style=\"color:hsl(355, 65%, 65%)\">'@type'</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">:</span><span class=\"token plain\"> </span><span class=\"token string\" style=\"color:hsl(95, 38%, 62%)\">'WebSite'</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">,</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\">            name</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">:</span><span class=\"token plain\"> </span><span class=\"token string\" style=\"color:hsl(95, 38%, 62%)\">'SceneMakerAI Docs'</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">,</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\">            url</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">:</span><span class=\"token plain\"> </span><span class=\"token string\" style=\"color:hsl(95, 38%, 62%)\">'https://doc.scenemaker.solbox.com'</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">,</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\">          </span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">}</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">,</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\">        </span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">]</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">,</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\">      </span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">}</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">)</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">,</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\">    </span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">}</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">,</span><br></div></code></pre></div></div>\n</li>\n</ul>\n<h5 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"3-notion-to-md-복사\">3. Notion-to-md 복사<a href=\"https://doc.scenemaker.solbox.com/blog/2#3-notion-to-md-%EB%B3%B5%EC%82%AC\" class=\"hash-link\" aria-label=\"3. Notion-to-md 복사에 대한 직접 링크\" title=\"3. Notion-to-md 복사에 대한 직접 링크\" translate=\"no\">​</a></h5>\n<ul>\n<li class=\"\">\n<p>Notion Token 발급 / 데이터베이스 별 ID 확인 필요하다</p>\n<div class=\"language-bash codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(220, 13%, 18%);--prism-color:hsl(220, 14%, 71%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-bash codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(220, 13%, 18%);color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><code class=\"codeBlockLines_e6Vv\"><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token assign-left variable\" style=\"color:hsl(207, 82%, 66%)\">NOTION_TOKEN</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">=</span><span class=\"token plain\"> </span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\"></span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">..</span><span class=\"token plain\">.</span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\"></span><span class=\"token assign-left variable\" style=\"color:hsl(207, 82%, 66%)\">NOTION_RELEASE</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">=</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\"></span><span class=\"token assign-left variable\" style=\"color:hsl(207, 82%, 66%)\">NOTION_INSTALL</span><span class=\"token operator\" style=\"color:hsl(207, 82%, 66%)\">=</span><br></div></code></pre></div></div>\n</li>\n<li class=\"\">\n<p>notion_to_md.py 로, Notion 내용이 서버에 나타난다</p>\n</li>\n</ul>\n<p><img decoding=\"async\" loading=\"lazy\" alt=\"image\" src=\"https://doc.scenemaker.solbox.com/assets/images/img-03-34474493143858b74f41aef967bf3f11.png\" width=\"1436\" height=\"918\" class=\"img_ev3q\"></p>\n<h5 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"4-workflow-동기화\">4. workflow 동기화<a href=\"https://doc.scenemaker.solbox.com/blog/2#4-workflow-%EB%8F%99%EA%B8%B0%ED%99%94\" class=\"hash-link\" aria-label=\"4. workflow 동기화에 대한 직접 링크\" title=\"4. workflow 동기화에 대한 직접 링크\" translate=\"no\">​</a></h5>\n<ul>\n<li class=\"\">\n<p>build 와 deploy 과정으로 분할</p>\n<ul>\n<li class=\"\">\n<p>build: main branch 코드 읽기, md 파일 → 정적 파일 (HTML/CSS/JS) 로 변환</p>\n</li>\n<li class=\"\">\n<p>deploy: <a href=\"http://doc.scenemaker.solbox.com/\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">doc.scenemaker.solbox.com</a> 반영</p>\n<div class=\"language-yaml codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(220, 13%, 18%);--prism-color:hsl(220, 14%, 71%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-yaml codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(220, 13%, 18%);color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><code class=\"codeBlockLines_e6Vv\"><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token key atrule\" style=\"color:hsl(29, 54%, 61%)\">name</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">:</span><span class=\"token plain\"> Deploy to GitHub Pages</span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\" style=\"display:inline-block\"></span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\"></span><span class=\"token key atrule\" style=\"color:hsl(29, 54%, 61%)\">jobs</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">:</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\">  </span><span class=\"token key atrule\" style=\"color:hsl(29, 54%, 61%)\">build</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">:</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\">     </span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">...</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\" style=\"display:inline-block\"></span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\">      </span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">-</span><span class=\"token plain\"> </span><span class=\"token key atrule\" style=\"color:hsl(29, 54%, 61%)\">name</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">:</span><span class=\"token plain\"> Install dependencies</span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\">        </span><span class=\"token key atrule\" style=\"color:hsl(29, 54%, 61%)\">run</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">:</span><span class=\"token plain\"> npm ci</span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\" style=\"display:inline-block\"></span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\">      </span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">-</span><span class=\"token plain\"> </span><span class=\"token key atrule\" style=\"color:hsl(29, 54%, 61%)\">name</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">:</span><span class=\"token plain\"> Build (production</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">,</span><span class=\"token plain\"> all locales)</span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\">        </span><span class=\"token key atrule\" style=\"color:hsl(29, 54%, 61%)\">run</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">:</span><span class=\"token plain\"> npm run build</span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\" style=\"display:inline-block\"></span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\">  </span><span class=\"token key atrule\" style=\"color:hsl(29, 54%, 61%)\">deploy</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">:</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:hsl(29, 54%, 61%)\">name</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">:</span><span class=\"token plain\"> Deploy</span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:hsl(29, 54%, 61%)\">needs</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">:</span><span class=\"token plain\"> build</span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:hsl(29, 54%, 61%)\">runs-on</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">:</span><span class=\"token plain\"> ubuntu</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">-</span><span class=\"token plain\">latest</span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:hsl(29, 54%, 61%)\">environment</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">:</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(29, 54%, 61%)\">name</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">:</span><span class=\"token plain\"> github</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">-</span><span class=\"token plain\">pages</span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(29, 54%, 61%)\">url</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">:</span><span class=\"token plain\"> $</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">{</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">{</span><span class=\"token plain\"> steps.deployment.outputs.page_url </span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">}</span><span class=\"token punctuation\" style=\"color:hsl(220, 14%, 71%)\">}</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:hsl(220, 14%, 71%);text-shadow:0 1px rgba(0, 0, 0, 0.3)\"><span class=\"token plain\" style=\"display:inline-block\"></span><br></div></code></pre></div></div>\n</li>\n</ul>\n</li>\n<li class=\"\">\n<p>Github Action 결과</p>\n</li>\n</ul>\n<p><img decoding=\"async\" loading=\"lazy\" alt=\"image\" src=\"https://doc.scenemaker.solbox.com/assets/images/img-04-2b35c406f9747b451cdd7d3739b6832f.png\" width=\"1900\" height=\"842\" class=\"img_ev3q\"></p>\n<hr>\n<h3 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"동기화-결과\">동기화 결과<a href=\"https://doc.scenemaker.solbox.com/blog/2#%EB%8F%99%EA%B8%B0%ED%99%94-%EA%B2%B0%EA%B3%BC\" class=\"hash-link\" aria-label=\"동기화 결과에 대한 직접 링크\" title=\"동기화 결과에 대한 직접 링크\" translate=\"no\">​</a></h3>\n<p>Notion 에서 보는 것과 완전 똑같이 나오는 것을 목표로 하였다.</p>\n<p><img decoding=\"async\" loading=\"lazy\" alt=\"image\" src=\"https://doc.scenemaker.solbox.com/assets/images/img-05-d8ff6d133aea61d66834218e4f234a4a.png\" width=\"1896\" height=\"899\" class=\"img_ev3q\"></p>\n<p>생각보다 작업 시간이 많이 소요된 Docusaurus 이전 작업이였다.</p>\n<p>기본적인 레이아웃부터, 테마 및 SEO 작업, 무엇보다 md 파일 작성이 가장 오래 걸렸다.</p>\n<p>그래도 어느 정도 틀을 구축하니 이후엔 속도가 붙기 시작하였으며, 매력적인 툴이라고 생각한다.</p>\n<p>다들 한번씩은 해보기를 추천한다.</p>\n<hr>",
            "url": "https://doc.scenemaker.solbox.com/blog/2",
            "title": "05_기술 블로그 개설 ",
            "summary": "기술 블로그 개설 및 프로젝트 소개 게시",
            "date_modified": "2026-07-09T00:00:00.000Z",
            "author": {
                "name": "sbin",
                "url": "https://github.com/sb"
            },
            "tags": [
                "블로그"
            ]
        },
        {
            "id": "https://doc.scenemaker.solbox.com/blog/1",
            "content_html": "<h3 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"개요\"><strong>개요</strong><a href=\"https://doc.scenemaker.solbox.com/blog/1#%EA%B0%9C%EC%9A%94\" class=\"hash-link\" aria-label=\"개요에 대한 직접 링크\" title=\"개요에 대한 직접 링크\" translate=\"no\">​</a></h3>\n<hr>\n<p>Qwen3.6 VLM 방송 도메인 적용하는 과정을 보여준다</p>\n<!-- -->\n<ul>\n<li class=\"\">우리의 서비스에 대한 소개</li>\n<li class=\"\">어떠한 데이터로 시작할 것이며</li>\n<li class=\"\">어떻게 영상 제작을 할 것인지</li>\n</ul>\n<p>PPT 를 보고, 서비스 소개글을 작성한다.</p>\n<h5 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"1-ai-모아보기\">1. AI 모아보기<a href=\"https://doc.scenemaker.solbox.com/blog/1#1-ai-%EB%AA%A8%EC%95%84%EB%B3%B4%EA%B8%B0\" class=\"hash-link\" aria-label=\"1. AI 모아보기에 대한 직접 링크\" title=\"1. AI 모아보기에 대한 직접 링크\" translate=\"no\">​</a></h5>\n<ul>\n<li class=\"\">장면 드라마, 예</li>\n</ul>\n<p><img decoding=\"async\" loading=\"lazy\" alt=\"image\" src=\"https://doc.scenemaker.solbox.com/assets/images/img-00-ca2857cf20a1feb247354e4f31ff37cb.png\" width=\"1385\" height=\"803\" class=\"img_ev3q\"></p>\n<h5 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"2-리믹스숏폼-재구성\">2. 리믹스/숏폼 재구성<a href=\"https://doc.scenemaker.solbox.com/blog/1#2-%EB%A6%AC%EB%AF%B9%EC%8A%A4%EC%88%8F%ED%8F%BC-%EC%9E%AC%EA%B5%AC%EC%84%B1\" class=\"hash-link\" aria-label=\"2. 리믹스/숏폼 재구성에 대한 직접 링크\" title=\"2. 리믹스/숏폼 재구성에 대한 직접 링크\" translate=\"no\">​</a></h5>\n<p><img decoding=\"async\" loading=\"lazy\" alt=\"image\" src=\"https://doc.scenemaker.solbox.com/assets/images/img-01-8038b211886bf934204ba0ff5e6e0fa5.png\" width=\"1611\" height=\"922\" class=\"img_ev3q\"></p>\n<hr>",
            "url": "https://doc.scenemaker.solbox.com/blog/1",
            "title": "06_Qwen3.6 VLM 영상 제작 서비스",
            "summary": "개발 서비스 Flow",
            "date_modified": "2026-06-22T00:00:00.000Z",
            "author": {
                "name": "sbin",
                "url": "https://github.com/sb"
            },
            "tags": [
                "docusaurus"
            ]
        }
    ]
}