以编程方式使用文档

CAMB AI 提供多语言音频和本地化服务,支持 140 多种语言,包括文本转语音、翻译、转录、语音克隆和音频生成。

概述

集成详情

可序列化JS 支持版本
CambToolkitlangchain-cambbeta!PyPI - 版本

工具特性

工具描述返回值
CambTTSToolText-to-Speech - Convert text to natural speechAudio file path, base64, or bytes
CambTranslatedTTSToolTranslate text and convert to speech in one stepAudio file path, base64, or bytes
CambTranslationTool140 多种语言文本翻译翻译文本
CambTranscriptionTool带说话人识别的语音转文本包含文本和片段的 JSON
CambVoiceListTool列出 TTS 可用语音JSON 语音列表
CambVoiceCloneTool从 2 秒以上音频样本克隆语音新语音 ID
CambTextToSoundTool根据文本生成音乐和音效音频文件路径
CambAudioSeparationTool从背景音频中分离人声带音频路径的 JSON

设置

要访问 CAMB AI 工具,您需要创建一个 CAMB AI 账户并从以下位置获取 API 密钥 camb.ai.

凭证

if "CAMB_API_KEY" not in os.environ:
    os.environ["CAMB_API_KEY"] = getpass.getpass("Enter your CAMB API key: ")

It's also helpful (but not needed) to set up LangSmith for best-in-class observability/追踪 您的工具调用。若要启用自动追踪,请设置您的 LangSmith API 密钥:

os.environ["LANGSMITH_API_KEY"] = getpass.getpass("Enter your LangSmith API key: ")
os.environ["LANGSMITH_TRACING"] = "true"

安装

CAMB AI 工具位于 langchain-camb package:

pip install -U langchain-camb
uv add langchain-camb

实例化

您可以使用 CambToolkit 一次性获取所有工具,或实例化单个工具。

使用工具包

from langchain_camb import CambToolkit

toolkit = CambToolkit()
tools = toolkit.get_tools()

print(f"Available tools: {[t.name for t in tools]}")

使用单个工具

from langchain_camb import CambTTSTool, CambTranslationTool

tts_tool = CambTTSTool()
translation_tool = CambTranslationTool()

示例

Text-to-Speech

使用不同的语音和速度从文本生成多语言语音:

from langchain_camb import CambTTSTool, CambVoiceListTool

# First, list available voices
voice_list = CambVoiceListTool()
voices = voice_list.invoke({})
print(f"Available voices: {voices[:500]}...")

# Create TTS tool
tts = CambTTSTool()

# Generate speech in English
english_audio = tts.invoke({
    "text": "Hello! Welcome to CAMB AI. We support over 140 languages for text to speech.",
    "language": "en-us",
    "voice_id": 147320,
    "speech_model": "mars-flash",  # or "mars-pro", "mars-instruct"
    "output_format": "file_path",
})
print(f"English audio saved to: {english_audio}")

# Generate speech in Spanish
spanish_audio = tts.invoke({
    "text": "¡Hola! Bienvenido a CAMB AI. Soportamos más de 140 idiomas.",
    "language": "es-es",
    "voice_id": 147320,
    "output_format": "file_path",
})
print(f"Spanish audio saved to: {spanish_audio}")

# Generate with different speed (0.5 to 2.0)
slow_audio = tts.invoke({
    "text": "This is spoken slowly for clarity.",
    "language": "en-us",
    "voice_id": 147320,
    "speed": 0.7,
    "output_format": "file_path",
})
print(f"Slow audio saved to: {slow_audio}")

翻译

在 140+ 种语言之间翻译文本,支持可选的正式程度控制:

from langchain_camb import CambTranslationTool

# Language codes (see Language codes section below for full list)
LANGUAGES = {
    "english": 1,
    "spanish": 54,
    "french": 76,
    "german": 31,
    "japanese": 88,
}

translator = CambTranslationTool()

# Simple translation
spanish = translator.invoke({
    "text": "Hello, how are you?",
    "source_language": LANGUAGES["english"],
    "target_language": LANGUAGES["spanish"],
})
print(f"Spanish: {spanish}")  # "Hola, ¿cómo estás?"

# Formal translation
german_formal = translator.invoke({
    "text": "Can you help me with this problem?",
    "source_language": LANGUAGES["english"],
    "target_language": LANGUAGES["german"],
    "formality": 1,  # 1=formal, 2=informal
})
print(f"German (formal): {german_formal}")

# Informal translation
french_informal = translator.invoke({
    "text": "What's up? Want to hang out later?",
    "source_language": LANGUAGES["english"],
    "target_language": LANGUAGES["french"],
    "formality": 2,
})
print(f"French (informal): {french_informal}")

# Multi-language translation
text = "Good morning! Have a wonderful day."
for lang_name, lang_code in [("spanish", 54), ("french", 76), ("japanese", 88)]:
    result = translator.invoke({
        "text": text,
        "source_language": LANGUAGES["english"],
        "target_language": lang_code,
    })
    print(f"{lang_name.capitalize()}: {result}")

声音和音乐生成

从文本描述生成音乐、音效和环境声音:

from langchain_camb import CambTextToSoundTool

sound_gen = CambTextToSoundTool()

# Generate background music
music = sound_gen.invoke({
    "prompt": "Calm ambient music with soft piano and gentle strings, suitable for meditation",
    "duration": 30,
    "audio_type": "music",
    "output_format": "file_path",
})
print(f"Music saved to: {music}")

