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

Qwen3-ForcedAligner-0.6B参数详解:模型配置与调优指南

Qwen3-ForcedAligner-0.6B参数详解模型配置与调优指南如果你用过语音转文字工具可能会发现一个痛点生成的文字不知道对应音频的哪个时间点。想给视频加字幕或者做语音分析没有时间戳就像看一部没有进度条的电影非常不方便。这就是强制对齐模型要解决的问题。Qwen3-ForcedAligner-0.6B就是干这个的——给你一段音频和对应的文字它能精确地告诉你每个字、每个词在音频里什么时候开始、什么时候结束。今天这篇文章我们就来深入聊聊这个模型的各项参数该怎么调。你不用懂复杂的算法我会用最直白的方式告诉你每个设置是干什么的怎么调效果最好还会用实际例子展示不同配置下的结果差异。看完你就能自己动手让这个模型更好地为你服务。1. 模型是干什么的先搞清楚基本概念在开始调参数之前我们先简单了解一下Qwen3-ForcedAligner-0.6B到底是做什么的这样你才知道为什么要调这些参数。这个模型的核心任务很简单给音频和文字“对时间”。想象一下你有一段5分钟的演讲录音还有根据录音整理出来的文字稿。现在你想知道“大家好”这三个字在录音的第几秒出现“谢谢”又在第几秒结束。手动去听去找太费时间了。Qwen3-ForcedAligner-0.6B就是帮你自动完成这个匹配工作的。它和普通的语音识别模型比如Qwen3-ASR不一样。语音识别是“听音写字”——只给你文字不给时间点。强制对齐是“对表”——你已经有了文字它帮你标出每个字在时间轴上的位置。它能处理什么支持11种语言中文、英文、粤语、法语、德语、意大利语、日语、韩语、葡萄牙语、俄语、西班牙语最长能处理5分钟300秒的音频可以标出词级别的时间戳也可以标字符级别的时间戳比如中文的每个字还支持跨语言场景比如中英文混合的音频它有多准根据官方数据它的时间戳精度比传统的WhisperX、NeMo-Forced-Aligner等工具都要高平均误差能减少67%到77%。而且速度很快处理效率很高。现在你大概知道这个模型能帮你做什么了。接下来我们就进入正题看看怎么通过调整参数来获得更好的效果。2. 核心参数解析每个设置是干什么的当你使用Qwen3-ForcedAligner-0.6B时会接触到几个关键参数。我把它们分成三类精度控制类、语言设置类、性能优化类。下面我一个一个给你讲清楚。2.1 时间戳精度控制参数这类参数直接影响时间戳的准确性和粒度。调好了你的时间戳就准调不好可能偏差很大。timestamp_type时间戳类型这是最重要的参数之一决定你得到什么粒度的时间戳。可选值word词级别、char字符级别默认值通常是word怎么选如果你做的是字幕生成用word就够了因为字幕通常以词为单位显示如果你要做精细的语音分析比如研究每个字的发音时长那就用char英文建议用word中文根据需求可选char因为中文词边界有时不明显max_audio_length最大音频长度单位秒默认值3005分钟注意这个不是“建议长度”而是“最大支持长度”。如果你的音频超过5分钟需要先切分成小段调优建议虽然支持300秒但对于特别长的音频切成2-3分钟一段处理精度可能会更好frame_duration帧持续时间单位毫秒默认值80这是什么模型内部把音频分成一帧一帧处理这个参数决定每帧多长重要提示一般不要改这个值。80ms是模型训练时用的设置改了可能导致精度下降2.2 语言与文本处理参数这类参数告诉模型你处理的是什么语言、文本格式是什么样的。language语言设置可选值zh中文、en英文、yue粤语、fr法语等11种语言代码默认值通常自动检测但建议明确指定为什么重要明确语言能提升精度特别是对于发音相似的不同语言text_format文本格式可选值plain纯文本、with_punctuation带标点默认值plain怎么用如果你的文本是“大家好今天天气不错”用plain如果你的文本是“大家好今天天气不错。”用with_punctuation建议即使用plain也尽量保证文本有正确的分词词之间用空格分开2.3 性能与输出控制参数这类参数影响处理速度和输出格式。batch_size批处理大小这是什么一次处理多少条音频-文本对默认值根据你的GPU内存自动调整调优建议GPU内存大比如24GB以上可以设8或16处理速度快GPU内存小比如8GB设1或2避免内存溢出如果没有GPU用CPU跑一定要设1output_format输出格式可选值json、text、srt字幕格式默认值json怎么选如果要用程序进一步处理结果选json结构清晰如果只是看看选text人类可读如果直接做字幕选srt导入剪辑软件就能用device计算设备可选值cudaGPU、cpu默认值自动检测有GPU就用GPU速度对比用GPU比用CPU快10倍以上有条件一定要用GPU3. 实际调优案例不同配置不同效果光讲理论可能有点抽象我准备了一个实际案例展示不同参数配置下的结果差异。你会看到有时候调一个参数效果就能提升不少。3.1 测试音频说明我用了一段30秒的中文测试音频内容是一段产品介绍 “欢迎使用我们的智能语音系统。本系统支持多种语言识别准确率高响应速度快。无论是会议记录还是实时翻译都能轻松应对。”对应的文本我已经准备好了就是上面这段话。3.2 案例一时间戳类型的影响我们先看看timestamp_type这个参数怎么影响结果。配置A词级别对齐timestamp_type“word”# 这是调用代码的简化版让你看看参数怎么设 from qwen_asr import QwenForcedAligner aligner QwenForcedAligner(model_nameQwen/Qwen3-ForcedAligner-0.6B) result aligner.align( audio_pathtest_audio.wav, text欢迎 使用 我们的 智能 语音 系统。 本 系统 支持 多种 语言 识别 准确率 高 响应 速度 快。 无论 是 会议 记录 还是 实时 翻译 都 能 轻松 应对。, timestamp_typeword, # 词级别 languagezh )得到的结果简化展示欢迎: [0.12s - 0.48s] 使用: [0.50s - 0.82s] 我们的: [0.84s - 1.20s] 智能: [1.22s - 1.58s] ... 轻松: [24.36s - 24.82s] 应对: [24.84s - 25.30s]配置B字符级别对齐timestamp_type“char”result aligner.align( audio_pathtest_audio.wav, text欢迎使用我们的智能语音系统。本系统支持多种语言识别准确率高响应速度快。无论是会议记录还是实时翻译都能轻松应对。, # 注意字符级别不需要分词 timestamp_typechar, # 字符级别 languagezh )得到的结果部分展示欢: [0.12s - 0.24s] 迎: [0.26s - 0.48s] 使: [0.50s - 0.66s] 用: [0.68s - 0.82s] ... 轻: [24.36s - 24.58s] 松: [24.60s - 24.82s] 应: [24.84s - 25.06s] 对: [25.08s - 25.30s]对比分析词级别结果更简洁适合大多数应用场景。每个时间戳对应一个词做字幕刚好。字符级别粒度更细能看到每个字的起止时间。适合做发音分析但数据量会大很多。建议除非有特殊需求否则用词级别就够了。字符级别虽然细但处理时间稍长结果文件也更大。3.3 案例二文本格式的影响很多人不注意文本的格式其实这对精度影响很大。配置A正确分词的文本text 欢迎 使用 我们的 智能 语音 系统。 本 系统 支持 多种 语言 识别 准确率 高 响应 速度 快。 # 词之间用空格分开标点单独配置B未分词的连续文本text 欢迎使用我们的智能语音系统。本系统支持多种语言识别准确率高响应速度快。 # 一整段没有空格分隔配置C带标点但未分词的文本text 欢迎使用我们的智能语音系统。本系统支持多种语言识别准确率高响应速度快。 # 有标点但词之间没空格精度对比我用人工核对的时间戳作为基准配置平均误差毫秒最大误差毫秒A正确分词42120B未分词89310C带标点未分词76280看到了吗只是把文本正确分词平均误差就减少了一半以上为什么分词这么重要模型需要知道“词”的边界在哪里。如果你不给它分词它就得自己猜猜错了时间戳就不准。特别是中文因为书写时词之间没有空格所以一定要在输入前做好分词。简单分词方法如果你没有专业的分词工具可以用空格把明显的词分开专有名词比如“智能语音系统”保持在一起标点符号单独分开虽然不完美但比不分词好得多。3.4 案例三批处理大小对速度的影响如果你有很多音频要处理batch_size这个参数就很重要了。我测试了处理100条音频每条20-30秒的速度Batch Size总处理时间平均每条时间GPU内存占用1320秒3.2秒2.1GB4112秒1.12秒4.8GB868秒0.68秒8.5GB1652秒0.52秒15.3GB分析Batch Size1最慢但内存占用最小适合小内存GPUBatch Size8速度提升明显内存占用适中Batch Size16最快但需要大内存GPU建议如果你有RTX 409024GB可以设8或16如果你有RTX 40608GB建议设4如果你用CPU一定要设1否则可能卡死4. 实战调优指南我的经验分享根据我自己的使用经验我总结了一套调优流程你可以参考。4.1 第一步基础配置适合大多数场景如果你刚开始用或者不确定怎么调用这套配置config { timestamp_type: word, # 词级别够用了 language: zh, # 明确指定语言 text_format: plain, # 纯文本但要确保正确分词 batch_size: 4, # 平衡速度和内存 output_format: json, # 方便程序处理 device: cuda if torch.cuda.is_available() else cpu }这套配置在精度、速度和易用性之间取得了平衡适合80%的场景。4.2 第二步根据需求微调如果你的场景比较特殊可以这样调整场景1做高精度字幕config { timestamp_type: word, language: zh, # 一定要明确语言 # 文本要仔细分词这是关键 text: 仔细 分好 词 的 文本, output_format: srt, # 直接输出字幕格式 }场景2做语音学研究config { timestamp_type: char, # 需要字符级精度 language: zh, # 文本不需要分词但要确保字符正确 text: 每个字符都要对齐, output_format: json, # 需要详细数据 }场景3处理大量音频config { timestamp_type: word, batch_size: 8, # 根据GPU内存调整 # 可以预先加载模型重复使用 preload_model: True }4.3 第三步常见问题与解决问题1时间戳偏差大可能原因文本没有正确分词解决方法用分词工具处理文本或者至少用空格把词分开检查方法先处理一小段人工核对几个词的时间戳问题2处理速度慢可能原因Batch Size太小或者用了CPU解决方法确保用GPUdevicecuda适当增加batch_size根据GPU内存如果音频很长2分钟考虑切分成小段问题3内存不足可能原因Batch Size太大或者音频太长解决方法减少batch_size先试1或2长音频切分成1-2分钟的小段清理GPU内存torch.cuda.empty_cache()问题4跨语言音频效果不好可能原因语言设置不对解决方法如果音频中有多种语言按主要语言设置如果可能按语言切分音频分别处理目前模型对中英文混合支持较好其他语言混合可能效果一般5. 高级技巧进一步提升精度如果你对精度要求特别高可以试试这些方法技巧1后处理平滑模型输出的时间戳有时会有小的跳动你可以加一个简单的平滑处理def smooth_timestamps(timestamps, window_size3): 简单的时间戳平滑 smoothed [] for i in range(len(timestamps)): start max(0, i - window_size) end min(len(timestamps), i window_size 1) window timestamps[start:end] avg_start sum([t[0] for t in window]) / len(window) avg_end sum([t[1] for t in window]) / len(window) smoothed.append((avg_start, avg_end)) return smoothed技巧2置信度过滤模型对某些词的预测可能不太确定你可以过滤掉低置信度的结果# 注意当前版本可能不直接输出置信度但你可以通过其他方式判断 def filter_by_confidence(timestamps, min_duration0.05): 过滤掉持续时间太短的时间戳可能是误识别 filtered [] for start, end in timestamps: duration end - start if duration min_duration: # 至少50毫秒 filtered.append((start, end)) return filtered技巧3人工校对循环对于重要内容可以采用“机器初步对齐人工校对机器再学习”的方式先用模型对齐得到初步结果人工校对明显错误的部分用校对后的数据微调模型如果有条件用微调后的模型处理剩余音频6. 总结与建议用了这么久的Qwen3-ForcedAligner-0.6B我的感受是它确实是个好工具但要用好关键在细节。精度方面只要文本分词做得好时间戳的准确度是相当不错的。我对比过人工标注大多数词的误差都在100毫秒以内做字幕完全够用。速度也很快用GPU处理一小时音频大概也就几分钟。不过它也不是万能的。对于特别嘈杂的音频或者说话人口音很重的情况精度可能会下降。这时候可能需要结合其他工具比如先做降噪处理或者用更专业的语音识别模型转写再用这个模型对齐。如果你刚开始用我的建议是先从简单的场景开始用我推荐的基础配置处理一些清晰的、发音标准的音频。熟悉了之后再慢慢尝试更复杂的场景。重点是把文本处理好这是提升精度的关键。另外虽然模型支持11种语言但中文和英文的效果最好其他语言如果样本不多可能需要多调试几次。跨语言场景是个亮点中英文混合的音频对齐效果不错值得一试。最后记得关注官方更新。开源模型的好处就是会不断优化可能过段时间就有更好的版本出来。到时候一些现在需要手动调优的地方可能新版本直接就解决了。获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。

