FunASR运行时部署与服务架构

FunASR提供了完整的离线文件转写和实时语音听写服务架构,采用模块化、高性能的设计理念。离线服务支持大规模音频文件处理,包含输入处理层、特征提取层、模型推理层和后处理层四个核心模块。实时服务基于Paraformer在线模型,采用流式处理技术实现低延迟、高精度的语音识别。系统还提供多语言支持和GPU加速部署方案,通过Docker容器化确保环境一致性和快速水平扩展。

离线文件转写服务架构设计

FunASR离线文件转写服务架构采用了模块化、高性能的设计理念,为大规模音频文件处理提供了完整的端到端解决方案。该架构充分考虑了工业级部署的需求,在保证高精度的同时,实现了优异的处理效率和资源利用率。

核心架构设计

离线文件转写服务的整体架构采用分层设计,主要包括输入处理层、特征提取层、模型推理层和后处理层四个核心模块:

mermaid

输入处理层架构

输入处理层负责处理多种格式的音频文件,支持WAV、MP3、AAC等常见格式,通过统一的接口进行标准化处理:

class AudioInputProcessor:
    def __init__(self, target_sample_rate=16000):
        self.target_sample_rate = target_sample_rate
        self.supported_formats = ['.wav', '.mp3', '.aac', '.m4a']
    
    def process_input(self, input_path):
        """统一处理输入音频文件"""
        if not self._check_format(input_path):
            converted_path = self._convert_format(input_path)
            return self._load_audio(converted_path)
        return self._load_audio(input_path)
    
    def _convert_format(self, input_path):
        """格式转换核心逻辑"""
        from pydub import AudioSegment
        audio = AudioSegment.from_file(input_path)
        output_path = input_path.rsplit('.', 1)[0] + '.wav'
        audio.export(output_path, format='wav')
        return output_path
特征提取流水线

特征提取层采用工业级的音频处理流程,包括FBank特征提取、CMVN归一化和LFR降维处理:

mermaid

特征提取的具体实现采用优化的数字信号处理算法:

class WavFrontend:
    def __init__(self, cmvn_file=None, fs=16000, n_mels=80, 
                 frame_length=25, frame_shift=10, lfr_m=1, lfr_n=1):
        self.cmvn_stats = self._load_cmvn(cmvn_file) if cmvn_file else None
        self.config = {
            'sample_rate': fs,
            'n_mels': n_mels,
            'frame_length': frame_length,
            'frame_shift': frame_shift,
            'lfr_m': lfr_m,
            'lfr_n': lfr_n
        }
    
    def fbank(self, waveform):
        """提取FBank特征"""
        # 实现梅尔频谱特征提取
        mel_spec = self._compute_mel_spectrogram(waveform)
        log_mel = np.log(mel_spec + 1e-6)
        return log_mel
    
    def lfr_cmvn(self, features):
        """LFR降维和CMVN归一化"""
        # 时序降维处理
        lfr_features = self._apply_lfr(features)
        # 倒谱均值方差归一化
        normalized = self._apply_cmvn(lfr_features)
        return normalized, normalized.shape[0]

模型推理架构

模型推理层采用ONNX Runtime作为推理引擎,支持CPU和GPU加速,实现了高效的批量处理:

并行处理架构

mermaid

动态批处理实现
class DynamicBatchProcessor:
    def __init__(self, max_batch_size=16, max_duration=300):
        self.max_batch_size = max_batch_size
        self.max_duration = max_duration  # 最大音频时长(秒)
        self.current_batch = []
        self.batch_timestamps = []
    
    def add_to_batch(self, features, features_length, metadata):
        """动态添加样本到批处理队列"""
        current_duration = sum([item['duration'] for item in self.current_batch])
        
        if (len(self.current_batch) >= self.max_batch_size or 
            current_duration + metadata['duration'] > self.max_duration):
            # 处理当前批次
            processed_batch = self._process_batch()
            self.current_batch = []
            self.batch_timestamps = []
            return processed_batch
        
        self.current_batch.append({
            'features': features,
            'length': features_length,
            'metadata': metadata
        })
        return None
    
    def _process_batch(self):
        """处理完整批次"""
        if not self.current_batch:
            return []
        
        # 对齐特征维度
        max_length = max(item['length'] for item in self.current_batch)
        batch_features = np.zeros((len(self.current_batch), max_length, 
                                 self.current_batch[0]['features'].shape[1]))
        batch_lengths = np.zeros(len(self.current_batch), dtype=np.int32)
        
        for i, item in enumerate(self.current_batch):
            batch_features[i, :item['length']] = item['features']
            batch_lengths[i] = item['length']
        
        # 模型推理
        results = self.inference_engine.process_batch(batch_features, batch_lengths)
        return results

