Transcribe

unlisted

by teinam

Transcribe microphone audio in real time via AWS Transcribe and analyze results with AWS Bedrock.

Updated 12d agoMIT
View on GitHub

Meeting Transcriber โ€” Obsidian plugin for real-time speech-to-text via AWS

TypeScript AWS License

Buy Me A Coffee

Capture microphone audio, stream it to AWS Transcribe in real time, save the result as a Markdown note, and analyze it with AWS Bedrock โ€” all from the Obsidian sidebar.

  • Plugin ID: obsidian-transcribe-plugin
  • Platform: Desktop only (isDesktopOnly: true)
  • License: MIT

๐Ÿ‡ฐ๐Ÿ‡ท ํ•œ๊ตญ์–ด

๊ฐœ์š”

Obsidian ์‚ฌ์ด๋“œ๋ฐ”์—์„œ ๋งˆ์ดํฌ ์˜ค๋””์˜ค๋ฅผ ์‹ค์‹œ๊ฐ„์œผ๋กœ AWS Transcribe Streaming์— ์ „์†กํ•ด ํ…์ŠคํŠธ๋กœ ๋ฐ›์•„ ์ ๊ณ , ๊ฒฐ๊ณผ๋ฅผ ๋งˆํฌ๋‹ค์šด ๋…ธํŠธ๋กœ ์ €์žฅํ•œ ๋’ค AWS Bedrock ๋ชจ๋ธ๋กœ ์š”์•ฝ/๋ถ„์„ํ•  ์ˆ˜ ์žˆ๋Š” ์ปค๋ฎค๋‹ˆํ‹ฐ ํ”Œ๋Ÿฌ๊ทธ์ธ์ž…๋‹ˆ๋‹ค.

โš ๏ธ ์‚ฌ์šฉ ์ „ ๋ฐ˜๋“œ์‹œ ํ™•์ธํ•˜์„ธ์š” (์ค‘์š” ๊ณ ์ง€)

