LangChain语音音频集成指南:面向多媒体开发者

LangChain 语音音频集成指南:面向多媒体开发者

引言

语音音频能力(ASR/TTS)是构建智能助手、播客应用、视频字幕等多媒体应用的关键。本文将详细介绍主流语音服务的接入方式和费用信息。


一、主流语音服务对比

服务商 功能 免费额度 是否需要 API Key 官方地址
AssemblyAI ASR(语音转文字) 免费试用额度 https://assemblyai.com
Whisper(OpenAI) ASR API 按用量付费 是(API)/否(本地) https://openai.com
Whisper(本地) ASR 完全免费 https://github.com/openai/whisper
ElevenLabs TTS(文字转语音) 免费层(每月 10K 字符) https://elevenlabs.io
Google TTS(gTTS) TTS 完全免费 https://gtts.readthedocs.io
微软 Azure 语音 ASR + TTS 免费层(每月 5 小时) https://azure.microsoft.com
百度语音 ASR + TTS 免费额度 https://ai.baidu.com
讯飞语音 ASR + TTS 免费额度 https://www.xfyun.cn

二、语音转文字(ASR)

2.1 AssemblyAI

费用说明:按分钟计费,新用户有免费试用额度

获取 API Key

  1. 访问 https://assemblyai.com 注册
  2. 登录后在 Dashboard 获取 API Key

配置环境变量

复制代码
setx ASSEMBLYAI_API_KEY "xxxxxxxxxxxxxxxxxxxxxxxx"

代码示例

python 复制代码
import os
from langchain_community.document_loaders import AssemblyAIAudioLoader

loader = AssemblyAIAudioLoader(
    file_path="podcast.mp3",
    api_key=os.environ.get("ASSEMBLYAI_API_KEY")
)

documents = loader.load()
print(f"转录文字:{documents[0].page_content[:500]}...")

2.2 Whisper(本地部署,免费)

特点:完全免费,本地运行,支持多种语言

安装

复制代码
pip install openai-whisper ffmpeg-python

代码示例

python 复制代码
import whisper

# 加载模型(tiny/base/small/medium/large,越小越快)
model = whisper.load_model("base")

# 转录音频
result = model.transcribe("audio.mp3", language="zh")
print(f"转录结果:{result['text'][:500]}...")

# 与 LangChain 结合
from langchain_core.documents import Document
from langchain_text_splitters import RecursiveCharacterTextSplitter

doc = Document(page_content=result["text"])
splitter = RecursiveCharacterTextSplitter(chunk_size=500, chunk_overlap=50)
chunks = splitter.split_documents([doc])
print(f"分割为 {len(chunks)} 个片段")

2.3 使用 LangChain 的 Whisper 加载器

python 复制代码
from langchain_community.document_loaders.generic import GenericLoader
from langchain_community.document_loaders.parsers import OpenAIWhisperParser
import os

# 通过 OpenAI API 使用 Whisper(需要付费 API Key)
os.environ["OPENAI_API_KEY"] = "sk-..."

loader = GenericLoader.from_filesystem(
    "./audio_files",
    glob="*.mp3",
    parser=OpenAIWhisperParser()
)

documents = loader.load()
for doc in documents:
    print(f"文件:{doc.metadata.get('source', 'unknown')}")
    print(f"内容:{doc.page_content[:300]}...\n")

三、文字转语音(TTS)

3.1 ElevenLabs(高质量语音合成)

费用说明:免费层每月 10,000 字符,超出按用量计费

获取 API Key

  1. 访问 https://elevenlabs.io 注册
  2. Profile → API Keys 获取 key

配置环境变量

复制代码
setx ELEVEN_API_KEY "sk_xxxxxxxxxxxxxxxxxxxxxxxx"

代码示例

python 复制代码
import os
import requests

# 使用 requests 直接调用
api_key = os.environ.get("ELEVEN_API_KEY")
voice_id = "Rachel"  # 可以在控制台选择不同声音

response = requests.post(
    f"https://api.elevenlabs.io/v1/text-to-speech/{voice_id}",
    headers={"xi-api-key": api_key},
    json={
        "text": "Hello, welcome to the AI voice assistant demo.",
        "model_id": "eleven_monolingual_v1",
        "voice_settings": {
            "stability": 0.5,
            "similarity_boost": 0.5
        }
    }
)

# 保存音频
with open("output.mp3", "wb") as f:
    f.write(response.content)

print("音频已保存到 output.mp3")

3.2 Google TTS(完全免费)

特点:完全免费,支持多语言,音质一般

安装

复制代码
pip install gtts playsound

代码示例

python 复制代码
from gtts import gTTS

# 中文语音
tts = gTTS("你好,这是一个语音合成的示例。", lang="zh")
tts.save("chinese_demo.mp3")

# 英文语音
tts_en = gTTS("Hello, this is a text-to-speech demo.", lang="en")
tts_en.save("english_demo.mp3")

