当前位置: 首页 > article >正文

VibeVoice-Realtime-0.5B部署教程:server.log日志排查常见问题

VibeVoice-Realtime-0.5B部署教程server.log日志排查常见问题你是不是也遇到过这种情况兴冲冲地部署好一个AI应用启动脚本一跑终端上显示“服务启动成功”但打开浏览器一看页面死活加载不出来或者功能用着用着就报错了。这时候你是不是两眼一抹黑完全不知道问题出在哪别慌今天咱们就来聊聊VibeVoice-Realtime-0.5B这个实时语音合成系统部署后最关键的“黑匣子”——server.log日志文件。它就像系统的“行车记录仪”记录了服务从启动到运行的每一个细节。学会看它你就能从“盲人摸象”变成“庖丁解牛”大部分部署和运行时的问题都能自己搞定。这篇文章我就手把手带你从一个资深工程师的视角看懂server.log里那些看似天书的信息快速定位和解决VibeVoice部署中的常见“拦路虎”。1. 为什么server.log是你的“救命稻草”在深入具体问题之前咱们先得明白为什么日志文件这么重要。想象一下你买了一台新电视开机没画面。你是会直接把它拆了还是先看看电源指示灯亮不亮听听有没有启动声音日志文件就是那个“指示灯”和“声音”。VibeVoice的Web服务在后台默默运行所有关键操作——从加载模型、处理请求到生成音频、返回错误——都会在server.log里留下痕迹。默认情况下日志文件位于/root/build/server.log。当你执行一键启动脚本bash /root/build/start_vibevoice.sh后所有输出信息除了在终端显示的那部分更详细的内容都会记录在这里。它有几个核心价值问题复现当出现偶发性错误时日志能帮你还原“案发现场”。性能监控通过日志时间戳你可以计算模型加载耗时、单次推理延迟评估服务性能。配置验证日志会打印出加载的模型路径、CUDA版本、可用设备等信息帮你确认环境配置是否正确。所以遇到问题第一步永远都是打开server.log看看它到底说了什么。2. 如何高效查看与分析server.log看日志不是用眼睛一行行扫那效率太低了。咱们得用工具和方法。2.1 基础查看命令打开终端进入部署目录下面这几个命令是你的基本功# 1. 查看日志最后100行快速了解近期状态 tail -n 100 /root/build/server.log # 2. 实时追踪日志输出调试时非常有用 tail -f /root/build/server.log # 3. 查看包含特定关键词如“ERROR”的行 grep -i “error” /root/build/server.log # 4. 查看从服务启动开始的所有日志 cat /root/build/server.log | less2.2 理解日志的基本结构一份典型的VibeVoice启动日志会包含以下几个阶段的信息理解了结构你就能快速定位到问题发生的环节# 阶段一环境与依赖检查 INFO: Started server process [12345] # 进程启动 INFO: Waiting for application startup. # 应用开始初始化 INFO: Loading model from /root/.cache/modelscope/microsoft/VibeVoice-Realtime-0___5B... # 模型加载 INFO: Using device: cuda:0 # 检测到GPU # 阶段二模型加载与预热 INFO: Loaded tokenizer and model config. INFO: Warming up model with test inference... # 模型预热可能会耗时 # 阶段三服务就绪 INFO: Application startup complete. # 应用启动完成 INFO: Uvicorn running on http://0.0.0.0:7860 (Press CTRLC to quit) # 服务监听地址 # 阶段四请求处理当有用户访问时 INFO: 172.17.0.1:12345 - “GET / HTTP/1.1” 200 OK # 前端页面请求 INFO: 172.17.0.1:12345 - “WebSocket /stream” 101 # WebSocket连接建立 INFO: Generating audio for text: “Hello world” with voice: en-Carter_man # 开始合成语音接下来我们就对照着这个流程看看每个环节容易出什么问题以及怎么从日志里找到线索。3. 启动阶段常见问题排查服务根本起不来或者启动一半卡住了问题大概率出在前期。3.1 问题启动脚本执行后日志无输出或立即结束日志表现执行bash start_vibevoice.sh后终端迅速返回server.log文件是空的或者只有一两行无关信息。可能原因与解决脚本权限问题启动脚本没有执行权限。# 解决方案添加执行权限 chmod x /root/build/start_vibevoice.sh # 再次运行 bash /root/build/start_vibevoice.shPython环境问题系统中没有安装Python或者Python版本不是3.10。# 检查Python版本 python3 --version # 如果版本过低或未安装需要先安装合适的Python版本依赖包缺失脚本内部pip install失败。这是最常见的原因。查看方法手动运行脚本或者查看脚本内容看它安装哪些包。更直接的方法是尝试手动安装核心依赖。# 进入项目Python环境如果有虚拟环境请先激活 # 尝试安装关键依赖注意版本匹配 pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118 # 以CUDA 11.8为例 pip install transformers modelscope fastapi uvicorn websockets soundfile日志线索如果是因为依赖问题在手动运行服务入口文件时如python demo/web/app.py会直接抛出ModuleNotFoundError异常并打印在终端或日志开头。3.2 问题卡在“Loading model...”阶段长时间无响应日志表现日志打印出加载模型的路径后就停滞不前可能持续数分钟甚至超时失败。INFO: Loading model from /root/.cache/modelscope/microsoft/VibeVoice-Realtime-0___5B... # 此处长时间没有下文可能原因与解决模型首次下载这是最理想的情况。VibeVoice模型约2GB如果本地缓存没有需要从ModelScope或Hugging Face下载。网络速度决定耗时。解决方案耐心等待或观察网络流量。你可以另开一个终端查看缓存目录大小是否在增长。watch -n 5 du -sh /root/.cache/modelscope/microsoft/VibeVoice-Realtime-0___5B/网络连接问题无法访问模型托管站点modelscope.cn 或 huggingface.co。解决方案检查网络连通性考虑配置代理或使用国内镜像源。对于ModelScope可以设置环境变量export MODELSCOPE_CACHE/root/build/modelscope_cache # 使用本地已下载的模型 # 或者确保网络可以访问 https://modelscope.cn磁盘空间不足缓存目录所在磁盘没有足够空间。解决方案清理磁盘空间或指定缓存路径到有空间的磁盘。df -h /root/.cache # 查看磁盘使用情况3.3 问题出现“CUDA error”或“Out of Memory”相关错误日志表现在模型加载或预热阶段日志中抛出CUDA相关的异常。RuntimeError: CUDA out of memory. Tried to allocate 2.00 GiB... # 或 AssertionError: Torch not compiled with CUDA enabled.可能原因与解决显存不足这是部署大模型最常见的问题。VibeVoice-Realtime-0.5B虽然轻量但在加载和推理时仍需约4GB以上显存。解决方案关闭无关进程用nvidia-smi命令查看GPU占用关闭其他占用显存的程序。检查模型加载确保没有其他Python进程在后台加载模型。使用CPU模式不推荐如果只有CPU需要修改代码将模型加载到CPU设备但推理速度会极慢。通常需要修改加载代码添加device‘cpu’参数。CUDA版本不匹配PyTorch版本与系统CUDA驱动版本不兼容。解决方案检查并匹配版本。# 检查CUDA驱动版本 nvidia-smi # 检查PyTorch识别的CUDA版本 python3 -c “import torch; print(torch.version.cuda)”确保两者兼容。例如CUDA 12.x驱动可以向下兼容使用CUDA 11.8编译的PyTorch但最好保持一致。Flash Attention警告日志中可能出现Flash Attention is not available. Using SDPA instead.。这只是一个警告不是错误。意味着系统会使用备选的、稍慢但兼容性更好的注意力机制。如果你追求极致性能可以按照提示安装Flash Attention。pip install flash-attn --no-build-isolation4. 运行阶段常见问题排查服务启动成功了但访问页面出错或者语音合成失败问题进入运行期。4.1 问题Web页面能打开但点击“开始合成”无反应或报错日志表现前端页面请求正常200 OK但建立WebSocket连接或处理合成请求时出现错误。INFO: 172.17.0.1:54322 - “GET / HTTP/1.1” 200 OK INFO: 172.17.0.1:54322 - “WebSocket /stream” 101 Switching Protocols ERROR: Exception in ASGI application Traceback (most recent call last): File “…”, line …, in … audio_chunks tts_service.generate_stream(...) File “…”, line …, in generate_stream mel self.model.infer(...) RuntimeError: Expected all tensors to be on the same device, but found at least two devices, cuda:0 and cpu!可能原因与解决设备不一致错误如上例部分数据如文本编码被误放在CPU上而模型在GPU上。解决方案这通常是代码Bug。检查自定义的预处理代码确保所有输入张量在送入模型前都通过.to(device)方法转移到了GPU上。如果是使用官方镜像此问题应已修复。文本编码错误输入了模型不支持的特殊字符或语言。解决方案VibeVoice-Realtime-0.5B主要针对英文优化。虽然支持其他语言但属于实验性功能。尝试输入纯英文、无特殊符号的文本。日志中可能会提示Tokenization error。参数超出范围CFG强度或推理步数设置得过高或过低。解决方案使用默认参数CFG1.5 steps5。如果调整请确保CFG在1.0-3.0之间steps在5-20之间。极端参数可能导致数值不稳定生成失败。4.2 问题合成语音速度慢或实时性很差日志表现从日志时间戳看单个句子的推理耗时Generating audio for text到生成结束远超预期的300ms首次延迟。INFO: Generating audio for text: “This is a test.” with voice: en-Carter_man # 10秒后 INFO: Audio generation completed for text: “This is a test.”可能原因与解决文本过长虽然支持长文本但单次推理文本越长耗时越久。解决方案将长文本拆分成较短的句子如按标点分割进行流式合成这才是“实时”的正确用法。推理步数steps设置过高steps参数直接影响生成质量和时间。steps20的质量可能更好但耗时是steps5的4倍。解决方案在WebUI上尝试降低steps值在质量和速度间取得平衡。GPU性能瓶颈使用的GPU型号较老如GTX系列算力不足。解决方案这是硬件限制。可以尝试在代码中启用半精度fp16推理以加速但这需要确认模型和代码支持。对于官方镜像通常已做优化。4.3 问题生成的语音质量不佳杂音、吐字不清、机械音重日志表现日志本身可能没有错误但用户体验差。可能原因与解决CFG强度设置不当CFGClassifier-Free Guidance强度是控制生成“创造性”和“稳定性”的关键。过低可能导致发音模糊过高可能导致声音生硬、有杂音。解决方案在WebUI上动态调整CFG值。对于清晰的人声尝试1.8-2.5的范围。这是调优音质最有效的参数。音色选择问题某些实验性语言或音色可能训练数据不足效果不稳定。解决方案优先使用标明的英语音色如en-Carter_man,en-Emma_woman。如果需要其他语言做好效果不如英语的心理准备。输入文本不规范包含缩写、网络用语、复杂数字格式等。解决方案尽量使用规范、完整的英文句子。对于数字“123”写成“one hundred and twenty-three”可能效果更好。5. 高级排查与日志分析技巧当你解决了上述常见问题后还可以利用日志做更深入的分析。5.1 监控服务健康状态你可以写一个简单的脚本定期检查日志中的错误并发送警报。#!/bin/bash # monitor_vibevoice.sh LOG_FILE“/root/build/server.log” ERROR_KEYWORDS(“ERROR” “RuntimeError” “Exception” “failed” “out of memory”) for keyword in “${ERROR_KEYWORDS[]}”; do if tail -n 50 “$LOG_FILE” | grep -q “$keyword”; then echo “[$(date)] 检测到日志错误关键字: $keyword” /var/log/vibevoice_monitor.log # 这里可以添加发送邮件或钉钉通知的命令 # 例如: curl ‘https://oapi.dingtalk.com/robot/send?access_tokenxxx’ -H ‘Content-Type: application/json’ -d “{\“msgtype\“: \“text\“, \“text\“: {\“content\“: \“VibeVoice服务异常请检查\“}}” fi done5.2 性能分析与优化通过分析日志时间戳可以量化服务性能计算模型加载时间查找“Loading model”和“Application startup complete”之间的时间差。计算平均推理延迟抓取多条“Generating audio for text”和生成完成日志计算平均耗时。识别性能瓶颈如果推理时间波动很大可能和输入文本长度、并发请求数有关。可以在高并发下测试观察延迟增长情况。6. 总结好了以上就是关于VibeVoice-Realtime-0.5B部署中通过server.log排查问题的完整指南。我们来简单回顾一下关键点日志是灯塔遇到任何问题别瞎猜第一时间打开/root/build/server.log用tail,grep这些命令去搜寻线索。启动问题看顺序从环境、依赖、下载、到CUDA按照启动流程一步步排查日志会告诉你它卡在了哪一步。运行问题看请求页面能访问但功能异常重点看WebSocket连接建立后的错误信息特别是设备不一致和参数问题。音质问题调参数语音质量不佳优先调整WebUI上的CFG强度和推理步数这往往是性价比最高的优化手段。善用工具把查看日志的命令写成脚本甚至做成简单的监控能让你运维起来更轻松。记住再复杂的系统其运行逻辑都会在日志中留下痕迹。掌握了阅读和分析日志的能力你就拥有了解决大部分技术问题的“超能力”。希望这篇教程能帮你顺利搞定VibeVoice的部署享受实时语音合成的乐趣。获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。