๋ณธ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์„ค์น˜ยท์‚ฌ์šฉํ•˜๊ธฐ ์ „์— ๋‹ค์Œ ๋„ค ๊ฐ€์ง€ ์‚ฌํ•ญ์„ ๋ฐ˜๋“œ์‹œ ์ดํ•ดํ•˜๊ณ  ๋™์˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  1. ์™ธ๋ถ€ ๋„คํŠธ์›Œํฌ ์‚ฌ์šฉ ๋ณธ ํ”Œ๋Ÿฌ๊ทธ์ธ์€ ๋™์ž‘์— ๋‹ค์Œ AWS ์„œ๋น„์Šค์˜ ์™ธ๋ถ€ ์—”๋“œํฌ์ธํŠธ๋ฅผ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค.

    • AWS Transcribe Streaming (transcribestreaming.<region>.amazonaws.com) โ€” ๋งˆ์ดํฌ์—์„œ ์บก์ฒ˜ํ•œ PCM ์˜ค๋””์˜ค ์ฒญํฌ๋ฅผ ์‹ค์‹œ๊ฐ„ ์ „์†กํ•˜์—ฌ ์ „์‚ฌ ๊ฒฐ๊ณผ๋ฅผ ์ˆ˜์‹ ํ•ฉ๋‹ˆ๋‹ค.
    • AWS Bedrock Runtime (bedrock-runtime.<region>.amazonaws.com) โ€” ์ „์‚ฌ๋œ ํ…์ŠคํŠธ๋ฅผ ์‚ฌ์šฉ์ž๊ฐ€ ์„ ํƒํ•œ ํŒŒ์šด๋ฐ์ด์…˜ ๋ชจ๋ธ์— ์ „๋‹ฌํ•˜์—ฌ ๋ถ„์„ ๊ฒฐ๊ณผ๋ฅผ ์ˆ˜์‹ ํ•ฉ๋‹ˆ๋‹ค.
    • AWS Bedrock (bedrock.<region>.amazonaws.com) โ€” ์„ค์ • ํ™”๋ฉด์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ชจ๋ธ ๋ชฉ๋ก์„ ์กฐํšŒํ•ฉ๋‹ˆ๋‹ค.
  2. AWS ๊ณ„์ • ๋ฐ ์ž๊ฒฉ ์ฆ๋ช… ํ•„์š” ๋ณธ ํ”Œ๋Ÿฌ๊ทธ์ธ์€ ๋…์ž์ ์ธ AI ์„œ๋ฒ„๋ฅผ ์ œ๊ณตํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ ๋ณธ์ธ์˜ AWS ๊ณ„์ •์„ ๋งŒ๋“ค๊ณ , IAM access key ID ์™€ secret access key ๋ฅผ ์ง์ ‘ ๋ฐœ๊ธ‰ยท์ž…๋ ฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. Transcribe ๋ฐ Bedrock ์„œ๋น„์Šค ํ™œ์„ฑํ™”(๋ฆฌ์ „๋ณ„ ๋ชจ๋ธ ์•ก์„ธ์Šค ์Šน์ธ ํฌํ•จ)๋„ ์‚ฌ์šฉ์ž ์ฑ…์ž„์ž…๋‹ˆ๋‹ค.

  3. AWS ์‚ฌ์šฉ์— ๋”ฐ๋ฅธ ๊ณผ๊ธˆ์€ ์‚ฌ์šฉ์ž ๋ถ€๋‹ด AWS Transcribe Streaming ๊ณผ AWS Bedrock ์€ ์ข…๋Ÿ‰์ œ ์œ ๋ฃŒ ์„œ๋น„์Šค์ž…๋‹ˆ๋‹ค. ๋ณธ ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ํ˜ธ์ถœํ•˜๋Š” ๋ชจ๋“  API ์š”์ฒญ์— ๋Œ€ํ•œ ์š”๊ธˆ์€ ์ „์ ์œผ๋กœ ์‚ฌ์šฉ์ž์˜ AWS ๊ณ„์ •์— ์ฒญ๊ตฌ๋˜๋ฉฐ, ํ”Œ๋Ÿฌ๊ทธ์ธ ์ œ์ž‘์ž๋Š” ๊ณผ๊ธˆ ๊ธˆ์•ก์— ๋Œ€ํ•ด ์–ด๋– ํ•œ ์ฑ…์ž„๋„ ์ง€์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋น„์šฉ ๊ด€๋ฆฌ๊ฐ€ ํ•„์š”ํ•œ ๊ฒฝ์šฐ AWS Cost Explorer ๋ฐ Budgets ๋ฅผ ํ†ตํ•ด ์ง์ ‘ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜์„ธ์š”.

  4. AWS ์ž๊ฒฉ ์ฆ๋ช…์€ data.json ์— ํ‰๋ฌธ์œผ๋กœ ์ €์žฅ๋ฉ๋‹ˆ๋‹ค ์ž…๋ ฅํ•œ AWS access key ID ๋ฐ secret access key ๋Š” Obsidian ์ด ๊ด€๋ฆฌํ•˜๋Š” ํ”Œ๋Ÿฌ๊ทธ์ธ ๋ฐ์ดํ„ฐ ํŒŒ์ผ <vault>/.obsidian/plugins/obsidian-transcribe-plugin/data.json ์— ์•”ํ˜ธํ™” ์—†์ด ํ‰๋ฌธ(JSON) ์œผ๋กœ ์ €์žฅ๋ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ ์‚ฌํ•ญ์— ์œ ์˜ํ•˜์„ธ์š”.

    • vault ๋””๋ ‰ํ„ฐ๋ฆฌ ์ „์ฒด๋ฅผ Git, iCloud, Dropbox, OneDrive, Obsidian Sync ๋“ฑ์œผ๋กœ ๋™๊ธฐํ™”ํ•˜๋Š” ๊ฒฝ์šฐ ์ž๊ฒฉ ์ฆ๋ช…์ด ํ•จ๊ป˜ ์ „์†กยท๋ฐฑ์—…๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • vault ๋ฅผ ํƒ€์ธ๊ณผ ๊ณต์œ ํ•˜๊ฑฐ๋‚˜ ์••์ถ•ํ•˜์—ฌ ์ „๋‹ฌํ•  ๋•Œ data.json ์ด ํฌํ•จ๋˜์ง€ ์•Š๋„๋ก ์ฃผ์˜ํ•˜์„ธ์š”.
    • AWS ๋ชจ๋ฒ” ์‚ฌ๋ก€์— ๋”ฐ๋ผ ์ตœ์†Œ ๊ถŒํ•œ(least privilege) IAM ์‚ฌ์šฉ์ž ๋˜๋Š” ์—ญํ• ์„ ๋ณ„๋„๋กœ ๋งŒ๋“ค๊ณ , ์ •๊ธฐ์ ์œผ๋กœ ํ‚ค๋ฅผ ๋กœํ…Œ์ด์…˜ํ•˜๋Š” ๊ฒƒ์„ ๊ฐ•๋ ฅํžˆ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.