服务部署架构

离线文件转写服务支持多种部署模式,包括本地部署、Docker容器化和云原生部署:

多模式部署架构

mermaid

高性能服务实现
class ASRService:
    def __init__(self, model_configs, max_workers=4):
        self.model_pool = ModelPool(model_configs, max_workers)
        self.task_queue = asyncio.Queue()
        self.result_store = {}
        
    async def process_file(self, file_path, task_id):
        """处理单个文件任务"""
        try:
            # 音频预处理
            waveform = self._load_and_preprocess(file_path)
            
            # VAD分割
            segments = self._vad_segmentation(waveform)
            
            # 并行ASR识别
            results = await self._parallel_asr(segments)
            
            # 后处理整合
            final_result = self._postprocess_results(results)
            
            return {
                'task_id': task_id,
                'status': 'success',
                'result': final_result,
                'processing_time': time.time() - start_time
            }
            
        except Exception as e:
            return {
                'task_id': task_id,
                'status': 'error',
                'error': str(e)
            }
    
    async def _parallel_asr(self, segments):
        """并行处理音频分段"""
        tasks = []
        for segment in segments:
            task = asyncio.create_task(
                self.model_pool.process_segment(segment)
            )
            tasks.append(task)
        
        results = await asyncio.gather(*tasks)
        return results

性能优化策略

架构设计中采用了多项性能优化技术,确保在大规模文件处理场景下的高效运行:

内存管理优化
class MemoryManager:
    def __init__(self, max_memory_usage=0.8):
        self.max_usage = max_memory_usage
        self.current_tasks = {}
        
    def check_memory_availability(self):
        """检查内存可用性"""
        total_memory = psutil.virtual_memory().total
        used_memory = psutil.virtual_memory().used
        available_ratio = 1 - (used_memory / total_memory)
        
        return available_ratio > self.max_usage
    
    def register_task(self, task_id, estimated_memory):
        """注册任务内存使用"""
        if not self.check_memory_availability():
            raise MemoryError("Insufficient memory for new task")
        
        self.current_tasks[task_id] = {
            'estimated_memory': estimated_memory,
            'start_time': time.time()
        }
    
    def release_task_memory(self, task_id):
        """释放任务内存"""
        if task_id in self.current_tasks:
            del self.current_tasks[task_id]
缓存策略设计

mermaid

错误处理与容错机制

架构设计了完善的错误处理和容错机制,确保服务的稳定性和可靠性:

class FaultToleranceManager:
    def __init__(self, max_retries=3, timeout=30):
        self.max_retries = max_retries
        self.timeout = timeout
        self.error_stats = defaultdict(int)
    
    async def execute_with_retry(self, func, *args, **kwargs):
        """带重试的执行逻辑"""
        for attempt in range(self.max_retries):
            try:
                result = await asyncio.wait_for(
                    func(*args, **kwargs), 
                    timeout=self.timeout
                )
                return result
            except (asyncio.TimeoutError, ConnectionError) as e:
                self.error_stats[type(e).__name__] += 1
                if attempt == self.max_retries - 1:
                    raise
                await asyncio.sleep(2 ** attempt)  # 指数退避
    
    def get_error_statistics(self):
        """获取错误统计信息"""
        return dict(self.error_stats)

监控与日志系统

架构集成了完整的监控和日志系统,便于运维和性能分析:

class MonitoringSystem:
    def __init__(self):
        self.metrics = {
            'requests_total': 0,
            'requests_processing': 0,
            'requests_completed': 0,
            'requests_failed': 0,
            'avg_processing_time': 0,
            'memory_usage_mb': 0
        }
        self.start_time = time.time()
    
    def update_metrics(self, metric_name, value=None):
        """更新监控指标"""
        if value is not None:
            self.metrics[metric_name] = value
        else:
            self.metrics[metric_name] += 1
    
    def get_performance_report(self):
        """生成性能报告"""
        uptime = time.time() - self.start_time
        return {
            'uptime_seconds': uptime,
            'requests_per_second': self.metrics['requests_completed'] / uptime,
            'success_rate': (self.metrics['requests_completed'] / 
                           self.metrics['requests_total']) * 100,
            **self.metrics
        }

