SenseVoice
SenseVoice 是一款强大的多语言语音理解基础模型,旨在让机器更精准地“听懂”人类声音。它不仅能够进行高精度的自动语音识别(ASR),支持包括中文、英语、日语等在内的 50 多种语言,还能同时识别说话人的情绪(如开心、悲伤)以及检测背景中的特定音频事件(如掌声、笑声、咳嗽声或背景音乐)。
对于需要处理复杂语音场景的开发者、研究人员及企业用户而言,SenseVoice 有效解决了传统模型功能单一、推理速度慢或难以捕捉情感与非语言信息的痛点。其核心亮点在于卓越的性能与效率:基于超过 40 万小时数据训练,其在多语言识别准确率上超越了知名的 Whisper 模型;同时采用非自回归端到端架构,推理速度极快,处理 10 秒音频仅需 70 毫秒,比 Whisper-Large 快 15 倍,非常适合实时交互应用。此外,SenseVoice 还提供了便捷的微调脚本和多语言服务端部署方案,帮助用户轻松适配特定业务场景,是构建智能语音助手、会议分析系统及无障碍辅助工具的理想选择。
使用场景
某跨国电商平台的客服团队每天需处理来自全球 50 多个国家的海量语音投诉录音,急需从中提取客户情绪、识别语言种类并过滤背景噪音以优化服务流程。
没有 SenseVoice 时
- 多模型堆砌成本高:需要分别部署 ASR 语音转写、LID 语言识别和 SER 情绪分析三个独立模型,系统架构复杂且维护困难。
- 实时响应延迟大:传统自回归模型(如 Whisper-Large)处理 10 秒音频耗时超过 1 秒,无法在客服通话中实时提示坐席人员客户的情绪变化。
- 关键信息遗漏:难以区分背景中的笑声、掌声或咳嗽声,导致系统将非人声干扰误判为有效内容,影响工单分类准确率。
- 小语种支持弱:对于日语、韩语或粤语等长尾语种的识别精度不足,常出现转写错误,引发跨文化沟通误解。
使用 SenseVoice 后
- 全能一体化处理:SenseVoice 单个模型即可同时完成多语言转写、情绪判定及音频事件检测,大幅简化了技术栈并降低了算力成本。
- 超低延迟交互:凭借非自回归架构,SenseVoice 仅需 70ms 即可完成 10 秒音频分析,比 Whisper 快 15 倍,实现了真正的实时情绪预警。
- 精细化场景感知:能精准识别背景音乐、哭泣或打喷嚏等特定事件,自动过滤无效噪音,让客服系统只关注核心诉求。
- 高精度多语言覆盖:基于 40 万小时数据训练,SenseVoice 在包括中文方言在内的 50 多种语言上表现卓越,显著提升了全球客户的满意度。
SenseVoice 通过“一模型多能”与极致速度,将原本割裂且滞后的语音分析流程升级为实时、精准的智能决策中枢。
运行环境要求
- Linux
- macOS
- Windows
非必需(支持 CPU),若使用 GPU 推荐 NVIDIA 显卡,示例代码指定 device='cuda:0',具体显存和 CUDA 版本未在文中明确说明
未说明