์ฃผ์š” ๊ธฐ๋Šฅ

  • ์‚ฌ์ด๋“œ๋ฐ”์˜ ์‹œ์ž‘/์ค‘์ง€ ๋ฒ„ํŠผ ํ•˜๋‚˜๋กœ ์‹ค์‹œ๊ฐ„ ์ „์‚ฌ ๊ฐœ์‹œยท์ข…๋ฃŒ
  • ์ŠคํŠธ๋ฆฌ๋ฐ ์ค‘ ๋นจ๊ฐ„ ํŽ„์Šค ๋…น์Œ ์ธ๋””์ผ€์ดํ„ฐ + ๋นจ๊ฐ„ ์ค‘์ง€ ๋ฒ„ํŠผ์œผ๋กœ ์ƒํƒœ ๋ช…ํ™•ํžˆ ํ‘œ์‹œ
  • Partial result(์ž ์ •) ์™€ Final result(ํ™•์ •) ๋ฅผ ์‹œ๊ฐ์ ์œผ๋กœ ๊ตฌ๋ถ„ํ•˜์—ฌ ํ‘œ์‹œ
  • ์ „์‚ฌ ๋ณด๋“œ์—์„œ ํ…์ŠคํŠธ ๋“œ๋ž˜๊ทธ ์„ ํƒ ๊ฐ€๋Šฅ (ํŽธ์ง‘ ๋ชจ๋“œ ์ง„์ž… ๋ถˆํ•„์š”)
  • ์ „์‚ฌ ๋ณด๋“œ ์šฐ์ƒ๋‹จ ํด๋ฆฝ๋ณด๋“œ ๋ณต์‚ฌ ์•„์ด์ฝ˜ โ€” ํ•œ ๋ฒˆ์˜ ํด๋ฆญ์œผ๋กœ ์ „์ฒด ๋ณธ๋ฌธ ๋ณต์‚ฌ
  • ์ „์‚ฌ ์ข…๋ฃŒ ์‹œ YYYY-MM-DD HH-mm.md ํ˜•์‹์œผ๋กœ ๋งˆํฌ๋‹ค์šด ๋…ธํŠธ ์ž๋™ ์ €์žฅ (ํ”„๋ก ํŠธ๋งคํ„ฐ ํฌํ•จ)
  • ์ตœ๊ทผ ์ „์‚ฌ 5๊ฐœ ๋ฆฌ์ŠคํŠธ โ€” ์‚ฌ์ด๋“œ๋ฐ” ํ•˜๋‹จ์— ํ‘œ์‹œ, ํด๋ฆญํ•˜๋ฉด ์ฆ‰์‹œ ๋กœ๋“œยทํŽธ์ง‘ยท๋ถ„์„ ๊ฐ€๋Šฅ
  • ์ €์žฅ๋œ ๋…ธํŠธ์˜ ์ง์ ‘ ํŽธ์ง‘(ํ›„๋ณด์ •) ์ง€์›
  • AWS Bedrock ์„ ํ†ตํ•œ ์š”์•ฝยทํ‚ค์›Œ๋“œยท์ฒดํฌ๋ฐ•์Šค ํ˜•์‹ ์•ก์…˜ ์•„์ดํ…œ ๋ถ„์„ ๊ฒฐ๊ณผ ๋…ธํŠธ์— ๋ถ€์ฐฉ
  • ์‚ฌ์ด๋“œ๋ฐ” ์ธ๋ผ์ธ ์ปจํŠธ๋กค โ€” ์ „์‚ฌ ์–ธ์–ด์™€ Bedrock ๋ชจ๋ธ์„ ์„ค์ • ํƒญ์„ ๊ฑฐ์น˜์ง€ ์•Š๊ณ  ์‚ฌ์ด๋“œ๋ฐ”์—์„œ ์ฆ‰์‹œ ์„ ํƒ
  • Bedrock ๋ชจ๋ธ ๋“œ๋กญ๋‹ค์šด โ€” ์ƒˆ๋กœ๊ณ ์นจ ๋ฒ„ํŠผ์œผ๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ชจ๋ธ/์ถ”๋ก  ํ”„๋กœํ•„ ์ž๋™ ์กฐํšŒ
  • ์ปค์Šคํ…€ ๋‹จ์–ด์žฅ ์ž๋™ ๋™๊ธฐํ™” โ€” ์„ค์ •์—์„œ ๋‹จ์–ด ์ž…๋ ฅ ํ›„ ๋™๊ธฐํ™” ๋ฒ„ํŠผ์œผ๋กœ AWS Transcribe์— ์ž๋™ ๋“ฑ๋ก
  • ์ปค์Šคํ…€ ๋ถ„์„ ํ”„๋กฌํ”„ํŠธ โ€” ์ž์œ  ํ…์ŠคํŠธ๋กœ AI ๋ถ„์„์— ์ถ”๊ฐ€ ์ง€์‹œ ์ „๋‹ฌ
  • ์˜์–ด / ํ•œ๊ตญ์–ด UI (์„ค์ •์—์„œ ์ „ํ™˜)
  • ๋ณธ๋ฌธ ๊ธธ์ด ์ตœ๋Œ€ 200,000์ž(์•ฝ 8~12์‹œ๊ฐ„ ํšŒ์˜) ๋ถ„์„ ์ง€์›

์„ค์น˜

์ˆ˜๋™ ์„ค์น˜ (ํ˜„์žฌ ๊ถŒ์žฅ)

  1. ์ด ์ €์žฅ์†Œ์˜ GitHub Releases ํŽ˜์ด์ง€์—์„œ ์ตœ์‹  ๋ฆด๋ฆฌ์Šค์˜ main.js, manifest.json, styles.css ๋ฅผ ๋‹ค์šด๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค.
  2. Obsidian vault ๋‚ด๋ถ€์˜ ๋‹ค์Œ ๊ฒฝ๋กœ์— ์„ธ ํŒŒ์ผ์„ ๋ณต์‚ฌํ•ฉ๋‹ˆ๋‹ค.
    <vault>/.obsidian/plugins/obsidian-transcribe-plugin/
    
  3. Obsidian ์„ ์žฌ์‹œ์ž‘ํ•œ ๋’ค Settings โ†’ Community plugins ์—์„œ Transcribe ๋ฅผ ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค.