相关文章:

VibeVoice-Realtime-0.5B部署教程:server.log日志排查常见问题

VibeVoice-Realtime-0.5B部署教程:server.log日志排查常见问题 你是不是也遇到过这种情况:兴冲冲地部署好一个AI应用,启动脚本一跑,终端上显示“服务启动成功”,但打开浏览器一看,页面死活加载不出来&…...

GroupKFold实战:从原理到代码,解决数据泄露的交叉验证方案

1. GroupKFold:解决数据泄露的交叉验证利器 想象一下这样的场景:你正在开发一个广告点击预测系统,训练数据来自1000个用户的历史行为。如果用传统K折交叉验证随机划分数据,很可能出现训练集和测试集包含同一用户数据的情况。这时模…...

1字节对齐:__attribute__((packed))和#pragma pack(push, 1) 区别

这两个指令的目的完全一样:强制取消内存对齐,让结构体成员紧凑排列(按1字节对齐)。 但是,它们的作用范围和兼容性有显著区别。对于你正在编写的 dw_uart_regs_t(UART 寄存器映射),推荐使用 #pragma pack 方案,或者使用更现代的写法。 以下是详细对比: 1. 核心区别…...

AI大语言模型狂飙突进的技术巅峰与商业风暴

📌 前言 | AI 时代的大语言模型到底有多“大”? 自从 2018 年 GPT 系列问世之后,大语言模型(LLM)便成为人工智能领域最耀眼的明星。它们不再仅仅用来“对话”,更开始在科研、医疗、制造业乃至法律与金融等领…...