快速开始
简介
SenseVoice 是一款具备多种语音理解能力的语音基础模型,包括自动语音识别 (ASR)、语音语言识别 (LID)、语音情感识别 (SER) 以及音频事件检测 (AED)。
首页 | 最新动态 | 基准测试 | 安装 | 使用方法 | 社区
模型库: modelscope, huggingface
在线演示: modelscope demo, huggingface space
亮点 🎯
SenseVoice 专注于高精度多语言语音识别、语音情感识别和音频事件检测。
- 多语言语音识别: 基于超过40万小时的数据训练,支持50多种语言,其识别性能超越了 Whisper 模型。
- 丰富转录功能:
- 具备出色的情感识别能力,在测试数据上达到并超越当前最佳的情感识别模型的效果。
- 提供声音事件检测功能,能够检测多种常见的人机交互事件,如背景音乐、掌声、笑声、哭声、咳嗽和打喷嚏等。
- 高效推理: SenseVoice-Small 模型采用非自回归端到端框架,推理延迟极低。处理10秒音频仅需70毫秒,速度是 Whisper-Large 的15倍。
- 便捷微调: 提供便捷的微调脚本和策略,用户可根据自身业务场景轻松解决长尾样本问题。
- 服务部署: 提供服务部署流水线,支持多并发请求,客户端语言包括 Python、C++、HTML、Java 和 C# 等。
最新动态 🔥
- 2024年11月:新增基于 CTC 对齐的时间戳支持。
- 2024年7月:增加了针对 ONNX 和 libtorch 的导出功能,以及 Python 版本运行时:funasr-onnx-0.4.0、funasr-torch-0.1.1。
- 2024年7月:开源了 SenseVoice-Small 语音理解模型,该模型具备高精度的多语言语音识别、情感识别和音频事件检测能力,支持普通话、粤语、英语、日语和韩语,并且推理延迟极低。
- 2024年7月:推出了用于自然语音生成的 CosyVoice,可实现多语言、音色和情感控制。CosyVoice 在多语言语音生成、零样本语音生成、跨语言语音克隆以及指令跟随方面表现出色。CosyVoice 仓库 和 CosyVoice 空间。
- 2024年7月:FunASR 是一款基础语音识别工具包,提供多种功能,包括语音识别 (ASR)、语音活动检测 (VAD)、标点符号恢复、语言模型、说话人验证、说话人分离以及多说话人 ASR。
基准测试 📝
多语言语音识别
我们在开源基准数据集(包括 AISHELL-1、AISHELL-2、Wenetspeech、LibriSpeech 和 Common Voice)上对比了 SenseVoice 和 Whisper 的多语言语音识别性能。在中文和粤语识别方面,SenseVoice-Small 模型具有优势。