该架构设计充分考虑了离线文件转写的各种应用场景,通过模块化设计、性能优化和容错机制,为大规模音频处理提供了可靠的技术基础。实际部署中可根据具体需求调整配置参数,以达到最佳的性能表现。

实时语音听写服务实现原理

FunASR的实时语音听写服务采用了先进的流式语音识别技术,通过精心设计的架构和算法实现了低延迟、高精度的实时语音转文字功能。该服务的核心实现基于Paraformer在线模型,结合了多项技术创新来平衡识别精度和实时性需求。

核心技术架构

实时语音听写服务的架构采用了分层设计,主要包括音频处理层、特征提取层、编码解码层和后处理层:

mermaid

流式处理机制

实时语音听写的核心在于流式处理机制,FunASR采用了基于chunk的滑动窗口策略:

分块参数配置:

chunk_size = [5, 10, 5]  # [lookback, chunk, lookahead]
# 对应时间:300ms, 600ms, 300ms

这种配置意味着:

  • 回看窗口:300ms的历史信息用于上下文理解
  • 当前块:600ms的实时音频处理
  • 前瞻窗口:300ms的未来信息用于更准确的预测

状态缓存与连续性保持

为了实现真正的流式处理,系统维护了多种缓存状态:

# 缓存数据结构
cache = {
    "start_idx": 0,                    # 位置索引
    "cif_hidden": np.zeros(...),       # CIF隐藏状态
    "cif_alphas": np.zeros(...),       # CIF权重参数
    "feats": np.zeros(...),            # 特征缓存
    "decoder_fsmn": [],               # 解码器状态
    "last_chunk": False               # 结束标志
}

Continuous Integrate-and-Fire (CIF) 机制

CIF机制是实时语音识别的关键技术,它负责将连续的声学特征映射到离散的文字序列:

mermaid

重叠块处理策略

为了确保识别的连续性和准确性,系统采用了重叠块处理:

def add_overlap_chunk(self, feats: np.ndarray, cache: dict = {}):
    if len(cache) == 0:
        return feats
    # 合并历史特征和当前特征
    overlap_feats = np.concatenate((cache["feats"], feats), axis=1)
    if cache["is_final"]:
        cache["feats"] = overlap_feats[:, -self.chunk_size[0]:, :]
    else:
        cache["feats"] = overlap_feats[:, -(self.chunk_size[0] + self.chunk_size[2]):, :]
    return overlap_feats

实时推理流程

整个实时推理过程遵循严格的流水线:

  1. 音频分块:将连续音频流按600ms为单位分割
  2. 特征提取:提取FBank特征并应用CMVN归一化
  3. 位置编码:添加位置信息以供Transformer使用
  4. 编码器推理:通过ONNX运行时执行编码器前向计算
  5. CIF预测:生成文字触发点和对应权重
  6. 解码器推理:结合历史状态生成文字序列
  7. 后处理:对识别结果进行标点和格式处理

性能优化技术

FunASR实时服务采用了多项性能优化技术:

内存优化:

  • 使用ONNX模型格式减少内存占用
  • 动态批处理提高GPU利用率
  • 缓存复用减少重复计算

延迟优化:

  • 异步处理管道
  • 预取和流水线技术
  • 智能chunk大小调整

精度保障:

  • 两遍解码策略(2-pass)
  • 语言模型重评分
  • 热词增强功能

错误处理和恢复机制

实时服务具备完善的错误处理能力:

  • 连接异常处理:自动重连和状态恢复
  • 音频质量适应:动态调整处理参数适应不同音质
  • 资源管理:智能内存和计算资源分配

通过这种精心设计的架构,FunASR实时语音听写服务能够在保持高精度的同时,实现真正的低延迟实时识别,为各种实时语音应用场景提供了可靠的技术基础。

多语言支持与GPU加速部署