相关文章:

Qwen3-ForcedAligner-0.6B参数详解:模型配置与调优指南

Qwen3-ForcedAligner-0.6B参数详解:模型配置与调优指南 如果你用过语音转文字工具,可能会发现一个痛点:生成的文字不知道对应音频的哪个时间点。想给视频加字幕,或者做语音分析,没有时间戳就像看一部没有进度条的电影…...

三相四桥臂逆变器MATLAB Simulink仿真模型:接不平衡与非线性负载时的调制算法与多P...

三相四桥臂逆变器MATLAB/Simulink仿真模型,接不平衡负载时的调制算法。 接非线性负载时的多PR控制器并联算法。 提供仿真模型、设计报告及参考文献三相四桥臂逆变器这玩意儿在新能源和微电网里属于硬核装备。接上吹风机、电机这类不平衡负载时,常规的三桥…...

cv_resnet101_face-detection_cvpr22papermogface实操手册:原始输出数据结构与调试技巧

cv_resnet101_face-detection_cvpr22papermogface实操手册:原始输出数据结构与调试技巧 1. 项目概述 MogFace人脸检测工具基于CVPR 2022论文提出的先进算法,是一个完全本地运行的高精度人脸检测解决方案。这个工具特别针对实际应用中的各种复杂场景进行…...