print("音频文件已生成")

3.3 与 LangChain Agent 结合

python 复制代码
from langchain_openai import ChatOpenAI
from langchain_core.tools import tool
from gtts import gTTS
import os

@tool
def text_to_speech(text: str, filename: str = "output.mp3") -> str:
    """将文本转换为语音文件"""
    tts = gTTS(text, lang="zh")
    tts.save(filename)
    return f"语音已保存到 {filename}"

# 创建智能体
llm = ChatOpenAI(
    base_url="http://localhost:11434/v1/",
    api_key="ollama",
    model="qwen3.5:4b"
)

# 直接使用工具
response = llm.invoke("请生成一段欢迎词")
audio_file = text_to_speech.invoke({"text": response.content, "filename": "welcome.mp3"})
print(audio_file)

四、实战:语音助手完整流程

python 复制代码
import os
import whisper
from gtts import gTTS
from langchain_openai import ChatOpenAI

class VoiceAssistant:
    def __init__(self):
        # 初始化 Whisper ASR(本地,免费)
        self.asr_model = whisper.load_model("base")
        
        # 初始化大模型(本地 Ollama,免费)
        self.llm = ChatOpenAI(
            base_url="http://localhost:11434/v1/",
            api_key="ollama",
            model="qwen3.5:4b"
        )
    
    def listen(self, audio_file: str) -> str:
        """语音转文字"""
        result = self.asr_model.transcribe(audio_file, language="zh")
        return result["text"]
    
    def think(self, user_input: str) -> str:
        """大模型处理"""
        response = self.llm.invoke(user_input)
        return response.content
    
    def speak(self, text: str, output_file: str = "response.mp3") -> str:
        """文字转语音(免费 gTTS)"""
        tts = gTTS(text, lang="zh")
        tts.save(output_file)
        return output_file
    
    def run(self, audio_file: str) -> str:
        """完整流程"""
        # 1. 识别用户语音
        user_text = self.listen(audio_file)
        print(f"用户说:{user_text}")
        
        # 2. 大模型处理
        ai_response = self.think(user_text)
        print(f"AI回答:{ai_response}")
        
        # 3. 生成语音回复
        audio_path = self.speak(ai_response)
        print(f"语音回复:{audio_path}")
        
        return ai_response

# 使用示例
if __name__ == "__main__":
    assistant = VoiceAssistant()
    assistant.run("user_input.mp3")

五、快速选择指南

场景 推荐方案 是否免费 质量
本地开发测试 Whisper(本地)+ gTTS 免费 一般
高精度 ASR AssemblyAI 有免费额度
高质量 TTS ElevenLabs 有免费额度
中文场景 百度/讯飞语音 有免费额度
企业级应用 Azure 语音服务 有免费层

六、常见问题

Q: 本地 Whisper 速度慢怎么办?

A: 可以使用更小的模型(tiny/base),或者使用 GPU 加速。

Q: gTTS 的语音太机械?

A: 可以考虑付费服务如 ElevenLabs,音质更自然。

Q: 如何处理长音频文件?

A: 建议将音频分段处理,每段 30 秒到 1 分钟效果最佳。


LangChain 的语音音频集成让多媒体开发变得简单:

  1. 免费方案:Whisper(本地)+ gTTS 完全免费
  2. 高质量服务:AssemblyAI 和 ElevenLabs 提供专业级服务
  3. 统一接口:LangChain 提供标准的文档加载方式
  4. 完整链路:从语音识别到 AI 处理再到语音合成

推荐入门路径:先用免费的 Whisper + gTTS 开发,根据需求再考虑付费服务升级。

相关推荐
sleven fung1 小时前
GPT4All 本地大语言模型运行环境介绍
python·gpt·ai·langchain
“码”力全开1 小时前
解耦品牌壁垒:基于 Docker 与边缘计算的高并发视频中台架构(支持 GB28181/RTSP 统一接入与源码交付)
docker·音视频·边缘计算
abigale032 小时前
LangChain 实践4: 7个人AI助手全栈项目:完整拆解+分阶段开发指南
缓存·langchain·prompt·token·rag·lcel
兆。2 小时前
Ollama_Moondream轻量级多模态模型实操教程
langchain·openai·moondream
兆。2 小时前
LangChain文档处理集成指南:面向知识管理开发者
开发语言·langchain·c#
EasyCVR2 小时前
监控“孤岛”困局:国标GB28181视频监控平台EasyCVR一站式视频融合平台实现视频系统统一管理
android·音视频
EntyIU2 小时前
Tools使用指南
python·langchain
码语智行3 小时前
海康威视视频功能集成说明
音视频
searchforAI3 小时前
怎么把视频里的PPT提取出来?视频转图文笔记完整方案
人工智能·笔记·gpt·ai·音视频·语音识别·ppt