BRAT ์„ ํ†ตํ•œ ๋ฒ ํƒ€ ์„ค์น˜

  1. BRAT ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์„ค์น˜ยทํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค.
  2. BRAT ์„ค์ •์—์„œ Add Beta Plugin ์„ ์„ ํƒํ•˜๊ณ  ๋ณธ ์ €์žฅ์†Œ ์ฃผ์†Œ๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.

AWS ์‚ฌ์ „ ์ค€๋น„

1. IAM ์‚ฌ์šฉ์ž ์ƒ์„ฑ ๋ฐ ์ตœ์†Œ ๊ถŒํ•œ ๋ถ€์—ฌ

AWS ์ฝ˜์†” ๋˜๋Š” CLI ๋กœ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฐฉ์‹ ์•ก์„ธ์Šค(access key) ์ „์šฉ IAM ์‚ฌ์šฉ์ž๋ฅผ ์ƒ์„ฑํ•œ ๋’ค ๋‹ค์Œ ์ตœ์†Œ ๊ถŒํ•œ ์ •์ฑ…์„ ๋ถ€์—ฌํ•ฉ๋‹ˆ๋‹ค.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "TranscribeStreaming",
      "Effect": "Allow",
      "Action": [
        "transcribe:StartStreamTranscription",
        "transcribe:StartStreamTranscriptionWebSocket"
      ],
      "Resource": "*"
    },
    {
      "Sid": "BedrockInvokeModel",
      "Effect": "Allow",
      "Action": [
        "bedrock:InvokeModel"
      ],
      "Resource": "*"
    },
    {
      "Sid": "BedrockModelDiscovery",
      "Effect": "Allow",
      "Action": [
        "bedrock:ListFoundationModels",
        "bedrock:ListInferenceProfiles"
      ],
      "Resource": "*"
    },
    {
      "Sid": "TranscribeVocabulary",
      "Effect": "Allow",
      "Action": [
        "transcribe:CreateVocabulary",
        "transcribe:UpdateVocabulary",
        "transcribe:GetVocabulary",
        "transcribe:DeleteVocabulary"
      ],
      "Resource": "*"
    }
  ]
}

์‹ค๋ฌด์—์„œ๋Š” Resource ๋ฅผ ํŠน์ • Bedrock ๋ชจ๋ธ ARN ์œผ๋กœ ์ œํ•œํ•˜์—ฌ ๊ถŒํ•œ ๋ฒ”์œ„๋ฅผ ๋” ์ขํžˆ๋Š” ๊ฒƒ์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.

2. Bedrock ๋ชจ๋ธ ์•ก์„ธ์Šค ์Šน์ธ

AWS ์ฝ˜์†” โ†’ Bedrock โ†’ Model access ์—์„œ ์‚ฌ์šฉํ•˜๋ ค๋Š” ํŒŒ์šด๋ฐ์ด์…˜ ๋ชจ๋ธ(์˜ˆ: anthropic.claude-3-sonnet-*, anthropic.claude-3-haiku-* ๋“ฑ) ์˜ ์•ก์„ธ์Šค๋ฅผ ์š”์ฒญยท์Šน์ธ๋ฐ›์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

Claude 4.5 ๊ณ„์—ด ์ฐธ๊ณ : Claude Sonnet 4.5, Claude Haiku 4.5 ๊ฐ™์€ ์ตœ์‹  ๋ชจ๋ธ์€ cross-Region inference profile ์„ ํ†ตํ•ด์„œ๋งŒ ํ˜ธ์ถœ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ์„ค์ •์˜ ๋ชจ๋ธ ๋“œ๋กญ๋‹ค์šด์—์„œ โšก ์•„์ด์ฝ˜์ด ๋ถ™์€ ํ•ญ๋ชฉ(์˜ˆ: global.anthropic.claude-haiku-4-5-20251001-v1:0)์„ ์„ ํƒํ•˜์„ธ์š”.

3. ๋ฆฌ์ „ ์„ ํƒ

Transcribe Streaming ๊ณผ Bedrock ์ด ๋™์ผ ๋ฆฌ์ „์—์„œ ๋ชจ๋‘ ์ง€์›๋˜๋Š” ๊ฐ’์„ ์‚ฌ์šฉํ•˜์„ธ์š”. ์ดˆ๊ธฐ ๊ธฐ๋ณธ๊ฐ’์€ us-east-1 ์ž…๋‹ˆ๋‹ค.

์„ค์ • ๊ฐœ์š”