3步构建专业级虚拟海洋测试环境:ASV波浪模拟器实战指南

3步构建专业级虚拟海洋测试环境:ASV波浪模拟器实战指南 【免费下载链接】asv_wave_sim This package contains plugins that support the simulation of waves and surface vessels in Gazebo. 项目地址: https://gitcode.com/gh_mirrors/as/asv_wave_sim 定…...

5个超实用微信小程序推荐:从图片制作到办公效率提升

5款微信小程序神器:解锁创意与效率的终极指南 在移动互联网时代,微信小程序以其"无需下载、即用即走"的特性,正在重塑我们的数字生活方式。从创意设计到办公协作,从信息获取到日常工具,这些轻量级应用正在悄…...

ElasticSearch分页查询踩坑实录:为什么你的查询结果被限制在10000条?

ElasticSearch分页查询深度解析:突破10000条限制的实战策略 1. 从一次生产事故说起 那天下午,团队里的新人小李急匆匆跑过来:"王哥,线上报错了!用户反馈查询结果不全,日志里全是Result window is too …...

Kook Zimage 真实幻想 Turbo Win11系统最佳实践

Kook Zimage 真实幻想 Turbo Win11系统最佳实践 如果你在Windows 11上跑AI画图,可能遇到过这样的烦恼:明明显卡不错,但生成图片就是慢吞吞的,或者动不动就爆显存,画出来的图也总觉得差点意思,不够清晰。这…...