FunASR作为业界领先的语音识别工具包,在多语言支持和GPU加速部署方面展现出强大的技术实力。通过集成SenseVoice、Whisper等先进的多语言模型,结合GPU硬件加速技术,为用户提供高效、精准的多语言语音识别服务。

多语言模型架构

FunASR支持多种多语言语音识别模型,包括SenseVoiceSmall、Whisper-large-v3、Whisper-large-v3-turbo等,这些模型具备自动语言识别(LID)、语音翻译和语种检测等多项能力。

SenseVoice多语言模型

SenseVoice是一个基础语音理解模型,具备多种语音理解能力,涵盖了自动语音识别(ASR)、语言识别(LID)、情感识别(SER)以及音频事件检测(AED)。其多语言支持特性通过以下方式实现:

from funasr import AutoModel
from funasr.utils.postprocess_utils import rich_transcription_postprocess

model = AutoModel(
    model="iic/SenseVoiceSmall",
    vad_model="fsmn-vad",
    vad_kwargs={"max_single_segment_time": 30000},
    device="cuda:0",
)

# 多语言自动识别
res = model.generate(
    input="example_multilingual.mp3",
    cache={},
    language="auto",  # 支持"zn", "en", "yue", "ja", "ko", "nospeech"
    use_itn=True,
    batch_size_s=60,
    merge_vad=True,
    merge_length_s=15,
)
语言识别流程

mermaid

GPU加速部署架构

FunASR的GPU加速部署采用先进的动态批处理和多线程并发技术,在长音频测试集上单线RTF可达0.0076,多线加速比达到1200+(CPU版本为330+)。

GPU部署配置
# GPU加速的Paraformer模型部署
model = AutoModel(
    model="paraformer-zh",
    vad_model="fsmn-vad", 
    punc_model="ct-punc",
    device="cuda:0",  # 指定GPU设备
    batch_size_s=300  # 动态批处理大小
)

# 支持多GPU部署
model = AutoModel(
    model="SenseVoiceSmall",
    device="cuda:0,1,2,3",  # 多GPU并行
    intra_op_num_threads=4   # 每个GPU的线程数
)
GPU加速性能对比

下表展示了GPU与CPU在相同模型下的性能对比:

指标 CPU版本 GPU版本 提升倍数
单线RTF 0.025 0.0076 3.3x
多线加速比 330+ 1200+ 3.6x
内存占用 较高 优化 显著降低
并发处理 有限 高效 大幅提升

Docker容器化部署

FunASR提供完整的Docker容器化部署方案,支持GPU加速的多语言服务:

# 拉取GPU版本Docker镜像
docker pull funasr/funasr-runtime-sdk-gpu:latest

# 运行GPU容器
docker run -it --gpus all \
  -p 10095:10095 \
  -v /path/to/models:/models \
  funasr/funasr-runtime-sdk-gpu:latest

# 多语言模型部署
docker run -it --gpus all \
  -e MODEL_PATH=/models/SenseVoiceSmall \
  -e LANGUAGE=auto \
  -p 10095:10095 \
  funasr/funasr-runtime-sdk-gpu:latest

动态批处理与内存优化

GPU版本针对长音频处理进行了深度优化,支持动态批处理技术:

# 动态批处理配置
model = AutoModel(
    model="paraformer-zh",
    device="cuda:0",
    batch_size_s=300,  # 按秒数动态调整批次大小
    max_batch_size=16,  # 最大批次数量
    chunk_size=[0, 10, 5]  # 流式处理块配置
)

# 内存优化配置
model = AutoModel(
    model="SenseVoiceSmall",
    device="cuda:0",
    intra_op_num_threads=4,  # 线程数优化
    quantize=True,  # 量化加速
    cache_dir="./cache"  # 缓存优化
)

多语言实时流式识别

支持多语言的实时流式识别,具备低延迟和高精度特性:

from funasr import AutoModel
import soundfile

# 多语言流式识别
model = AutoModel(model="paraformer-zh-streaming")

chunk_size = [0, 10, 5]  # 600ms延迟配置
chunk_stride = chunk_size[1] * 960  # 600ms

