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

概述

集成详情

可序列化JS 支持版本
CambToolkitlangchain-cambbetaPyPI - Version

工具特性

工具描述返回值
CambTTSTool文字转语音——将文本转换为自然语音音频文件路径、base64 或字节
CambTranslatedTTSTool一步完成文本翻译并转换为语音音频文件路径、base64 或字节
CambTranslationTool支持 140 多种语言的文本翻译翻译后的文本
CambTranscriptionTool带说话人识别的语音转文字包含文本和片段的 JSON
CambVoiceListTool列出 TTS 可用声音声音列表 JSON
CambVoiceCloneTool从 2 秒以上音频样本克隆声音新声音 ID
CambTextToSoundTool从文本描述生成音乐和音效音频文件路径
CambAudioSeparationTool将人声与背景音频分离包含音频路径的 JSON

设置

要使用 CAMB AI 工具,您需要在 camb.ai 创建账户并获取 API 密钥。

凭证

import getpass
import os

if "CAMB_API_KEY" not in os.environ:
    os.environ["CAMB_API_KEY"] = getpass.getpass("Enter your CAMB API key: ")
建议(但非必需)设置 LangSmith 以获得最佳的工具调用可观测性/功能。要启用自动追踪,请设置您的 LangSmith API 密钥:
os.environ["LANGSMITH_API_KEY"] = getpass.getpass("Enter your LangSmith API key: ")
os.environ["LANGSMITH_TRACING"] = "true"

安装

CAMB AI 工具位于 langchain-camb 包中:
pip install -U 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()

示例

文字转语音

以不同声音和速度生成多语言语音:
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}")

播客/视频本地化

转录音频、翻译并生成另一种语言的语音——这是配音工作流程的基础:
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 langgraph.prebuilt import create_react_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_react_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 参考