定制无界,智赋成长——无锡哲讯以SAP Business One二次开发,解锁企业数字化无限可能

在中小企业数字化转型的浪潮中,SAP Business One(B1)凭借轻量化、一体化、高性价比的核心优势,成为万千成长型企业的ERP首选。但标准化的系统功能,终究难以完全适配千差万别的业务场景与管理逻辑——从制造业的批次追溯…...

追觅:从清洁电器到太空卫星,俞浩的科技野心能否实现?

【追觅超级碗的惊人承诺】追觅(Dreame,发音类似 "dreamy")利用超级碗半分钟曝光时间,承诺带来令人眼花缭乱的产品进化,从扫地机器人、割草机到超级跑车、人形机器人,甚至迈向太空。变形金刚风格的…...

若依RuoYi-Vue项目实战:手把手教你给后台管理系统加上短信登录(Spring Security深度适配)

若依RuoYi-Vue项目实战:Spring Security深度整合短信登录全流程解析 在当今企业级后台管理系统开发中,多因素认证已成为提升安全性的标配方案。本文将基于若依(RuoYi-Vue)这一流行开源框架,详细拆解如何在不破坏原有账号密码体系的前提下&am…...

从Python列表到向量检索:揭秘Agent Memory的完整进阶之路

文章探讨了Agent Memory的重要性,指出LLM的无状态特性导致传统记忆方法的局限性。文章从Python列表、Markdown文件存储、向量检索等基础方法入手,逐步深入到Cognee开源方案,强调向量检索和图向量混合记忆的必要性。Cognee通过整合关系型存储、…...