Settings โ†’ Community plugins โ†’ Transcribe โ†’ Options ์—์„œ ๋‹ค์Œ ํ•ญ๋ชฉ์„ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.

๊ตฌ๋ถ„ํ•ญ๋ชฉ์„ค๋ช…
์–ธ์–ดDisplay languageUI ํ‘œ์‹œ ์–ธ์–ด (English / ํ•œ๊ตญ์–ด). ์ฒซ ํ•ญ๋ชฉ์— ๋ฐฐ์น˜๋ฉ๋‹ˆ๋‹ค.
AWS credentialsAWS access key IDIAM ์‚ฌ์šฉ์ž์˜ access key ID (์ตœ๋Œ€ 128์ž)
AWS secret access keyIAM ์‚ฌ์šฉ์ž์˜ secret access key (์ตœ๋Œ€ 256์ž, ์ž…๋ ฅ์€ ๋งˆ์Šคํ‚น ํ‘œ์‹œ)
AWS regionTranscribe ๋ฐ Bedrock ํ˜ธ์ถœ ๋ฆฌ์ „ (๊ธฐ๋ณธ๊ฐ’ us-east-1)
TranscriptionTranscription language์ „์‚ฌ ์–ธ์–ด ์ฝ”๋“œ (ko-KR ๋˜๋Š” en-US). ์‚ฌ์ด๋“œ๋ฐ”์—์„œ๋„ ์ฆ‰์‹œ ๋ณ€๊ฒฝ ๊ฐ€๋Šฅ
Transcript folder์ „์‚ฌ ๋…ธํŠธ๋ฅผ ์ €์žฅํ•  vault ๋‚ด ํด๋” ๊ฒฝ๋กœ. ๋นˆ ๊ฐ’์ด๋ฉด vault ๋ฃจํŠธ ์‚ฌ์šฉ. vault ํด๋” ์ž๋™์™„์„ฑ ์ œ๊ณต
AnalysisBedrock model ID๋“œ๋กญ๋‹ค์šด์—์„œ ์„ ํƒํ•˜๊ฑฐ๋‚˜ ์ง์ ‘ ์ž…๋ ฅ. ์ƒˆ๋กœ๊ณ ์นจ ๋ฒ„ํŠผ์œผ๋กœ AWS์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ชจ๋ธ ์ž๋™ ์กฐํšŒ. ์‚ฌ์ด๋“œ๋ฐ”์—์„œ๋„ ์ฆ‰์‹œ ๋ณ€๊ฒฝ ๊ฐ€๋Šฅ
๋ถ„์„ ์ถ”๊ฐ€ ์ง€์‹œ๋ถ„์„ ๋ชจ๋ธ์— ์ „๋‹ฌํ•  ์ถ”๊ฐ€ ์ง€์‹œ์‚ฌํ•ญ (์ž์œ  ํ…์ŠคํŠธ)
Vocabulary์ปค์Šคํ…€ ๋‹จ์–ด ๋ชฉ๋กAWS Transcribe๊ฐ€ ์ธ์‹ํ•  ๋‹จ์–ด ๋ชฉ๋ก. ํ•œ ์ค„์— ํ•˜๋‚˜. 'AWS์— ๋™๊ธฐํ™”' ๋ฒ„ํŠผ์œผ๋กœ ๋“ฑ๋ก