语音情感识别
由于目前缺乏广泛使用的语音情感识别基准和方法,我们对多个测试集进行了多维度评估,并与近期各类基准测试中的大量结果进行了全面比较。所选测试集涵盖了中英文数据,包含表演、电影和自然对话等多种风格。在未针对目标数据进行微调的情况下,SenseVoice 已经达到了甚至超越了当前最佳语音情感识别模型的性能。
此外,我们还在这些测试集上对比了多个开源语音情感识别模型,结果显示 SenseVoice-Large 模型在几乎所有数据集上都取得了最佳成绩,而 SenseVoice-Small 模型也在大多数数据集上超越了其他开源模型。
音频事件检测
尽管 SenseVoice 仅使用语音数据进行训练,但它仍然可以作为独立的事件检测模型使用。我们将其在环境声音分类数据集 ESC-50 上的表现与业界广泛使用的 BEATS 和 PANN 模型进行了比较。SenseVoice 模型在这些任务上取得了令人满意的结果。然而,由于训练数据和方法的限制,其事件分类性能与专门的 AED 模型相比仍存在一定差距。
计算效率
SenseVoice-Small 模型采用了非自回归端到端架构,因此推理延迟极低。在参数量与 Whisper-Small 相近的情况下,它的推理速度比 Whisper-Small 快5倍以上,比 Whisper-Large 快15倍。
系统要求
pip install -r requirements.txt
使用方法
推理
支持任意格式和任意时长的音频输入。
from funasr import AutoModel
from funasr.utils.postprocess_utils import rich_transcription_postprocess
model_dir = "iic/SenseVoiceSmall"
model = AutoModel(
model=model_dir,
trust_remote_code=True,
remote_code="./model.py",
vad_model="fsmn-vad",
vad_kwargs={"max_single_segment_time": 30000},
device="cuda:0",
)
# zh
res = model.generate(
input=f"{model.model_path}/example/en.mp3",
cache={},
language="auto", # "zh", "en", "yue", "ja", "ko", "nospeech"
use_itn=True,
batch_size_s=60,
merge_vad=True, #
merge_length_s=15,
)
text = rich_transcription_postprocess(res[0]["text"])
print(text)
参数说明(点击展开)
model_dir: 模型名称,或本地磁盘上模型的路径。trust_remote_code:vad_model: 表示是否启用 VAD(语音活动检测)。VAD 的作用是将长音频分割成较短的片段。在这种情况下,推理时间包括 VAD 和 SenseVoice 的总耗时,即端到端延迟。如果希望单独测试 SenseVoice 模型的推理时间,则可以禁用 VAD 模型。vad_kwargs: 指定 VAD 模型的配置。max_single_segment_time: 表示vad_model对音频进行分割的最大时长,单位为毫秒 (ms)。use_itn: 输出结果是否包含标点符号和反文本规范化。batch_size_s: 表示使用动态批处理,批次中音频的总时长以秒 (s) 为单位。merge_vad: 是否将 VAD 模型分割出的短音频片段合并,合并后的长度为merge_length_s,单位为秒 (s)。ban_emo_unk: 是否禁止输出emo_unk标记。
如果所有输入均为短音频(<30秒),且需要通过批处理推理来提高效率,则可以移除 VAD 模型,并相应地设置 batch_size。
model = AutoModel(model=model_dir, trust_remote_code=True, device="cuda:0")
res = model.generate(
input=f"{model.model_path}/example/en.mp3",
cache={},
language="zh", # "zh", "en", "yue", "ja", "ko", "nospeech"
use_itn=False,
batch_size=64,
)
更多用法请参考 文档
直接推理
支持任意格式的音频输入,输入时长限制为 30 秒或更短。
from model import SenseVoiceSmall
from funasr.utils.postprocess_utils import rich_transcription_postprocess
model_dir = "iic/SenseVoiceSmall"
m, kwargs = SenseVoiceSmall.from_pretrained(model=model_dir, device="cuda:0")
m.eval()
res = m.inference(
data_in=f"{kwargs['model_path']}/example/en.mp3",
language="auto", # "zh", "en", "yue", "ja", "ko", "nospeech"
use_itn=False,
ban_emo_unk=False,
**kwargs,
)
text = rich_transcription_postprocess(res[0][0]["text"])
print(text)
导出与测试
ONNX 和 Libtorch 导出
ONNX
# pip3 install -U funasr funasr-onnx
from pathlib import Path
from funasr_onnx import SenseVoiceSmall
from funasr_onnx.utils.postprocess_utils import rich_transcription_postprocess
model_dir = "iic/SenseVoiceSmall"
model = SenseVoiceSmall(model_dir, batch_size=10, quantize=True)
# 推理
wav_or_scp = ["{}/.cache/modelscope/hub/{}/example/en.mp3".format(Path.home(), model_dir)]
res = model(wav_or_scp, language="auto", use_itn=True)
print([rich_transcription_postprocess(i) for i in res])
注意:ONNX 模型会导出到原始模型目录。
Libtorch
from pathlib import Path
from funasr_torch import SenseVoiceSmall
from funasr_torch.utils.postprocess_utils import rich_transcription_postprocess
model_dir = "iic/SenseVoiceSmall"
model = SenseVoiceSmall(model_dir, batch_size=10, device="cuda:0")
wav_or_scp = ["{}/.cache/modelscope/hub/{}/example/en.mp3".format(Path.home(), model_dir)]
res = model(wav_or_scp, language="auto", use_itn=True)
print([rich_transcription_postprocess(i) for i in res])
注意:Libtorch 模型会导出到原始模型目录。
服务
使用 FastAPI 部署
export SENSEVOICE_DEVICE=cuda:0
fastapi run --port 50000
微调
需求
git clone https://github.com/alibaba/FunASR.git && cd FunASR
pip3 install -e ./
🐳 Docker 支持
SenseVoice 可以通过 Docker 构建和运行,从而简化部署、确保可重复性,并支持 CPU 和 GPU 推理。
使用 Docker 构建
docker build -t sensevoice .
运行(GPU,默认)
docker run --gpus all -p 50000:50000 sensevoice
运行(仅 CPU)
docker run -e SENSEVOICE_DEVICE=cpu -p 50000:50000 sensevoice
Docker Compose
Docker Compose 提供了一种更简便的方式运行 SenseVoice,同时支持持久化模型缓存、网络等功能。
启动堆栈
docker compose up --build
数据准备
数据示例
{"key": "YOU0000008470_S0000238_punc_itn", "text_language": "<|en|>", "emo_target": "<|NEUTRAL|>", "event_target": "<|Speech|>", "with_or_wo_itn": "<|withitn|>", "target": "Including legal due diligence, subscription agreement, negotiation.", "source": "/cpfs01/shared/Group-speech/beinian.lzr/data/industrial_data/english_all/audio/YOU0000008470_S0000238.wav", "target_len": 7, "source_len": 140}
{"key": "AUD0000001556_S0007580", "text_language": "<|en|>", "emo_target": "<|NEUTRAL|>", "event_target": "<|Speech|>", "with_or_wo_itn": "<|woitn|>", "target": "there is a tendency to identify the self or take interest in what one has got used to", "source": "/cpfs01/shared/Group-speech/beinian.lzr/data/industrial_data/english_all/audio/AUD0000001556_S0007580.wav", "target_len": 18, "source_len": 360}
完整参考 data/train_example.jsonl
数据准备详情
描述:
key: 音频文件唯一标识source:音频文件路径source_len:音频文件的fbank帧数target:转录文本target_len:目标文本长度text_language:音频文件的语言标识emo_target:音频文件的情感标签event_target:音频文件的事件标签with_or_wo_itn:是否包含标点符号和逆向文本规范化
train_text.txt
BAC009S0764W0121 甚至出现交易几乎停滞的情况
BAC009S0916W0489 湖北一公司以员工名义贷款数十员工负债千万
asr_example_cn_en 所有只要处理 data 不管你是做 machine learning 做 deep learning 做 data analytics 做 data science 也好 scientist 也好通通都要都做的基本功啊那 again 先先对有一些>也许对
ID0012W0014 he tried to think how it could be
train_wav.scp
BAC009S0764W0121 https://isv-data.oss-cn-hangzhou.aliyuncs.com/ics/MaaS/ASR/test_audio/BAC009S0764W0121.wav
BAC009S0916W0489 https://isv-data.oss-cn-hangzhou.aliyuncs.com/ics/MaaS/ASR/test_audio/BAC009S0916W0489.wav
asr_example_cn_en https://isv-data.oss-cn-hangzhou.aliyuncs.com/ics/MaaS/ASR/test_audio/asr_example_cn_en.wav
ID0012W0014 https://isv-data.oss-cn-hangzhou.aliyuncs.com/ics/MaaS/ASR/test_audio/asr_example_en.wav
train_text_language.txt
语言标识包括 <|zh|>、<|en|>、<|yue|>、<|ja|> 和 <|ko|>。
BAC009S0764W0121 <|zh|>
BAC009S0916W0489 <|zh|>
asr_example_cn_en <|zh|>
ID0012W0014 <|en|>
train_emo.txt
情感标签包括<|HAPPY|>、<|SAD|>、<|ANGRY|>、<|NEUTRAL|>、<|FEARFUL|>、<|DISGUSTED|> 和 <|SURPRISED|>。
BAC009S0764W0121 <|NEUTRAL|>
BAC009S0916W0489 <|NEUTRAL|>
asr_example_cn_en <|NEUTRAL|>
ID0012W0014 <|NEUTRAL|>
train_event.txt
事件标签包括<|BGM|>、<|Speech|>、<|Applause|>、<|Laughter|>、<|Cry|>、<|Sneeze|>、<|Breath|> 和 <|Cough|>。
BAC009S0764W0121 <|Speech|>
BAC009S0916W0489 <|Speech|>
asr_example_cn_en <|Speech|>
ID0012W0014 <|Speech|>
命令
# 从wav.scp、text.txt、text_language.txt、emo_target.txt、event_target.txt生成train.jsonl和val.jsonl
sensevoice2jsonl \
++scp_file_list='["../../../data/list/train_wav.scp", "../../../data/list/train_text.txt", "../../../data/list/train_text_language.txt", "../../../data/list/train_emo.txt", "../../../data/list/train_event.txt"]' \
++data_type_list='["source", "target", "text_language", "emo_target", "event_target"]' \
++jsonl_file_out="../../../data/list/train.jsonl"
如果没有 train_text_language.txt、train_emo_target.txt 和 train_event_target.txt,语言、情感和事件标签将使用 SenseVoice 模型自动预测。
# 从wav.scp和text.txt生成train.jsonl和val.jsonl
sensevoice2jsonl \
++scp_file_list='["../../../data/list/train_wav.scp", "../../../data/list/train_text.txt"]' \
++data_type_list='["source", "target"]' \
++jsonl_file_out="../../../data/list/train.jsonl" \
++model_dir='iic/SenseVoiceSmall'
微调
请确保在 finetune.sh 中将 train_tool 修改为你之前设置的 FunASR 安装目录下的 funasr/bin/train_ds.py 的绝对路径。
bash finetune.sh
WebUI
python webui.py
值得关注的第三方工作
- Triton(GPU)部署最佳实践:使用 Triton + TensorRT,经 FP32 测试,在 V100 GPU 上实现了 526 倍加速。FP16 支持正在进行中。仓库
- Sherpa-onnx 部署最佳实践:支持以 C++、C、Python、C#、Go、Swift、Kotlin、Java、JavaScript 和 Dart 等 10 种编程语言使用 SenseVoice。还支持在 iOS、Android 和 Raspberry Pi 等平台上部署 SenseVoice。仓库
- SenseVoice.cpp。基于 GGML 的纯 C/C++ 版本的 SenseVoice 推理,支持 3 位、4 位、5 位、8 位量化等,无第三方依赖。
- streaming-sensevoice 采用分块推理方式。为实现伪流式传输,它使用了截断注意力机制,牺牲了一定的准确性。此外,该技术还支持 CTC 前缀束搜索和热词增强功能。
- OmniSenseVoice 针对闪电般的快速推理和批处理流程进行了优化。
- SenseVoice Hotword,神经网络热词增强,基于上下文短语预测网络的上下文化端到端语音识别。
社区
如果在使用过程中遇到问题,可以直接在 GitHub 页面上提交 Issue。
你也可以扫描以下钉钉群二维码加入社区群,进行交流和讨论。
| FunASR |
|---|
![]() |
常见问题
相似工具推荐
openclaw
OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你
stable-diffusion-webui
stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。
everything-claude-code
everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上
ComfyUI
ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。
markitdown
MarkItDown 是一款由微软 AutoGen 团队打造的轻量级 Python 工具,专为将各类文件高效转换为 Markdown 格式而设计。它支持 PDF、Word、Excel、PPT、图片(含 OCR)、音频(含语音转录)、HTML 乃至 YouTube 链接等多种格式的解析,能够精准提取文档中的标题、列表、表格和链接等关键结构信息。 在人工智能应用日益普及的今天,大语言模型(LLM)虽擅长处理文本,却难以直接读取复杂的二进制办公文档。MarkItDown 恰好解决了这一痛点,它将非结构化或半结构化的文件转化为模型“原生理解”且 Token 效率极高的 Markdown 格式,成为连接本地文件与 AI 分析 pipeline 的理想桥梁。此外,它还提供了 MCP(模型上下文协议)服务器,可无缝集成到 Claude Desktop 等 LLM 应用中。 这款工具特别适合开发者、数据科学家及 AI 研究人员使用,尤其是那些需要构建文档检索增强生成(RAG)系统、进行批量文本分析或希望让 AI 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性,但其核心优势在于为机器
LLMs-from-scratch
LLMs-from-scratch 是一个基于 PyTorch 的开源教育项目,旨在引导用户从零开始一步步构建一个类似 ChatGPT 的大型语言模型(LLM)。它不仅是同名技术著作的官方代码库,更提供了一套完整的实践方案,涵盖模型开发、预训练及微调的全过程。 该项目主要解决了大模型领域“黑盒化”的学习痛点。许多开发者虽能调用现成模型,却难以深入理解其内部架构与训练机制。通过亲手编写每一行核心代码,用户能够透彻掌握 Transformer 架构、注意力机制等关键原理,从而真正理解大模型是如何“思考”的。此外,项目还包含了加载大型预训练权重进行微调的代码,帮助用户将理论知识延伸至实际应用。 LLMs-from-scratch 特别适合希望深入底层原理的 AI 开发者、研究人员以及计算机专业的学生。对于不满足于仅使用 API,而是渴望探究模型构建细节的技术人员而言,这是极佳的学习资源。其独特的技术亮点在于“循序渐进”的教学设计:将复杂的系统工程拆解为清晰的步骤,配合详细的图表与示例,让构建一个虽小但功能完备的大模型变得触手可及。无论你是想夯实理论基础,还是为未来研发更大规模的模型做准备
