Skip to content

Feedback: integrations-langchain-python

Original URL: https://www.assemblyai.com/docs/integrations/langchain/python
Category: integrations
Generated: 05/08/2025, 4:28:28 pm


Generated: 05/08/2025, 4:28:27 pm

Technical Documentation Analysis & Improvement Recommendations

Section titled “Technical Documentation Analysis & Improvement Recommendations”

Critical Issues Requiring Immediate Attention

Section titled “Critical Issues Requiring Immediate Attention”

Problem: Multiple code snippets are broken or incomplete.

Issues Found:

from langchain.document_loaders # Missing import
from langchain.document_loaders.assemblyai # Missing specific import
# Missing import for aai module
config = aai.TranscriptionConfig(...) # aai is undefined

Solution:

# Complete import examples
from langchain.document_loaders import AssemblyAIAudioTranscriptLoader
from langchain.document_loaders.assemblyai import TranscriptFormat
import assemblyai as aai

2. Missing Prerequisites and Setup Information

Section titled “2. Missing Prerequisites and Setup Information”

Add a Prerequisites section:

## Prerequisites
- Python 3.7 or higher
- AssemblyAI account (free tier available)
- LangChain 0.1.0 or higher
- assemblyai 0.17.0 or higher
### System Requirements
- Internet connection for API calls
- Supported audio formats: MP3, WAV, FLAC, MP4, etc.
- Maximum file size: 5GB per file
## Table of Contents
- [Prerequisites](#prerequisites)
- [Installation](#installation)
- [Authentication](#authentication)
- [Basic Usage](#basic-usage)
- [Advanced Features](#advanced-features)
- [Transcript Formats](#transcript-formats)
- [Error Handling](#error-handling)
- [Troubleshooting](#troubleshooting)
- [Additional Resources](#additional-resources)

Move authentication setup before code examples and create clearer section hierarchy.

from langchain.document_loaders import AssemblyAIAudioTranscriptLoader
import assemblyai as aai
try:
loader = AssemblyAIAudioTranscriptLoader(file_path="./your_file.mp3")
docs = loader.load()
except aai.exceptions.TranscriptError as e:
print(f"Transcription failed: {e}")
except FileNotFoundError:
print("Audio file not found")
except Exception as e:
print(f"An error occurred: {e}")
### Supported Audio Formats
- **Audio files:** MP3, WAV, FLAC, MP4, M4A, AAC, OGG, WMA
- **Video files:** MP4, MOV, AVI, FLV, MKV, WEBM
- **Sources:** Local files, URLs, cloud storage links
- **File size limit:** 5GB per file
- **Duration limit:** No limit for API calls
### Performance Considerations
- **Processing time:** ~25% of audio duration
- **Rate limits:** 100 concurrent requests (paid plans)
- **Free tier:** 5 hours of transcription per month
- **API response time:** Usually 15-30 seconds for 1-hour audio
import os
from langchain.document_loaders import AssemblyAIAudioTranscriptLoader
from langchain.document_loaders.assemblyai import TranscriptFormat
import assemblyai as aai
# Set up authentication
os.environ["ASSEMBLYAI_API_KEY"] = "your-api-key-here"
# Basic transcription
def basic_transcription_example():
audio_file = "https://assembly.ai/sports_injuries.mp3"
loader = AssemblyAIAudioTranscriptLoader(file_path=audio_file)
docs = loader.load()
# Access the transcribed text
transcript_text = docs[0].page_content
metadata = docs[0].metadata
print(f"Transcript: {transcript_text[:100]}...")
print(f"Language detected: {metadata.get('language_code')}")
return docs
# Advanced configuration example
def advanced_transcription_example():
config = aai.TranscriptionConfig(
speaker_labels=True,
auto_chapters=True,
entity_detection=True,
sentiment_analysis=True,
auto_highlights=True
)
loader = AssemblyAIAudioTranscriptLoader(
file_path="./meeting_recording.mp3",
config=config,
transcript_format=TranscriptFormat.PARAGRAPHS
)
docs = loader.load()
# Process each paragraph
for i, doc in enumerate(docs):
print(f"Paragraph {i+1}: {doc.page_content}")
return docs
if __name__ == "__main__":
basic_docs = basic_transcription_example()
advanced_docs = advanced_transcription_example()
# RAG Pipeline with Audio Data
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain.embeddings import OpenAIEmbeddings
from langchain.vectorstores import Chroma
from langchain.chains import RetrievalQA
from langchain.llms import OpenAI
def create_audio_rag_pipeline(audio_files):
# Step 1: Transcribe audio files
all_docs = []
for audio_file in audio_files:
loader = AssemblyAIAudioTranscriptLoader(
file_path=audio_file,
transcript_format=TranscriptFormat.PARAGRAPHS
)
docs = loader.load()
all_docs.extend(docs)
# Step 2: Split and embed
text_splitter = RecursiveCharacterTextSplitter(
chunk_size=1000,
chunk_overlap=200
)
splits = text_splitter.split_documents(all_docs)
# Step 3: Create vector store
vectorstore = Chroma.from_documents(
documents=splits,
embedding=OpenAIEmbeddings()
)
# Step 4: Create QA chain
qa_chain = RetrievalQA.from_chain_type(
llm=OpenAI(),
chain_type="stuff",
retriever=vectorstore.as_retriever()
)
return qa_chain
# Usage
audio_files = ["meeting1.mp3", "meeting2.mp3", "interview.wav"]
qa_system = create_audio_rag_pipeline(audio_files)
response = qa_system.run("What were the main decisions made in the meetings?")
## Troubleshooting
### Common Issues
**"API key not found" error:**
```bash
# Verify your API key is set
echo $ASSEMBLYAI_API_KEY # Mac/Linux
echo %ASSEMBLYAI_API_KEY% # Windows

“File not found” error:

  • Verify file path is correct
  • Ensure file exists and is readable
  • For URLs, check if the link is accessible

Slow transcription:

  • Large files take longer to process
  • Check your internet connection
  • Consider splitting large files into smaller chunks

Import errors:

Terminal window
# Reinstall packages if imports fail
pip uninstall langchain assemblyai
pip install langchain assemblyai
### 2. **Add Configuration Reference**
```markdown
## Configuration Reference
### TranscriptionConfig Options
| Parameter | Type | Description | Default |
|-----------|------|-------------|---------|
| `speaker_labels` | bool | Enable speaker identification | False |
| `auto_chapters` | bool | Automatically detect chapters | False |
| `entity_detection` | bool | Detect entities (names, places, etc.)
---