# 实时音频处理
cache = {}
for i in range(total_chunk_num):
    speech_chunk = speech[i*chunk_stride:(i+1)*chunk_stride]
    is_final = i == total_chunk_num - 1
    res = model.generate(
        input=speech_chunk, 
        cache=cache, 
        is_final=is_final,
        language="auto"  # 自动语言检测
    )

性能监控与调优

FunASR提供完善的性能监控机制,帮助用户优化GPU部署:

# 性能监控配置
model = AutoModel(
    model="SenseVoiceSmall",
    device="cuda:0",
    # 性能监控参数
    profile=True,  # 启用性能分析
    benchmark_mode=True,  # 基准测试模式
    log_level="DEBUG"  # 详细日志
)

# GPU内存优化
import torch
torch.cuda.empty_cache()  # 清理GPU缓存
torch.cuda.memory_summary()  # 内存使用统计

通过上述多语言支持和GPU加速部署方案,FunASR为全球用户提供高效、精准的语音识别服务,支持中文、英文、日文、韩文等多种语言,满足不同场景下的语音处理需求。

Docker容器化部署最佳实践

FunASR提供了完整的Docker容器化部署方案,支持CPU和GPU两种运行环境,能够满足不同规模的生产环境需求。通过Docker部署可以确保环境一致性、简化部署流程,并实现快速的水平扩展。

Docker部署架构设计

FunASR的Docker部署采用分层架构设计,确保服务的高可用性和可扩展性:

mermaid

核心Docker镜像配置

FunASR提供多个预构建的Docker镜像,针对不同使用场景进行优化:

镜像类型 版本标签 适用场景 基础镜像 特点
CPU中文版 funasr-runtime-sdk-cpu-0.4.6 通用CPU环境 Ubuntu 20.04 支持ARM64,内存优化
GPU中文版 funasr-runtime-sdk-gpu-0.2.0 GPU加速环境 NVIDIA CUDA 动态批处理,多线程并发
英文CPU版 funasr-runtime-sdk-en-cpu-0.1.7 英语识别 Ubuntu 20.04 多语言支持,内存泄漏修复
实时服务版 funasr-runtime-sdk-online-cpu-0.1.12 实时语音识别 Ubuntu 20.04 低延迟,流式处理

生产环境Docker部署指南

1. 单机GPU部署配置

对于生产环境的GPU部署,推荐使用以下Docker运行配置:

# 创建模型存储目录
mkdir -p ./funasr-runtime-resources/models

# 拉取最新GPU镜像
docker pull registry.cn-hangzhou.aliyuncs.com/funasr_repo/funasr:funasr-runtime-sdk-gpu-0.2.0

# 运行Docker容器
docker run --gpus=all \
  -p 10095:10095 \
  -it \
  --privileged=true \
  --shm-size=2g \
  --ulimit memlock=-1 \
  --ulimit stack=67108864 \
  -v $PWD/funasr-runtime-resources/models:/workspace/models \
  -v $PWD/logs:/workspace/logs \
  --name funasr-gpu-server \
  registry.cn-hangzhou.aliyuncs.com/funasr_repo/funasr:funasr-runtime-sdk-gpu-0.2.0
2. 多容器集群部署

对于高并发场景,可以采用Docker Compose进行多容器部署:

version: '3.8'
services:
  funasr-worker-1:
    image: registry.cn-hangzhou.aliyuncs.com/funasr_repo/funasr:funasr-runtime-sdk-gpu-0.2.0
    deploy:
      resources:
        reservations:
          devices:
            - driver: nvidia
              count: 1
              capabilities: [gpu]
    ports:
      - "10095:10095"
    volumes:
      - ./models:/workspace/models
      - ./logs-1:/workspace/logs
    environment:
      - CUDA_VISIBLE_DEVICES=0
      - DECODER_THREAD_NUM=10

  funasr-worker-2:
    image: registry.cn-hangzhou.aliyuncs.com/funasr_repo/funasr:funasr-runtime-sdk-gpu-0.2.0
    deploy:
      resources:
        reservations:
          devices:
            - driver: nvidia
              count: 1
              capabilities: [gpu]
    ports:
      - "10096:10095"
    volumes:
      - ./models:/workspace/models
      - ./logs-2:/workspace/logs
    environment:
      - CUDA_VISIBLE_DEVICES=1
      - DECODER_THREAD_NUM=10

  nginx-load-balancer:
    image: nginx:alpine
    ports:
      - "80:80"
    volumes:
      - ./nginx.conf:/etc/nginx/nginx.conf
    depends_on:
      - funasr-worker-1
      - funasr-worker-2
