{"slug":"assemblyai-transcription","title":"AssemblyAI Transcription & Audio Intelligence","tags":["assemblyai","transcription","audio","tts","call-analysis"],"agent_summary":"AssemblyAI API reference for audio transcription, sentiment analysis, entity detection, speaker diarization, and LeMUR LLM-powered audio analysis. Node.js SDK patterns and polling workflow.","trigger_phrases":["transcribe audio","assemblyai","audio intelligence","call analysis","speaker diarization","lemur audio","sentiment analysis audio","audio transcription api"],"runnable":true,"markdown":"\n# AssemblyAI Transcription & Audio Intelligence\n\nAssemblyAI provides audio transcription plus AI-powered analysis layers: sentiment, entities, speakers, chapters, and LeMUR for LLM-over-audio tasks.\n\n## Auth & Setup\n\n```bash\nnpm install assemblyai\n```\n\nAPI key: `D:\\Ecosystem\\secrets\\MASTER_API_KEYS.env` → `ASSEMBLYAI_API_KEY`\n\nBase URL: `https://api.assemblyai.com/v2/`\n\nRecommended model: `universal-2` (not `nano` — deprecated)\n\n## Basic Transcription (Node.js SDK)\n\n```javascript\nimport { AssemblyAI } from 'assemblyai';\n\nconst client = new AssemblyAI({ apiKey: process.env.ASSEMBLYAI_API_KEY });\n\nconst transcript = await client.transcripts.transcribe({\n  audio_url: 'https://example.com/recording.mp3',\n  speech_model: 'universal-2'\n});\n\nconsole.log(transcript.text);\n```\n\n## Transcription with Intelligence Features\n\n```javascript\nconst transcript = await client.transcripts.transcribe({\n  audio_url: 'https://example.com/call.mp3',\n  sentiment_analysis: true,\n  entity_detection: true,\n  speaker_labels: true,       // diarization — who said what\n  auto_chapters: true,        // automatic chapter markers\n  summarization: true,\n  summary_model: 'informative',\n  summary_type: 'bullets'\n});\n\n// Speaker labels\ntranscript.utterances.forEach(u => {\n  console.log(`Speaker ${u.speaker}: ${u.text}`);\n});\n\n// Sentiment per sentence\ntranscript.sentiment_analysis_results.forEach(r => {\n  console.log(`${r.sentiment}: ${r.text}`);\n});\n```\n\n## LeMUR — LLM Over Audio\n\nRun any Claude prompt against the audio without transcribing first.\n\n```javascript\nconst response = await client.lemur.task({\n  transcript_ids: [transcript.id],\n  prompt: 'Summarize the key objections raised and how they were handled.',\n  final_model: 'anthropic/claude-3-5-sonnet'\n});\n\nconsole.log(response.response);\n```\n\n## Async Pattern (REST API)\n\n```bash\n# Step 1: Submit\ncurl -X POST https://api.assemblyai.com/v2/transcript \\\n  -H \"Authorization: $ASSEMBLYAI_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"audio_url\": \"https://example.com/audio.mp3\", \"speech_model\": \"universal-2\"}'\n\n# Returns: {\"id\": \"abc123\", \"status\": \"processing\"}\n\n# Step 2: Poll (10s interval)\ncurl https://api.assemblyai.com/v2/transcript/abc123 \\\n  -H \"Authorization: $ASSEMBLYAI_API_KEY\"\n```\n\n## Intelligence Feature Cost Matrix\n\n| Feature | Extra Cost | Use Case |\n|---------|-----------|----------|\n| sentiment_analysis | Low | Call coaching, review mining |\n| entity_detection | Low | CRM extraction, lead qualification |\n| speaker_labels | Low | Multi-party call diarization |\n| auto_chapters | Free | Video chapter markers |\n| summarization | Low | Executive call summaries |\n| LeMUR | Per token | Any LLM analysis over audio |\n\n## Use Cases for Video Production\n\n- Transcribe client testimonial recordings for captions\n- Extract chapter markers from long-form video recordings\n- Analyze call recordings for script research (real objection language)\n- Generate SRT files for video captioning pipeline\n\n## Related Topics\n\n- [[merlino-voice]] — generate TTS audio for videos\n- [[social-transcript-extractor]] — extract transcripts from social platforms\n- [[yt-transcript-pipeline]] — YouTube transcript automation\n\n#video-sop #assemblyai #transcription #audio #tts #call-analysis\n","html":"<h1>AssemblyAI Transcription &#x26; Audio Intelligence</h1>\n<p>AssemblyAI provides audio transcription plus AI-powered analysis layers: sentiment, entities, speakers, chapters, and LeMUR for LLM-over-audio tasks.</p>\n<h2>Auth &#x26; Setup</h2>\n<pre><code class=\"language-bash\">npm install assemblyai\n</code></pre>\n<p>API key: <code>D:\\Ecosystem\\secrets\\MASTER_API_KEYS.env</code> → <code>ASSEMBLYAI_API_KEY</code></p>\n<p>Base URL: <code>https://api.assemblyai.com/v2/</code></p>\n<p>Recommended model: <code>universal-2</code> (not <code>nano</code> — deprecated)</p>\n<h2>Basic Transcription (Node.js SDK)</h2>\n<pre><code class=\"language-javascript\">import { AssemblyAI } from 'assemblyai';\n\nconst client = new AssemblyAI({ apiKey: process.env.ASSEMBLYAI_API_KEY });\n\nconst transcript = await client.transcripts.transcribe({\n  audio_url: 'https://example.com/recording.mp3',\n  speech_model: 'universal-2'\n});\n\nconsole.log(transcript.text);\n</code></pre>\n<h2>Transcription with Intelligence Features</h2>\n<pre><code class=\"language-javascript\">const transcript = await client.transcripts.transcribe({\n  audio_url: 'https://example.com/call.mp3',\n  sentiment_analysis: true,\n  entity_detection: true,\n  speaker_labels: true,       // diarization — who said what\n  auto_chapters: true,        // automatic chapter markers\n  summarization: true,\n  summary_model: 'informative',\n  summary_type: 'bullets'\n});\n\n// Speaker labels\ntranscript.utterances.forEach(u => {\n  console.log(`Speaker ${u.speaker}: ${u.text}`);\n});\n\n// Sentiment per sentence\ntranscript.sentiment_analysis_results.forEach(r => {\n  console.log(`${r.sentiment}: ${r.text}`);\n});\n</code></pre>\n<h2>LeMUR — LLM Over Audio</h2>\n<p>Run any Claude prompt against the audio without transcribing first.</p>\n<pre><code class=\"language-javascript\">const response = await client.lemur.task({\n  transcript_ids: [transcript.id],\n  prompt: 'Summarize the key objections raised and how they were handled.',\n  final_model: 'anthropic/claude-3-5-sonnet'\n});\n\nconsole.log(response.response);\n</code></pre>\n<h2>Async Pattern (REST API)</h2>\n<pre><code class=\"language-bash\"># Step 1: Submit\ncurl -X POST https://api.assemblyai.com/v2/transcript \\\n  -H \"Authorization: $ASSEMBLYAI_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"audio_url\": \"https://example.com/audio.mp3\", \"speech_model\": \"universal-2\"}'\n\n# Returns: {\"id\": \"abc123\", \"status\": \"processing\"}\n\n# Step 2: Poll (10s interval)\ncurl https://api.assemblyai.com/v2/transcript/abc123 \\\n  -H \"Authorization: $ASSEMBLYAI_API_KEY\"\n</code></pre>\n<h2>Intelligence Feature Cost Matrix</h2>\n<p>| Feature | Extra Cost | Use Case |\n|---------|-----------|----------|\n| sentiment_analysis | Low | Call coaching, review mining |\n| entity_detection | Low | CRM extraction, lead qualification |\n| speaker_labels | Low | Multi-party call diarization |\n| auto_chapters | Free | Video chapter markers |\n| summarization | Low | Executive call summaries |\n| LeMUR | Per token | Any LLM analysis over audio |</p>\n<h2>Use Cases for Video Production</h2>\n<ul>\n<li>Transcribe client testimonial recordings for captions</li>\n<li>Extract chapter markers from long-form video recordings</li>\n<li>Analyze call recordings for script research (real objection language)</li>\n<li>Generate SRT files for video captioning pipeline</li>\n</ul>\n<h2>Related Topics</h2>\n<ul>\n<li>[[merlino-voice]] — generate TTS audio for videos</li>\n<li>[[social-transcript-extractor]] — extract transcripts from social platforms</li>\n<li>[[yt-transcript-pipeline]] — YouTube transcript automation</li>\n</ul>\n<p>#video-sop #assemblyai #transcription #audio #tts #call-analysis</p>\n"}