์‚ฌ์šฉ ๋ฐฉ๋ฒ•

  1. ๋ช…๋ น ํŒ”๋ ˆํŠธ ๋˜๋Š” ๋ฆฌ๋ณธ ์•„์ด์ฝ˜์˜ Open transcribe view ๋ช…๋ น์œผ๋กœ ์‚ฌ์ด๋“œ๋ฐ”๋ฅผ ์—ฝ๋‹ˆ๋‹ค.
  2. ์‚ฌ์ด๋“œ๋ฐ” ์ƒ๋‹จ์˜ ์ธ๋ผ์ธ ๋“œ๋กญ๋‹ค์šด์—์„œ ์ „์‚ฌ ์–ธ์–ด ์™€ Bedrock ๋ชจ๋ธ ์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. ์„ค์ • ํƒญ์— ์ €์žฅํ•œ ๊ฐ’์ด ๊ทธ๋Œ€๋กœ ๋ฐ˜์˜๋˜๋ฉฐ, ์‚ฌ์ด๋“œ๋ฐ”์—์„œ ๋ฐ”๊พธ๋ฉด ์„ค์ • ํƒญ์—๋„ ์ฆ‰์‹œ ๋™๊ธฐํ™”๋ฉ๋‹ˆ๋‹ค.
  3. Start streaming ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ ๋งˆ์ดํฌ ๊ถŒํ•œ์„ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค.
  4. ๋ฐœํ™”๋ฅผ ์‹œ์ž‘ํ•˜๋ฉด ์ž ์ •(ํฌ๋ฏธํ•œ ๊ธ€์”จ) โ†’ ํ™•์ •(์ผ๋ฐ˜ ๊ธ€์”จ) ์ˆœ์œผ๋กœ ํ…์ŠคํŠธ๊ฐ€ ๋ˆ„์ ๋ฉ๋‹ˆ๋‹ค. ๋นจ๊ฐ„ ํŽ„์Šค ์ธ๋””์ผ€์ดํ„ฐ๊ฐ€ ๋…น์Œ ์ค‘์ž„์„ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.
  5. Stop streaming (๋นจ๊ฐ„ ๋ฒ„ํŠผ) ์„ ๋ˆ„๋ฅด๋ฉด ๋ˆ„์ ๋œ ๋‚ด์šฉ์ด YYYY-MM-DD HH-mm.md ๋กœ ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.
  6. ์ „์‚ฌ ๋ณด๋“œ์—์„œ ํ…์ŠคํŠธ๋ฅผ ๋“œ๋ž˜๊ทธํ•ด ์„ ํƒํ•˜๊ฑฐ๋‚˜, ์šฐ์ƒ๋‹จ ๐Ÿ“‹ ์•„์ด์ฝ˜์œผ๋กœ ์ „์ฒด ๋ณต์‚ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  7. Edit ๋ฒ„ํŠผ์œผ๋กœ ์˜คํƒˆ์ž๋ฅผ ๊ต์ •ํ•˜๊ฑฐ๋‚˜, Analyze ๋ฒ„ํŠผ์œผ๋กœ Bedrock ๋ถ„์„ ๊ฒฐ๊ณผ(์š”์•ฝ, ํ‚ค์›Œ๋“œ, ๊ฒฐ์ •์‚ฌํ•ญ, ์•ก์…˜ ์•„์ดํ…œ, ์ฐธ๊ณ ์‚ฌํ•ญ ์„น์…˜์˜ ํšŒ์˜๋ก ํ˜•์‹)๋ฅผ ๋…ธํŠธ ๋์— ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
  8. ํ•˜๋‹จ ์ตœ๊ทผ ์ „์‚ฌ ๋ฆฌ์ŠคํŠธ์—์„œ ์ด์ „ ๋…ธํŠธ๋ฅผ ํด๋ฆญํ•˜๋ฉด ์ฆ‰์‹œ ๋กœ๋“œ๋˜์–ด ํŽธ์ง‘ยท๋ณต์‚ฌยท๋ถ„์„์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

๋ณด์•ˆ ๊ถŒ์žฅ ์‚ฌํ•ญ

  • vault ๋ฅผ Git ์ด๋‚˜ ํด๋ผ์šฐ๋“œ ์„œ๋น„์Šค๋กœ ๋™๊ธฐํ™”ํ•˜๋Š” ๊ฒฝ์šฐ, .obsidian/plugins/obsidian-transcribe-plugin/data.json ์„ ๋ณ„๋„๋กœ ์ œ์™ธํ•  ์ˆ˜ ์—†๋‹ค๋ฉด ์ „์šฉ ์ €๊ถŒํ•œ IAM ํ‚ค ์‚ฌ์šฉ + ์ •๊ธฐ ํ‚ค ๋กœํ…Œ์ด์…˜ ์„ ๋ฐ˜๋“œ์‹œ ๋ณ‘ํ–‰ํ•˜์„ธ์š”.
  • access key ๊ฐ€ ์™ธ๋ถ€์— ๋…ธ์ถœ๋˜์—ˆ๋‹ค๊ณ  ์˜์‹ฌ๋˜๋Š” ์ฆ‰์‹œ AWS ์ฝ˜์†”์—์„œ ํ•ด๋‹น ํ‚ค๋ฅผ ๋น„ํ™œ์„ฑํ™”ยท์‚ญ์ œํ•˜์„ธ์š”.
  • ๊ณต์šฉ ๋˜๋Š” ๊ณต์œ  ์ปดํ“จํ„ฐ์—์„œ๋Š” ๋ณธ ํ”Œ๋Ÿฌ๊ทธ์ธ ์‚ฌ์šฉ์„ ๊ถŒ์žฅํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋ผ์ด์„ ์Šค

MIT License

๊ฐœ๋ฐœ์ž โ€” ๋ฆด๋ฆฌ์Šค ์ ˆ์ฐจ

๋‹ค์Œ ๋ฒ„์ „์„ ๋ฐฐํฌํ•  ๋•Œ๋Š” npm version ์„ ์‚ฌ์šฉํ•ด ์„ธ ํŒŒ์ผ(package.json, manifest.json, versions.json)์„ ํ•œ ๋ฒˆ์— ๋™๊ธฐํ™”ํ•œ ๋’ค ํƒœ๊ทธ๋ฅผ ํ‘ธ์‹œํ•ฉ๋‹ˆ๋‹ค. ํƒœ๊ทธ ํ‘ธ์‹œ ์ด๋ฒคํŠธ๊ฐ€ GitHub Actions Release ์›Œํฌํ”Œ๋กœ์šฐ๋ฅผ ํŠธ๋ฆฌ๊ฑฐํ•ด ์ž๋™์œผ๋กœ ๋ฒˆ๋“ค์„ ๋นŒ๋“œํ•˜๊ณ  main.js, manifest.json, styles.css ๋ฅผ ๋ฆด๋ฆฌ์Šค ์ž์‚ฐ์œผ๋กœ ์—…๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค.