Logic Pro 录人声怎么设置?从零到专业的完整指南

文章来源:www.musiccoke.com前言很多刚接触 Logic Pro 的朋友都会问同一个问题:录人声到底怎么设置才对? 麦克风买好了、接口也有了,打开软件却不知道从哪里下手。本文将从硬件连接、软件配置、监听设置、录音参数到后期人声处理&…...

工业现场唯一通过UL 508A认证的VSCode 2026配置模板(含EtherCAT主站仿真、故障注入测试模块源码)

https://intelliparadigm.com 第一章:工业现场唯一通过UL 508A认证的VSCode 2026配置模板概览 该配置模板是专为严苛工业控制环境设计的 VSCode 2026 定制发行版,已正式获得 UL 508A 工业控制面板安全认证(证书编号:UL-508A-ICP-…...

声光调制器:深圳优峰技术如何用“声波开关”撬动光系统精度?

你有没有想过,为什么光纤光栅传感系统能精准捕捉到桥梁的微小应变?为什么激光加工能实现微米级的切割精度?答案往往藏在一个不起眼的光器件里——声光调制器。它像个隐形的“声波开关”,用超声波控制光的传播路径,让原…...

太原煤博会:标志科技信创平台打造矿山“数据中枢与AI大脑”

第二十四届 2026 太原煤炭(能源)工业技术与装备展览会盛大启幕,作为煤炭行业年度顶级盛会,展会聚焦智慧矿山、绿色低碳、智能装备、安全生产、矿井水处理、节能降耗等核心方向,引领行业数智化转型新风向。标志科技深耕…...