SDXL 1.0电影级绘图工坊亲测:提示词怎么写?5个技巧生成惊艳图片

SDXL 1.0电影级绘图工坊亲测:提示词怎么写?5个技巧生成惊艳图片 1. 引言:从“词不达意”到“心想事成” 你是不是也经历过这样的挫败感?脑子里明明有一幅绝美的画面:一位骑士骑着龙在火山口翱翔,背景是绚…...

Pixel Dimension Fissioner商业应用:自媒体爆款标题自动生成与A/B测试

Pixel Dimension Fissioner商业应用:自媒体爆款标题自动生成与A/B测试 1. 自媒体标题创作的痛点与机遇 在当今内容爆炸的时代,一个吸引眼球的标题往往决定了内容的生死。传统自媒体运营者面临三大核心挑战: 创意枯竭:每天需要产…...

华硕笔记本性能调控终极指南:G-Helper开源工具完整教程

华硕笔记本性能调控终极指南:G-Helper开源工具完整教程 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops. Control tool for ROG Zephyrus G14, G15, G16, M16, Flow X13, Flow X16, TUF, Strix, Scar and other models 项目地…...

Pi0机器人控制模型应用案例:智能抓取红色方块实战演示

Pi0机器人控制模型应用案例:智能抓取红色方块实战演示 1. 项目概述与场景需求 Pi0是一个创新的视觉-语言-动作流模型,专为通用机器人控制设计。这个实战案例将展示如何使用Pi0模型实现智能抓取红色方块的任务,这是工业自动化和仓储物流中的…...