# 1.0.1 ๋“ฑ ๋‹ค์Œ ๋ฒ„์ „์œผ๋กœ ์˜ฌ๋ฆฌ๊ธฐ (์ปค๋ฐ‹ + ํƒœ๊ทธ ์ž๋™ ์ƒ์„ฑ, v ์ ‘๋‘์‚ฌ ์—†์Œ)
npm version 1.0.1 -m "chore(release): %s"

# ์ปค๋ฐ‹๊ณผ ํƒœ๊ทธ๋ฅผ ํ•จ๊ป˜ ํ‘ธ์‹œ
git push --follow-tags origin main

ํƒœ๊ทธ ์ด๋ฆ„์€ manifest.json.version ๊ณผ ์ •ํ™•ํžˆ ์ผ์น˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(์›Œํฌํ”Œ๋กœ์šฐ๊ฐ€ ๊ฒ€์ฆํ•ฉ๋‹ˆ๋‹ค).


๐Ÿ‡บ๐Ÿ‡ธ English

Overview

Transcribe is an Obsidian community plugin that streams microphone audio to AWS Transcribe in real time, saves the result as a Markdown note, and lets you analyze the transcript with an AWS Bedrock foundation model โ€” all from a dedicated sidebar view.

โš ๏ธ Read Before Use โ€” Required Disclosures

Before installing or using this plugin, you must understand and agree to the following four points.

  1. External network usage This plugin calls the following AWS service endpoints to operate:

    • AWS Transcribe Streaming (transcribestreaming.<region>.amazonaws.com) โ€” sends captured PCM audio chunks in real time and receives transcripts.
    • AWS Bedrock Runtime (bedrock-runtime.<region>.amazonaws.com) โ€” sends the transcript text to a user-selected foundation model and receives the analysis.
    • AWS Bedrock (bedrock.<region>.amazonaws.com) โ€” lists available models in the settings screen.
  2. Your own AWS account and credentials are required This plugin does not provide any hosted AI service. You must create your own AWS account, issue your own IAM access key ID and secret access key, and enable the Transcribe and Bedrock services (including per-region model access approval) yourself.

  3. You are solely responsible for AWS usage charges AWS Transcribe Streaming and AWS Bedrock are paid, usage-based services. Every API call this plugin makes is billed to your AWS account. The plugin author assumes no responsibility for any charges incurred. Use AWS Cost Explorer and AWS Budgets to monitor spending.

  4. AWS credentials are stored in plain text in data.json The AWS access key ID and secret access key you enter are stored unencrypted (plain JSON) in the plugin data file managed by Obsidian: <vault>/.obsidian/plugins/obsidian-transcribe-plugin/data.json Be aware of the following:

    • If you sync the vault directory via Git, iCloud, Dropbox, OneDrive, Obsidian Sync, etc., your credentials will be transmitted and backed up alongside the vault.
    • When sharing or archiving the vault, make sure data.json is excluded.
    • Following AWS best practices, use a dedicated least-privilege IAM user or role and rotate the keys regularly.

Features

  • Start and stop real-time transcription with a single sidebar button
  • Red pulsing recording indicator + red stop button for clear state feedback
  • Partial and final results rendered with distinct visual styles
  • Drag-select text directly on the transcript board (no edit mode needed)
  • Clipboard copy icon floating on the transcript board โ€” one click to copy all
  • Auto-save the transcript as YYYY-MM-DD HH-mm.md with YAML front matter
  • Recent transcripts list (5 items) at the bottom of the sidebar โ€” click to load, edit, or analyze
  • Post-edit the saved transcript directly from the sidebar
  • Append AWS Bedrock analysis (summary, keywords, checkbox-style action items) to the note
  • Sidebar inline controls โ€” pick transcription language and Bedrock model directly in the sidebar, no need to open Settings
  • Bedrock model dropdown โ€” refresh button auto-discovers available models and inference profiles
  • Custom vocabulary auto-sync โ€” enter words in settings, click sync to automatically register with AWS Transcribe
  • Custom analysis prompt โ€” add free-form instructions to guide the AI analysis
  • English / Korean UI (switch in settings)
  • Supports transcripts up to 200,000 characters (~8โ€“12 hour meetings)

Installation

Manual install (recommended for now)

  1. Download main.js, manifest.json, and styles.css from the latest GitHub Release.
  2. Copy the three files into your vault at:
    <vault>/.obsidian/plugins/obsidian-transcribe-plugin/
    
  3. Restart Obsidian, then enable Transcribe under Settings โ†’ Community plugins.