Java for循环跳出全场景解析

在Java开发中,for循环是最常用的迭代方式之一,而“跳出循环”则是日常开发中高频需求——有时需要跳过当前迭代,有时需要终止整个循环,甚至在多线程场景下,循环跳出的逻辑还会变得更加复杂。很多开发者(尤其…...

2026届最火的五大AI辅助写作网站实际效果

Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 借助自然语言处理跟深度学习技术的 AI 写作软件,给用户提供高效的文本生成辅助&…...

Docker+TensorFlow Lite田间推理加速指南:单树摄像头推理延迟从1.2s降至186ms的7步调优法

第一章:DockerTensorFlow Lite田间推理加速指南:单树摄像头推理延迟从1.2s降至186ms的7步调优法在部署于边缘设备(如Jetson Nano)的果园单树识别系统中,原始Docker容器内运行的TensorFlow Lite模型推理耗时达1200ms。通…...

采用深度学习的目标检测方法。数据集使用了有向检测框(oriented bounding boxes, OBB)进行标注,选择支持OBB的模型架构

采用深度学习的目标检测方法。数据集使用了有向检测框(oriented bounding boxes, OBB)进行标注,选择支持OBB的模型架构。以RoI Transformer为例,它是一种能够处理旋转目标检测问题的有效模型呀 尾矿库检测数据集,1183张…...

2026届学术党必备的十大降重复率方案解析与推荐

Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 现当下,生成式人工智能被大范围地运用在内容创作方面,然而过度地依赖…...

边缘设备内存告急?Docker 27资源回收黄金配置清单(含ARM64专用cgroup.memory.low阈值公式)

第一章:边缘设备内存告急的底层根源与Docker 27演进关键点边缘计算场景中,内存资源受限是常态而非例外。ARM64架构的工业网关、树莓派集群或车载ECU等典型边缘设备,普遍配备512MB–2GB物理内存,且需同时承载实时操作系统、传感器驱…...

L2-059 森林藏宝图 - java

L2-059 森林藏宝图 语言时间限制内存限制代码长度限制栈限制Java (javac)1200 ms512 MB16KB8192 KBPython (python3)500 ms256 MB16KB8192 KB其他编译器400 ms64 MB16KB8192 KB题目描述: 姥姥手里有一张森林藏宝图(别问怎么得到的)&#xff0…...

PATRAN应力云图显示不准?别急着改模型,先检查这3个设置(含NASTRAN坐标系详解)

PATRAN应力云图显示异常排查指南:从坐标系到节点平均的深度解析 当你在PATRAN中查看应力云图时,是否遇到过这样的困惑:明明模型加载和边界条件设置无误,求解过程也顺利完成,但最终显示的应力分布却与理论预期大相径庭&…...

2026年智能制造工厂数字孪生开发选型指南

在2026年,数字孪生已从智能制造的概念验证,转变为工厂实现透明化、柔性化与智能化运营的“标配”基础设施。然而,面对市场上林林总总的平台与技术路线,如何做出明智的选型,直接关系到项目的成败与投资回报。本指南旨在…...

别再拍脑袋估工时了!手把手教你用FPA功能点分析法,给软件项目算笔明白账

告别拍脑袋估算:FPA功能点分析法实战指南 估算软件项目工作量时,你是否也经历过这样的场景?老板或客户拿着模糊的需求文档问:"这个功能多久能做完?"你心里没底,只能硬着头皮给出一个数字&#xf…...

8.代码复用写法

基础语法: 定义父类(基类):封装通用的基础功能 class 父类名:def __init__(self, 通用参数):# 通用的初始化代码self.通用属性 通用参数def 通用方法1(self, 参数):# 通用的功能代码return 处理结果def 通用方法2(self, 参数):# …...

AEUX终极指南:如何简单快速地将Figma和Sketch设计无缝转换为After Effects动画

AEUX终极指南:如何简单快速地将Figma和Sketch设计无缝转换为After Effects动画 【免费下载链接】AEUX Editable After Effects layers from Sketch artboards 项目地址: https://gitcode.com/gh_mirrors/ae/AEUX 还在为设计到动画的繁琐转换过程而烦恼吗&…...

GEO优化系统实战:如何在不侵犯隐私的前提下提升用户体验?

GEO优化系统实战:隐私保护与用户体验的双赢策略 当用户打开一款旅行APP时,系统自动推荐当地特色活动和附近餐厅;电商平台根据用户所在城市调整运费计算规则;内容平台优先展示本地新闻——这些场景背后都离不开GEO优化系统的支持。…...

OpenFOAM v8波浪模拟:手把手教你配置alpha.water、p_rgh和U的边界条件(含waveAlpha详解)

OpenFOAM v8波浪模拟实战:从零掌握alpha.water、p_rgh与U边界配置 当第一次打开OpenFOAM波浪算例的边界条件文件时,那些密密麻麻的参数和类型声明往往让人望而生畏。作为计算流体力学(CFD)领域的开源利器,OpenFOAM在波浪模拟方面展现出强大能…...

目标检测面试必考:深入理解IoU、GIoU、DIoU损失函数的区别与代码实现

目标检测进阶:从IoU到CIoU的损失函数演进与实战解析 在计算机视觉领域,目标检测任务的核心挑战之一是如何精确评估预测框与真实框之间的匹配程度。传统IoU(Intersection over Union)作为基础指标,虽然直观有效&#xf…...

OBS美颜插件美妆效果下载安装使用教程:OBS美颜插件如何使用美妆功能?

OBS美颜插件美妆效果下载安装使用教程:OBS美颜插件如何使用美妆功能?先别着急,在教程开始之前,先给大家看看效果我写了一个详细的保姆级教程,小白都能看得懂第一步:下载OBS美颜插件安装包,并完成…...

别再傻傻分不清了!用Pikachu靶场实战演示:水平越权和垂直越权到底怎么测(附完整操作截图)

Web安全实战:Pikachu靶场中的水平与垂直越权漏洞深度解析 在数字化浪潮席卷各行各业的今天,Web应用安全已成为开发者必须直面的挑战。权限控制作为安全体系的核心支柱,一旦出现纰漏,往往会导致灾难性的数据泄露。对于刚踏入安全领…...

给计算机研究生的选刊指南:如何从CCF A类里挑出最适合你方向的顶会顶刊

计算机研究生选刊实战指南:在CCF A类顶会顶刊中精准定位你的学术赛道 深夜的实验室里,屏幕荧光映照着一张疲惫却执着的面孔——这是无数计算机专业研究生的真实写照。当毕业要求的压力遇上学术发表的焦虑,如何从浩如烟海的CCF A类期刊会议中选…...