# Generate sound effect
sfx = sound_gen.invoke({
    "prompt": "Futuristic sci-fi door opening with hydraulic hiss",
    "duration": 3,
    "audio_type": "sound",
    "output_format": "file_path",
})
print(f"Sound effect saved to: {sfx}")

# Generate ambient soundscape
ambient = sound_gen.invoke({
    "prompt": "Peaceful forest ambiance with birds chirping, wind through leaves, and a distant stream",
    "duration": 60,
    "audio_type": "sound",
    "output_format": "file_path",
})
print(f"Ambient sound saved to: {ambient}")

声音克隆

从短音频样本(2 秒以上)克隆声音并用于 TTS:

from langchain_camb import CambVoiceCloneTool, CambTTSTool

voice_clone = CambVoiceCloneTool()
tts = CambTTSTool()

# Step 1: Clone a voice from an audio sample (requires 2+ seconds)
clone_result = voice_clone.invoke({
    "voice_name": "My Custom Voice",
    "audio_file_path": "/path/to/voice_sample.wav",
    "gender": 2,  # 1=Male, 2=Female
    "description": "A warm, friendly voice for customer service",
})
print(f"Voice cloned! New voice ID: {clone_result}")

# Step 2: Use the cloned voice for TTS
cloned_voice_id = clone_result  # The returned voice ID
audio = tts.invoke({
    "text": "Hello! This is my cloned voice speaking.",
    "language": "en-us",
    "voice_id": cloned_voice_id,
    "output_format": "file_path",
})
print(f"Audio generated: {audio}")

Podcast/video localization

转录音频、翻译并在另一种语言中生成语音——这是配音工作流程的基础:

from langchain_camb import CambTranscriptionTool, CambTranslationTool, CambTTSTool

ENGLISH = 1
SPANISH = 54

# Initialize tools
transcriber = CambTranscriptionTool()
translator = CambTranslationTool()
tts = CambTTSTool()

# Step 1: Transcribe the audio
transcription_result = transcriber.invoke({
    "audio_url": "https://example.com/podcast_clip.mp3",
    "language": ENGLISH,
})
# Returns JSON with text, segments, and speaker identification

# Step 2: Translate each segment
segments = transcription_result.get("segments", [])
translated_segments = []
for segment in segments:
    translated = translator.invoke({
        "text": segment["text"],
        "source_language": ENGLISH,
        "target_language": SPANISH,
    })
    translated_segments.append({
        "start": segment["start"],
        "end": segment["end"],
        "original": segment["text"],
        "translated": translated,
    })
    print(f"'{segment['text']}' -> '{translated}'")

# Step 3: Generate Spanish audio for each segment
audio_files = []
for i, segment in enumerate(translated_segments):
    audio_path = tts.invoke({
        "text": segment["translated"],
        "language": "es-es",
        "voice_id": 147320,
        "output_format": "file_path",
    })
    audio_files.append(audio_path)
    print(f"Segment {i + 1}: {audio_path}")

在代理中使用

您可以将 CAMB AI 工具与 LangGraph 代理结合使用,以创建强大的多语言 AI 助手:

from langchain_camb import CambToolkit
from langchain_google_genai import ChatGoogleGenerativeAI
from langchain.agents import create_agent

# Create the toolkit with all CAMB AI tools
toolkit = CambToolkit()
tools = toolkit.get_tools()

print(f"Available tools: {[t.name for t in tools]}")

# Create the agent
llm = ChatGoogleGenerativeAI(model="gemini-2.0-flash")
agent = create_agent(llm, tools)
# Generate speech
result = agent.invoke({
    "messages": [{"role": "user", "content": "Say 'Hello world' in English using text-to-speech"}]
})
print(f"Agent response: {result['messages'][-1].content}")

# Translate text
result = agent.invoke({
    "messages": [{"role": "user", "content": "Translate 'I love programming' to Spanish and French"}]
})
print(f"Agent response: {result['messages'][-1].content}")

# Complex multi-step task
result = agent.invoke({
    "messages": [{
        "role": "user",
        "content": """
        I need to create a multilingual greeting for my app:
        1. First, find a good voice to use
        2. Then translate "Welcome to our app!" to Spanish
        3. Generate audio of that Spanish greeting
        """
    }]
})
print(f"Agent response: {result['messages'][-1].content}")

工具包配置

CambToolkit 允许您选择要包含的工具:

from langchain_camb import CambToolkit

# TTS-focused toolkit
tts_toolkit = CambToolkit(
    include_tts=True,
    include_voice_list=True,
    include_translation=False,
    include_transcription=False,
    include_translated_tts=False,
    include_voice_clone=False,
    include_text_to_sound=False,
    include_audio_separation=False,
)

# Translation-focused toolkit
translation_toolkit = CambToolkit(
    include_tts=False,
    include_translated_tts=True,
    include_translation=True,
    include_transcription=True,
    include_voice_list=False,
    include_voice_clone=False,
    include_text_to_sound=False,
    include_audio_separation=False,
)

语言代码

CAMB AI 使用整数语言代码进行翻译和转录。常用代码:

代码语言BCP-47
1英语(美国)en-us
31德语(德国)de-de
54西班牙语(西班牙)es-es
76法语(法国)fr-fr
87意大利语it-it
88日语ja-jp
94韩语ko-kr
108荷兰语nl-nl
111葡萄牙语(巴西)pt-br
114俄语ru-ru
139简体中文zh-cn

对于 TTS,请使用 BCP-47 代码,如 "en-us", "es-es", "fr-fr".

API 参考

要获取 CAMB AI 所有功能和配置的详细文档,请访问 CAMB AI API 参考.