3. 资源限制与优化

为确保容器稳定运行,需要合理配置资源限制:

# 内存和CPU限制
docker run --gpus=all \
  --memory=32g \
  --memory-swap=64g \
  --cpus=8 \
  --cpu-shares=1024 \
  --ulimit nofile=65535:65535 \
  -p 10095:10095 \
  -v $PWD/models:/workspace/models \
  registry.cn-hangzhou.aliyuncs.com/funasr_repo/funasr:funasr-runtime-sdk-gpu-0.2.0

容器内服务配置最佳实践

1. 模型下载与缓存策略
# 使用ModelScope自动下载模型
nohup bash run_server.sh \
  --download-model-dir /workspace/models \
  --model-dir damo/speech_paraformer-large-vad-punc_asr_nat-zh-cn-16k-common-vocab8404-pytorch \
  --vad-dir damo/speech_fsmn_vad_zh-cn-16k-common-onnx \
  --punc-dir damo/punc_ct-transformer_cn-en-common-vocab471067-large-onnx \
  --lm-dir damo/speech_ngram_lm_zh-cn-ai-wesp-fst \
  --itn-dir thuduj12/fst_itn_zh \
  --decoder-thread-num 16 \
  --model-thread-num 2 \
  --hotword /workspace/models/hotwords.txt > server.log 2>&1 &
2. 性能调优参数

根据硬件配置调整线程参数:

硬件配置 decoder-thread-num model-thread-num 推荐值
8核CPU + 32G内存 8 1 8路并发
16核CPU + 64G内存 16 2 32路并发
V100 GPU + 32G显存 20 1 20路并发
A100 GPU + 80G显存 40 2 80路并发
3. 健康检查与监控

在Docker容器中配置健康检查:

# 健康检查脚本
#!/bin/bash
# health_check.sh

PORT=10095
STATUS=$(curl -s -o /dev/null -w "%{http_code}" http://localhost:${PORT}/health)

if [ "$STATUS" -eq 200 ]; then
    echo "Service is healthy"
    exit 0
else
    echo "Service is unhealthy"
    exit 1
fi

Docker Compose健康检查配置:

healthcheck:
  test: ["CMD", "bash", "/app/health_check.sh"]
  interval: 30s
  timeout: 10s
  retries: 3
  start_period: 40s

持续集成与部署流水线

mermaid

安全最佳实践

  1. 最小权限原则:使用非root用户运行容器
  2. 镜像安全扫描:定期扫描镜像漏洞
  3. 网络隔离:使用自定义网络隔离容器
  4. 密钥管理:使用Docker Secrets管理敏感信息
# 使用非root用户运行
docker run --user 1000:1000 \
  --security-opt=no-new-privileges \
  --cap-drop=ALL \
  --read-only \
  --tmpfs /tmp:rw,size=1g \
  registry.cn-hangzhou.aliyuncs.com/funasr_repo/funasr:funasr-runtime-sdk-gpu-0.2.0

日志与监控配置

配置统一的日志收集和监控体系:

# 日志驱动配置
docker run --log-driver=json-file \
  --log-opt max-size=10m \
  --log-opt max-file=3 \
  --log-opt labels=funasr \
  --log-opt env=ENVIRONMENT \
  registry.cn-hangzhou.aliyuncs.com/funasr_repo/funasr:funasr-runtime-sdk-gpu-0.2.0

通过以上Docker容器化部署最佳实践,可以确保FunASR服务在生产环境中稳定、高效地运行,同时具备良好的可扩展性和可维护性。

总结

FunASR通过精心设计的架构提供了完整的语音识别解决方案。离线文件转写服务采用分层设计和动态批处理技术,确保大规模音频处理的高效性。实时语音听写服务基于流式处理机制和CIF技术,实现了低延迟高精度的实时识别。系统支持多语言自动识别和GPU加速部署,大幅提升处理性能。Docker容器化部署方案提供了生产环境的最佳实践,包括资源优化、健康监控和安全配置,确保服务的稳定性、可扩展性和易维护性。

Logo

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。

更多推荐