Coding

azure-transcription

Try it

Azure语音转写专业版 —— 面向企业团队与专业用户的高级语音转写工具。核心能力: - 实时流式语音转写,支持麦克风输入与流式音频 - 说话人分离(Diarization),自动识别不同说话人 - 批量转写队列管理,支持大规模音频文件处理 - 自定义语音模型集成,提升专业领域识别准确率 - 多语言混合转写...

What it does

Azure语音转写专业版 —— 面向企业团队与专业用户的高级语音转写工具。核心能力: - 实时流式语音转写,支持麦克风输入与流式音频 - 说话人分离(Diarization),自动识别不同说话人 - 批量转写队列管理,支持大规模音频文件处理 - 自定义语音模型集成,提升专业领域识别准确率 - 多语言混合转写...

The skill document

Azure语音转写专业版

专业版增值服务

能力免费版付费版
基础功能支持支持
Azure语音转写专业版批量处理不支持支持
高级参数配置与自定义规则不支持支持
批量任务编排与队列管理不支持支持
结果导出与多格式转换不支持支持
实时状态监控与异常告警不支持支持

主要能力

1. 实时流式转写

import os
from azure.ai.transcription import TranscriptionClient
# ...
client = TranscriptionClient(
    endpoint=os.environ["TRANSCRIPTION_ENDPOINT"],
    credential=os.environ["TRANSCRIPTION_KEY"]
)
# ...
# 实时流式转写
stream = client.begin_stream_transcription(locale="zh-CN")
# ...
# 发送音频文件进行实时转写
stream.send_audio_file("realtime_audio.wav")
# ...
# 接收实时转写结果
for event in stream:
    if event.is_partial:
        print(f"[实时] {event.text}", end="\r")
    else:
        print(f"[完成] {event.text}")

2. 说话人分离(Diarization)

# 启用说话人分离的批量转写
job = client.begin_transcription(
    name="meeting-with-diarization",
    locale="zh-CN",
    content_urls=["https:///meeting.wav"],
    diarization_enabled=True,
    diarization_config={
        "max_speakers": 5,
        "enabled": True
    }
)
# ...
result = job.result()
# ...
# 输出带说话人标识的转写结果
for segment in result.segments:
    speaker = segment.speaker  # 说话人标识: Speaker1, Speaker2, ...
    print(f"[{speaker}] [{segment.start_time:.1f}s-{segment.end_time:.1f}s] {segment.text}")
  • 异常时参考错误处理章节进行恢复
  • 关键参数: 说话人分离(diarization) 选项

3. 批量转写队列管理

import os
from concurrent.futures import ThreadPoolExecutor, as_completed
from azure.ai.transcription import TranscriptionClient
# ...
class BatchTranscriptionManager:
    def __init__(self, endpoint, key, max_workers=5):
        self.client = TranscriptionClient(endpoint=endpoint, credential=key)
        self.max_workers = max_workers
        self.results = []
        self.failed = []
# ...
    def submit_transcription(self, audio_url, name, locale="zh-CN",
                              diarization=True, callback=None):
        """提交单个转写任务"""
        try:
            job = self.client.begin_transcription(
                name=name,
                locale=locale,
                content_urls=[audio_url],
                diarization_enabled=diarization
            )
            result = job.result()
# ...
            output = {
                'name': name,
                'status': result.status,
                'transcript': result.transcript,
                'segments': result.segments if hasattr(result, 'segments') else []
            }
            self.results.append(output)
# ...
            if callback:
                callback(output)
            return output
        except Exception as e:
            self.failed.append({'name': name, 'error': str(e)})
            return None
# ...
    def batch_transcribe(self, audio_files, locale="zh-CN", diarization=True):
        """批量转写"""
        with ThreadPoolExecutor(max_workers=self.max_workers) as executor:
            futures = []
            for audio in audio_files:
                future = executor.submit(
                    self.submit_transcription,
                    audio['url'], audio['name'], locale, diarization
                )
                futures.append(future)
# ...
            for future in as_completed(futures):
                future.result()
# ...
        return {'success': self.results, 'failed': self.failed}