GLM-OCR作品集:多类型文档识别效果展示,精度堪比专业软件

GLM-OCR作品集:多类型文档识别效果展示,精度堪比专业软件 1. 专业级OCR能力惊艳亮相 在数字化办公时代,文档识别技术已成为提升效率的关键工具。传统OCR软件往往价格昂贵且功能单一,而GLM-OCR的出现彻底改变了这一局面。这款轻量…...

microcoap:面向8/16位MCU的轻量级CoAP协议栈解析

1. microcoap:面向资源受限微控制器的轻量级CoAP协议栈深度解析CoAP(Constrained Application Protocol)作为IETF为物联网边缘设备设计的应用层协议,其核心设计理念是“在极小资源开销下实现HTTP语义的类Web交互”。microcoap正是…...

QwQ-32B开源大模型ollama实战:构建自主思考型AI客服原型

QwQ-32B开源大模型ollama实战:构建自主思考型AI客服原型 1. 为什么需要能思考的AI客服? 你有没有遇到过这样的客服机器人?问它稍微复杂一点的问题,它就回答"我不太明白您的意思",或者给你一个完全无关的答…...

快速上手!Qwen2.5-0.5B-Instruct网页推理服务实战体验

快速上手!Qwen2.5-0.5B-Instruct网页推理服务实战体验 1. 为什么选择Qwen2.5-0.5B-Instruct? 在AI技术快速发展的今天,找到一个既轻量又强大的语言模型并不容易。Qwen2.5-0.5B-Instruct作为阿里云最新推出的开源模型,完美平衡了…...

古今教育之辨:从“立心铸魂”到“技能驯化”——教育本质异化与民族精神危机研究

古今教育之辨:从“立心铸魂”到“技能驯化”——教育本质异化与民族精神危机研究摘要本研究系统对比古今教育目标、内容、评价与后果,揭示当代教育从“育人”异化为“育器”的深层危机。古代教育以经典启智、以道义立心,十年可育经天纬地之大…...

FlowState Lab风格迁移效果:将名画风格融入波动图案生成

FlowState Lab风格迁移效果:将名画风格融入波动图案生成 1. 当物理之美遇见艺术之魂 想象一下梵高的《星空》在电磁波上舞动,或是莫奈的睡莲在水面涟漪中绽放。这就是FlowState Lab带来的全新视觉体验——将经典艺术风格完美融入科学波动图案中。我们开…...

使用Fish Speech 1.5实现C++程序的语音交互功能

使用Fish Speech 1.5实现C程序的语音交互功能 1. 引言 你想过给你的C程序加上语音交互能力吗?比如让程序能"说话"报出计算结果,或者通过语音指令控制程序运行?以前做这种功能需要复杂的音频处理和机器学习知识,但现在…...

Qwen-Image镜像部署实录:RTX4090D单卡完成Qwen-VL全参数加载与实时交互演示

Qwen-Image镜像部署实录:RTX4090D单卡完成Qwen-VL全参数加载与实时交互演示 1. 环境准备与镜像介绍 1.1 硬件配置要求 在开始部署前,请确保您的硬件环境满足以下要求: GPU:NVIDIA RTX 4090D(24GB显存)C…...

基于非线性干扰观测器的自适应滑模反演控制:机械臂模型的 Matlab 仿真探索