Beta install via BRAT

  1. Install and enable the BRAT plugin.
  2. In BRAT, choose Add Beta Plugin and provide this repository URL.

AWS Prerequisites

1. Create an IAM user with least-privilege permissions

Create a programmatic-access IAM user and attach the following minimal policy:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "TranscribeStreaming",
      "Effect": "Allow",
      "Action": [
        "transcribe:StartStreamTranscription",
        "transcribe:StartStreamTranscriptionWebSocket"
      ],
      "Resource": "*"
    },
    {
      "Sid": "BedrockInvokeModel",
      "Effect": "Allow",
      "Action": [
        "bedrock:InvokeModel"
      ],
      "Resource": "*"
    },
    {
      "Sid": "BedrockModelDiscovery",
      "Effect": "Allow",
      "Action": [
        "bedrock:ListFoundationModels",
        "bedrock:ListInferenceProfiles"
      ],
      "Resource": "*"
    },
    {
      "Sid": "TranscribeVocabulary",
      "Effect": "Allow",
      "Action": [
        "transcribe:CreateVocabulary",
        "transcribe:UpdateVocabulary",
        "transcribe:GetVocabulary",
        "transcribe:DeleteVocabulary"
      ],
      "Resource": "*"
    }
  ]
}

For production, scope Resource down to specific Bedrock model ARNs.

2. Approve Bedrock model access

In the AWS console, go to Bedrock โ†’ Model access and request/approve access to the foundation model you plan to use (for example anthropic.claude-3-sonnet-*, anthropic.claude-3-haiku-*).

Claude 4.5 note: Claude Sonnet 4.5 and Claude Haiku 4.5 are only available through cross-Region inference profiles. In the model dropdown, select items with the โšก icon (e.g. global.anthropic.claude-haiku-4-5-20251001-v1:0).

3. Pick a region

Choose a region where both Transcribe Streaming and Bedrock are available. The default is us-east-1.

Settings overview

Configure the following under Settings โ†’ Community plugins โ†’ Transcribe โ†’ Options:

SectionFieldDescription
LanguageDisplay languageUI language (English / ํ•œ๊ตญ์–ด). Always the first item.
AWS credentialsAWS access key IDIAM access key ID (max 128 chars)
AWS secret access keyIAM secret access key (max 256 chars, masked input)
AWS regionRegion used for Transcribe and Bedrock (default us-east-1)
TranscriptionTranscription languageTranscription language code (ko-KR or en-US). Also switchable from the sidebar
Transcript folderFolder path inside the vault where transcripts are saved. Empty means vault root. Vault folder autocompletion provided.
AnalysisBedrock model IDSelect from dropdown or keep custom value. Refresh button auto-discovers models from AWS. Also switchable from the sidebar
Custom analysis promptAdditional instructions for the analysis model (free-form text)
VocabularyCustom vocabulary wordsWords for AWS Transcribe to recognize. One per line. Click 'Sync to AWS' to register.

Usage

  1. Open the sidebar via the Open transcribe view command or the ribbon icon.
  2. At the top of the sidebar, use the inline dropdowns to pick the transcription language and the Bedrock model. These reflect the values saved in Settings and stay in sync both ways โ€” changes in the sidebar update the settings tab and vice versa.
  3. Click Start streaming and grant microphone permission.
  4. As you speak, partial results appear in a muted style and are replaced by final results. A red pulsing indicator shows recording is active.
  5. Click Stop streaming (red button) to save the transcript as YYYY-MM-DD HH-mm.md.
  6. Drag-select text on the transcript board, or click the ๐Ÿ“‹ icon in the top-right corner to copy all.
  7. Use Edit to correct errors, or Analyze to append Bedrock-generated meeting minutes (Summary, Keywords, Decisions, Action items, and Notes sections).
  8. Click any item in the Recent transcripts list at the bottom to instantly load a previous note for editing, copying, or analysis.

Security recommendations

  • If you sync your vault, prefer a dedicated low-privilege IAM key and rotate it regularly, because excluding a single file inside .obsidian/plugins/ from sync is often not possible.
  • If you suspect your access key has been exposed, deactivate and delete it immediately in the AWS console.
  • Avoid using this plugin on shared or public computers.

License

MIT License

Developer โ€” release flow

To cut a new version, use npm version so that package.json, manifest.json, and versions.json all move together in a single commit, then push the tag. The tag push triggers the GitHub Actions Release workflow, which builds the bundle and uploads main.js, manifest.json, and styles.css as release assets automatically.

# Bump to the next version (creates a commit and tag, no "v" prefix)
npm version 1.0.1 -m "chore(release): %s"

# Push the commit and tag together
git push --follow-tags origin main

The tag name must exactly match manifest.json.version โ€” the workflow verifies this.

For plugin developers

Search results and similarity scores are powered by semantic analysis of your plugin's README. If your plugin isn't appearing for searches you'd expect, try updating your README to clearly describe your plugin's purpose, features, and use cases.