# ...
    def export_results(self, format='srt', output_dir='./transcripts'):
        """导出转写结果"""
        os.makedirs(output_dir, exist_ok=True)
        for result in self.results:
            if format == 'srt':
_export_srt(result, output_dir)
            elif format == 'vtt':
_export_vtt(result, output_dir)
            elif format == 'json':
_export_json(result, output_dir)
# ...
    def _export_srt(self, result, output_dir):
        path = os.path.join(output_dir, f"{result['name']}.srt")
        with open(path, 'w', encoding='utf-8') as f:
            for i, seg in enumerate(result['segments'], 1):
                start = self._format_time(seg.start_time)
                end = self._format_time(seg.end_time)
                speaker = f"[{seg.speaker}] " if hasattr(seg, 'speaker') else ""
                f.write(f"{i}\n{start} --> {end}\n{speaker}{seg.text}\n\n")
# ...
    def _format_time(self, seconds):
        h = int(seconds // 3600)
        m = int((seconds % 3600) // 60)
        s = int(seconds % 60)
        ms = int((seconds % 1) * 1000)
        return f"{h:02d}:{m:02d}:{s:02d},{ms:03d}"
```- 验证执行结果,确认输出符合预期格式
- 异常时参考错误处理章节进行恢复
- 关键参数: `批量转写队列管理` 选项
## 适用范围
### 场景一:企业会议实时字幕
企业会议系统实时生成字幕与会议纪要.
```python
# 会议实时字幕系统
meeting_manager = BatchTranscriptionManager(
    endpoint=os.environ["TRANSCRIPTION_ENDPOINT"],
    key=os.environ["TRANSCRIPTION_KEY"]
)
# ...
# 实时流式转写会议音频
stream = client.begin_stream_transcription(locale="zh-CN")
# ...
print("=== 会议实时字幕 ===")
for event in stream:
    if not event.is_partial:
        timestamp = event.timestamp
        print(f"[{timestamp}] {event.text}")
# ...
# 会后批量处理录音(带说话人分离)
meeting_manager.submit_transcription(
    audio_url="https:///meetings/full_meeting.wav",
    name="quarterly-review-20260118",
    locale="zh-CN",
    diarization=True
)

场景二:客服通话批量转写

客服中心批量转写通话录音,用于质检与分析.

# 批量转写客服通话
manager = BatchTranscriptionManager(
    endpoint=os.environ["TRANSCRIPTION_ENDPOINT"],
    key=os.environ["TRANSCRIPTION_KEY"],
    max_workers=5
)
# ...
# 定义批量任务
call_recordings = [
    {"url": "https:///calls/call_001.wav", "name": "call_001"},
    {"url": "https:///calls/call_002.wav", "name": "call_002"},
    {"url": "https:///calls/call_003.wav", "name": "call_003"},
    {"url": "https:///calls/call_004.wav", "name": "call_004"},
    {"url": "https:///calls/call_005.wav", "name": "call_005"},
]
# ...
# 批量转写(启用说话人分离)
results = manager.batch_transcribe(call_recordings, locale="zh-CN", diarization=True)
# ...
# 导出为SRT格式
manager.export_results(format='srt', output_dir='./call_transcripts')
# ...
print(f"成功: {len(results['success'])}, 失败: {len(results['failed'])}")

场景三:多语言视频字幕批量生成

视频平台批量生成多语言字幕.

# 多语言字幕生成
video_manager = BatchTranscriptionManager(
    endpoint=os.environ["TRANSCRIPTION_ENDPOINT"],
    key=os.environ["TRANSCRIPTION_KEY"],
    max_workers=3
)
# ...
# 中文视频生成中文字幕
chinese_videos = [
    {"url": "https:///videos/video_cn_01.wav", "name": "video_cn_01"},
    {"url": "https:///videos/video_cn_02.wav", "name": "video_cn_02"},
]
video_manager.batch_transcribe(chinese_videos, locale="zh-CN", diarization=False)
video_manager.export_results(format='vtt', output_dir='./subtitles/zh-CN')
# ...
# 英文视频生成英文字幕
english_videos = [
    {"url": "https:///videos/video_en_01.wav", "name": "video_en_01"},
    {"url": "https:///videos/video_en_02.wav", "name": "video_en_02"},
]
video_manager.batch_transcribe(english_videos, locale="en-US", diarization=False)
video_manager./subtitles/en-US')

使用方法

1. 环境准备

# 依赖说明
pip install azure-ai-transcription
# ...
# 配置环境变量
export TRANSCRIPTION_ENDPOINT="https://.cognitiveservices.azure.com"
export TRANSCRIPTION_KEY="API_KEY"

2. 实时转写

import os
from azure.ai.transcription import TranscriptionClient
# ...
# 启动实时转写
stream = client.begin_stream_transcription(locale="zh-CN")
stream.send_audio_file("audio.wav")
# ...
for event in stream:
    print(event.text)

3. 批量转写

manager = BatchTranscriptionManager(
    endpoint=os.environ["TRANSCRIPTION_ENDPOINT"],
    key=os.environ["TRANSCRIPTION_KEY"]
)
# ...
results = manager.batch_transcribe(
    audio_files=[{"url": "https:///audio.wav", "name": "test"}],
    locale="zh-CN",
    diarization=True
)
# ...
manager.export_results(format='srt')

请求格式

参数名类型必填说明
contentstring处理的内容输入
modestring处理模式, 可选值: json/text/markdown
stylestring输出风格, 参考 references/style.md

结果格式

{
  "success": true,
  "data": {
    "result": "处理结果",
    "status": "success",
    "metadata": {
    "metadata": {
      "template_used": "reviewer",
      "word_count": 0,
      "style": "专业"
    }
  },
  "error": null
}

输出模板参考: assets/output.json

异常管理

错误场景原因处理方式
配置错误参数缺失或格式错误检查依赖说明中的配置要求
运行时错误运行环境不满足确认运行环境符合依赖说明
网络错误连接超时或不可达

安装与配置

运行环境

  • Agent平台: 支持SKILL.md的任意AI Agent(Claude Code / Cursor / Codex / Gemini CLI等)
  • 操作系统: Windows / macOS / Linux
  • Python版本: 3.8及以上

第三方依赖

依赖项类型是否必需获取方式
LLM APIAPI必需由Agent内置LLM提供
Python 3运行时必需python.org 下载安装
azure-ai-transcriptionPython SDK必需pip install azure-ai-transcription
Azure认知服务云服务必需Azure门户创建资源
concurrent.futuresPython标准库必需Python自带

API Key 配置

  • TRANSCRIPTION_ENDPOINT:Azure认知服务端点URL
  • TRANSCRIPTION_KEY:Azure认知服务订阅密钥
  • 与免费版使用相同的认证配置,完全兼容

可用性分类

  • 分类: MD+EXEC(纯Markdown指令,核心功能需要exec命令行执行能力)
  • 说明: 基于Markdown的AI Skill,通过自然语言指令驱动Agent执行专业语音转写任务。支持实时流式转写、说话人分离、批量队列等企业级功能,通过Python SDK调用Azure AI服务。与免费版完全兼容,可直接复用免费版的认证配置与基础转写流程. API Key配置方式:
export API_KEY="${API_KEY:?请设置环境变量}"

配置后需重启会话或开启新终端生效。API Key应妥善保管,避免泄露到版本控制系统.

案例展示

转写参数配置

参数说明免费版专业版
locale语言代码支持支持
diarization_enabled说话人分离不支持支持
max_speakers最大说话人数不支持可配置
custom_model自定义模型不支持支持
profanity_filter敏感词过滤不支持支持
punctuation标点恢复不支持支持

输出格式对比

格式用途特点
纯文本文档归档最简格式
SRT视频字幕带序号与时间戳
VTTWeb视频字幕HTML5标准
JSON程序处理含完整元数据

问答总汇

Q1:实时转写有延迟怎么办?

实时转写延迟受网络条件影响。建议使用稳定的网络连接,并适当增大音频缓冲区.

Q2:说话人分离准确率如何提升?

确保音频质量良好,说话人间隔清晰。设置合理的max_speakers参数,避免过多或过少.

Q3:批量转写如何处理失败任务?

专业版BatchTranscriptionManager自动记录失败任务,可通过retry_failed方法重试.

Q4:自定义语音模型如何接入?

在Azure门户训练自定义模型后,在转写配置中指定custom_model参数即可.

Q5:与免费版的API配置是否兼容?

完全兼容。专业版与免费版使用相同的TRANSCRIPTION_ENDPOINT和TRANSCRIPTION_KEY配置.

错误恢复方案

错误场景2原因处理方式
LLM响应超时或无响应网络延迟或模型负载过高请求重试;确认Agent平台LLM服务正常
输入内容格式不正确用户输入不符合skill预期格式检查输入是否符合skill使用说明中的格式要求,参考示例章节
执行结果与预期不符指令描述不够明确或上下文不足提供更详细的指令描述,补充必要的上下文信息
命令执行失败运行环境不满足要求或权限不足确认运行环境符合依赖说明中的要求;检查命令权限设置

注意事项

  • 需要API Key,无Key环境无法使用
  • 依赖云服务,需要网络连接

问题处理指引

错误现象可能原因诊断步骤解决方案
转写结果中出现乱码音频文件编码格式不支持或音频文件损坏检查音频文件编码格式,尝试使用支持的格式重新上传使用支持的音频格式(如PCM、WAV)上传音频文件
实时转写中断网络连接不稳定或音频输入中断检查网络连接状态,确保音频输入设备正常工作确保网络连接稳定,检查音频输入设备连接
批量转写任务长时间未完成音频文件过大或任务队列拥堵检查音频文件大小,增加任务队列容量分割大文件进行转写,或增加队列容量
说话人分离不准确音频质量差或说话人相似度高检查音频质量,尝试提高说话人分离参数提高音频质量,调整说话人分离参数
自定义模型训练失败模型训练数据不足或模型配置错误检查模型训练数据,调整模型配置增加训练数据,调整模型配置参数

安全保证

风险项等级防护措施验证方法
API Key泄露使用环境变量存储API Key,避免硬编码在代码中定期检查代码库,确保没有API Key硬编码
音频数据泄露对音频数据进行加密存储和传输使用SSL/TLS加密传输数据,对存储数据进行加密
访问控制不当实施最小权限原则,限制对Azure认知服务的访问定期审查访问控制策略,确保权限最小化
模型训练数据安全使用安全的模型训练数据存储和传输使用安全的存储服务,确保数据传输加密
网络攻击实施网络防火墙和入侵检测系统配置网络防火墙规则,启用入侵检测系统

创新特色

场景效率提升量化分析差异化对比
企业会议实时字幕每场会议节省10分钟的人工转录时间相比传统转录,实时字幕提高会议效率
客服通话批量转写每天节省2小时的人工转录时间自动化转录提高客服效率,降低人力成本
多语言视频字幕批量生成每个视频节省30分钟的人工转录时间自动化多语言转录,降低多语言字幕制作成本
说话人分离每个音频文件节省20分钟的人工标注时间自动识别说话人,提高转录准确率和效率
自定义模型每个模型训练节省50%的时间自定义模型提高特定领域的转录准确率,降低误报率

功能介绍

  • 自动化执行: 企业级语音转写工具,支持实时流式转写、说话人分离、批量处理与自定义模型。Azure语音转写专业版 —— 面向企业团队与专
  • 文件处理: 支持多种文件格式的读取、解析和写入操作
  • API集成: 通过标准化接口调用外部服务并处理响应
  • 命令执行: 在安全沙箱中执行系统命令并收集结果

帮助文档

Q1: Azure语音转写专业版支持哪些输入格式?

A1: 企业级语音转写工具,支持实时流式转写、说话人分离、批量处理与自定义模型。Azure语音转写专业版 —— 面向企业团队与专业用户的高级语音转写工具。核心能力: -。支持文本指令和结构化参数输入,具体格式参考使用流程章节。

Q2: 需要配置API Key吗?

A2: 是的,部分功能需要配置对应平台的API Key。请在依赖说明章节查看具体要求,并通过环境变量安全配置。

Q3: 命令行执行失败怎么办?

A3: 检查命令参数是否正确,确认运行环境支持exec能力。如遇权限问题,请参照错误处理章节排查。

性能数据

操作场景手动耗时自动化耗时效率提升
文件解析与提取5-10分钟/个<5秒/个60-120x
批量文件处理(100个)8-16小时<5分钟96-192x
API调用与响应解析2-3分钟/次<1秒/次120-180x
多接口数据聚合15-30分钟<10秒90-180x
命令执行与结果收集3-5分钟/次<2秒/次90-150x
重复任务批量执行因任务而异线性缩减5-50x
错误排查与修复10-30分钟<30秒20-60x

特色分析

对比维度Azure语音转写专业版传统手动方式通用脚本工具
自动化程度全流程自动完全手动部分自动
错误处理内置错误恢复依赖人工经验基本try-catch
可复用性参数化配置一次性脚本模板化
安全合规内置安全检查无安全保障无安全保障
适用场景企业级语音转写工具,支持实时流式转写、说话人分离、批量处理与自定义模型。Azur通用场景通用场景

Azure语音转写专业版通用排查步骤

  1. 检查输入参数: 确认所有必填参数已提供且格式正确
  2. 查看日志输出: 定位具体错误行和异常类型
  3. 验证环境配置: 确认依赖库版本和运行环境满足要求
  4. 逐步调试: 缩小问题范围,隔离故障模块

Related skills

使用Azure AI进行批量语音转文字,支持基础转写与时间戳,适合个人用户处理音频。Use when 需要提升效率、自动化流程、批量处理、工作流优化时使用。不适用于需要人工创意判断的任务。适用于独立开发者、企业团队和自动化工作流场景。支持中文交互,无需复杂配置即开即用。输出结果可直接使用,减少二次加工成本。

1 installs

Azure语音交互专业版 —— 面向企业团队与专业开发者的高级实时语音AI工具。核心能力: - 函数调用(Function Tools),支持AI主动调用外部API - 自定义语音集成:Azure标准语音、自定义语音、个人语音 - 电话音频格式支持:G。Use when 需要API集成、接口对接、Webhook配置、系统连接时使用。不适用于逆向工程闭源API.

Azure AI Transcription 的 Python 客户端库基础功能。支持对存储在 Blob 中的音频 提交批量转写作业,通过 locale 指定识别语言。使用订阅密钥认证,通过 TRANSCRIPTION_ENDPOINT 与 TRANSCRIPTION_KEY 环境变量配置资源。本基础版不含 实时流式转写、说话人分离、时间戳字幕生成等高级能力.

面向团队与企业用户的 Whisper 语音转文字工具(专业版)。核心能力: - 涵盖免费版全部能力(本地转录、翻译、多格式输出) - 批量处理:目录级递归转录,支持任务队列 - GPU 加速:CUDA / Metal / MPS 全面支持 - 说话人分离(diarization):多人对话识别 - 自定义词典:专业术语与品牌名词优化 - API 服务化:FastAPI 封装,支持远程调用 - 模型管理:多版本切换与预加载 - 质量评估:置信度分析与人工校对流程 适用场景: - 企业会议纪要自动化流水线 ...

使用Azure VoiceLive构建基础实时语音AI应用,支持文本/音频输出与基本会话管理。Use when 需要视频处理、音频编辑、媒体转换、配音生成时使用。不适用于版权受保护的媒体内容处理。适用于独立开发者、企业团队和自动化工作流场景。支持中文交互,无需复杂配置即开即用。输出结果可直接使用,减少二次加工成本。

1 installs

Azure VoiceLive SDK基础版技能,提供WebSocket双向连接、API Key认证、 pcm16音频流式输入输出与文字转写能力。适用于快速验证语音对话效果、 构建简单语音助手原型。仅支持OpenAI系列音色与服务端VAD,不包含 函数调用、Azure原生音色、多VAD模式等高级特性.