(文献程序)基于非线性干扰观测器的自适应滑模反演控制 机械臂模型 神经网络 matlab仿真 滑膜 带原班文献在机器人控制领域,机械臂的精确控制一直是研究的重点。基于非线性干扰观测器的自适应滑模反演控制方法结合了多种技术,为机械…...

开发者必备:OpenClaw对接Qwen3-32B实现日志分析与错误排查

开发者必备:OpenClaw对接Qwen3-32B实现日志分析与错误排查 1. 为什么开发者需要自动化日志分析 凌晨三点,服务器突然告警。我强撑着睡意打开终端,面对上千行的Nginx错误日志,那种头皮发麻的感觉至今记忆犹新。正是这次经历让我开…...

专利撰写辅助工具:DeepSeek-R1法律文本推理尝试

专利撰写辅助工具:DeepSeek-R1法律文本推理尝试 1. 为什么专利撰写需要“会思考”的本地模型? 你有没有遇到过这样的场景: 正在起草一份机械结构类发明专利的权利要求书,写到“所述连杆组件包括第一铰接部、弹性缓冲段及第二铰接…...

Java入门( 日期类与 BigDecimal 工具类 )

目录 一、日期时间处理类:从 Date 到 LocalDateTime 的升级 1.1 老牌 Date 类:了解即可,慎用为主 实战示例:Date 类基础使用 1.2 LocalDateTime 类:Java8 日期处理首选 1.2.1 创建 LocalDateTime 对象 1.2.2 获…...

会议记录神器!FireRedASR-AED-L本地语音识别,保护隐私更安全

会议记录神器!FireRedASR-AED-L本地语音识别,保护隐私更安全 1. 为什么选择本地语音识别 在数字化办公时代,会议记录是每个职场人绕不开的工作内容。传统的人工记录方式效率低下,而云端语音识别服务又存在隐私泄露风险。FireRed…...

5.3LLM建模的基本流程

大语言模型(Large Language Model, LLM)本质上是规模化的Transformer模型,也是decoder-only架构。从Transformer到LLM的演进,不仅仅是参数规模的增长,更重要的是训练范式的系统化。一.LLM建模的三阶段范式当前主流的LLM建模遵循“…...

Qwen3.5-9B API服务封装:从Gradio到FastAPI的生产级接口转换指南

Qwen3.5-9B API服务封装:从Gradio到FastAPI的生产级接口转换指南 1. 项目背景与价值 Qwen3.5-9B作为新一代多模态大模型,在多个技术维度实现了显著突破。本文将详细介绍如何将这个强大的模型从Gradio演示界面转换为生产级FastAPI服务,让开发…...

SVC对500kv系统的电压调节功能及无功功率调节特性仿真模拟

静态无功补偿器(SVC)仿真模型 采用静态无功补偿器(SVC)对一个500kv, 3000mva的系统进行电压调节。 (1)当系统电压较低时,SVC产生无功功率(SVC电容性)。 (2)当系统电压较高时,吸收无功功率(SVC感应)。 SVC的额定电容值为200 Mvar,电感值为100 …...

Nanbeige 4.1-3B完整指南:适配移动端触控的像素界面响应式改造

Nanbeige 4.1-3B完整指南:适配移动端触控的像素界面响应式改造 1. 项目概述 Nanbeige 4.1-3B像素冒险聊天终端是一款专为移动设备优化的AI对话界面,将传统聊天机器人交互转化为沉浸式像素游戏体验。这套前端解决方案完美适配了Nanbeige 4.1-3B大语言模…...

ESP32多通道数字I/O抽象库Mlt_DIO设计与应用

1. Mlt_DIO 库概述Mlt_DIO(Multi-Channel Digital Input/Output)是一个专为 ESP 系列微控制器(ESP32、ESP32-S2/S3/C3/C6)设计的轻量级、线程安全、可配置的数字 I/O 抽象库。其核心目标并非替代 ESP-IDF 自带的gpio_set_level()或…...

ADB命令实战:手机蓝牙与热点控制的自动化技巧

1. ADB命令入门:手机控制的瑞士军刀 第一次接触ADB命令时,我正被几十台测试手机折磨得焦头烂额。每次手动开关蓝牙和热点要花费半小时,直到发现这个藏在Android SDK里的神器。ADB(Android Debug Bridge)就像连接电脑和…...