讲师中心 微信公众号
AI工具推荐 视频效率加速

Azure Transcription

Polar Sponsor
爱发电 赞助
.NET 9.0

企业级语音转写,支持实时流式转写、说话人分离、多语言及批量音频处理。

Azure语音转写专业版

功能概述

Azure语音转写专业版是一项面向实际任务的技能,主要用于1. 实时流式转写;执行 批量转写队列管理 操作,处理输入数据并返回结果;

核心要点

  • 验证执行结果,确认输出符合预期格式;
  • 参考 批量转写队列管理 相关配置参数进行设置;
  • 执行 实时流式转写 操作,处理输入数据并返回结果;

使用与执行

参考 实时流式转写 相关配置参数进行设置;2. 说话人分离(Diarization);输入 : 用户提供说话人分离(Diarization)所需的指令和必要。它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。

结果检查与注意事项

从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。

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)所需的指令和必要参数。 处理: 按照skill规范执行说话人分离(Diarization)操作,遵循单一意图原则。

  • 执行说话人分离(Diarization)操作,处理输入数据并返回结果
  • 验证执行结果,确认输出符合预期格式
  • 异常时参考错误处理章节进行恢复
  • 关键参数: 说话人分离(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':
                self._export_srt(result, output_dir)
            elif format == 'vtt':
                self._export_vtt(result, output_dir)
            elif format == 'json':
                self._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}nn")

    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}"
  • 执行批量转写队列管理操作,处理输入数据并返回结果
  • 验证执行结果,确认输出符合预期格式
  • 异常时参考错误处理章节进行恢复
  • 关键参数: 批量转写队列管理 选项

能力覆盖范围

本skill还覆盖以下能力场景: 企业级语音转写工、支持实时流式转写、批量处理与自定义、语音转写专业版、面向企业团队与专、业用户的高级语音、转写工具、核心能力、实时流式语音转写、支持麦克风输入与、流式音频、自动识别不同说话、支持大规模音频文、件处理、自定义语音模型集、提升专业领域识别、准确率、多语言混合转写。这些能力在上述核心功能中均有对应处理逻辑。

适用场景

场景一:企业会议实时字幕

企业会议系统实时生成字幕与会议纪要。

# 会议实时字幕系统
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.export_results(format='vtt', output_dir='./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

client = TranscriptionClient(
    endpoint=os.environ["TRANSCRIPTION_ENDPOINT"],
    credential=os.environ["TRANSCRIPTION_KEY"]
)

# 启动实时转写
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')

命令参数说明

  1. -with-diarization: 命令参数,用于指定操作选项
  2. -review-20260118: 命令参数,用于指定操作选项
  3. -CN: 命令参数,用于指定操作选项
  4. -US: 命令参数,用于指定操作选项

命令参数说明

  • -US: 命令参数,用于指定操作选项
  • -CN: 命令参数,用于指定操作选项

命令参数说明

  • -CN: 命令参数,用于指定操作选项
  • -US: 命令参数,用于指定操作选项

命令参数说明

  • -CN: 命令参数,用于指定操作选项
  • -US: 命令参数,用于指定操作选项

命令参数说明

  • -US: 命令参数,用于指定操作选项
  • -CN: 命令参数,用于指定操作选项

命令参数说明

  • -US: 命令参数,用于指定操作选项
  • -CN: 命令参数,用于指定操作选项

命令参数说明

  • -CN: 命令参数,用于指定操作选项
  • -US: 命令参数,用于指定操作选项

命令参数说明

  • -US: 命令参数,用于指定操作选项
  • -CN: 命令参数,用于指定操作选项

命令参数说明

  • -US: 命令参数,用于指定操作选项
  • -CN: 命令参数,用于指定操作选项

输入格式

参数名 类型 必填 说明
content string 是 相关说明
content string 否 相关说明, 默认: 默认值
content string 否 相关说明, 可选值: json/text/markdown
style string 否 输出风格, 参考 references/style.md

输出格式

{
  "success": true,
  "data": {
    result: "相关说明",
    result: "相关说明",
    result: "相关说明",
    "metadata": {
      "template_used": "reviewer",
      "word_count": 0,
      "style": "专业"
    }
  },
  "error": null
}

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

异常处理

错误场景 原因 处理方式
配置错误 参数缺失或格式错误 检查依赖说明中的配置要求
运行时错误 运行环境不满足 确认运行环境符合依赖说明
网络错误 连接超时或不可达 执行ping命令测试网络连通性,检查防火墙和代理设置连接后执行ping命令测试网络连通性,检查防火墙和代理设置连接后重新执行命令,参考国内替代方案

依赖说明

运行环境

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

第三方依赖

依赖项 类型 是否必需 获取方式
LLM API API 必需 由Agent内置LLM提供
Python 3 运行时 必需 python.org 下载安装
azure-ai-transcription Python SDK 必需 pip install azure-ai-transcription
Azure认知服务 云服务 必需 Azure门户创建资源
concurrent.futures Python标准库 必需 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="your_api_key_here"

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

案例展示

转写参数配置

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

输出格式对比

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

常见问题

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

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

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

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

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

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

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

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

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

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

错误处理

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

已知限制

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

热门AI工具

更多
Lovart
Lovart Hot

一款面向视觉设计创作的AI设计平台,可通过智能体和画布工作流辅助制作海报、Logo、网页、PPT及其他视觉内容。

音述AI
音述AI Hot

一款AI音频处理工具,主要用于音述AI是一个以“用声音述说故事”为核心的 AI 音乐创作与声音分享社区,适合需要提升相关任务效率的用户。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

二狗PPT
二狗PPT Hot

一款AI演示文稿工具,主要用于专为中式职场打造的AI PPT生成工具,适合需要提升相关任务效率的用户。

立刻MV
立刻MV Hot

立刻MV是一款AI文本写作工具,AI 音乐视频(MV)创作工具。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

创客贴AI

创客贴AI是一款AI图像与设计工具,AI辅助的智能在线设计工具。

切问学术

切问学术是一款AI论文写作工具,复旦大学NLP团队推出的AI学术智能体。

相关专题

更多
Vite 项目如何打包和部署
Vite 项目如何打包和部署

Vite项目打包部署专题汇集生产构建、产物预览、输出目录、资源路径、Nginx与GitHub Pages部署及常见白屏和路由404问题的已审核文章,帮助读者完成上线流程。

0

2026.10.28

Vite 如何搭配 Vue.js
Vite 如何搭配 Vue.js

Vite搭配Vue.js专题汇集创建Vue 3项目、配置开发环境、路径别名、Vue插件、代理、多环境构建与调试的已审核文章,帮助读者完成从初始化到日常开发的配置。

0

2026.10.28

Vite 项目目录怎么看
Vite 项目目录怎么看

Vite项目目录专题汇集入口文件、src源码、public静态资源、路径别名、项目根目录和构建输出目录相关的已审核文章,帮助读者理解各文件夹的用途与引用方式。

0

2026.10.28

Gradle插件开发入门教程
Gradle插件开发入门教程

本专题介绍Gradle插件开发的基本流程,涵盖插件类编写、自定义任务注册、扩展参数设计和插件应用方法,帮助你理解插件如何组织构建逻辑,减少多个项目之间的重复配置。

0

2026.10.22

Gradle Wrapper配置教程
Gradle Wrapper配置教程

本专题介绍Gradle Wrapper的基本作用,涵盖文件组成、生成方法、版本配置和任务调用,帮助你理解项目如何使用指定的Gradle版本,减少不同开发环境带来的构建差异。

0

2026.10.22

Golangci-lint检查器使用教程
Golangci-lint检查器使用教程

本专题整理Golangci-lint常用Linters的用途与配置方法,覆盖错误处理、无效代码、安全、复杂度、命名和依赖检查,帮助项目合理选规则。

0

2026.10.22

Gradle怎么构建Java项目
Gradle怎么构建Java项目

本专题介绍Gradle Java项目构建方法,涵盖Java插件配置、依赖声明、源码编译、测试执行和打包检查,帮助你理解各阶段的任务关系,逐步完成项目构建。

0

2026.10.22

PHP时间戳漏洞修复教程
PHP时间戳漏洞修复教程

本专题汇总PHP常见时间戳漏洞,包括2038年溢出、时区漂移、时间戳伪造、重放攻击、时间盲注与日志审计失效等,并给出升级64位环境、使用 DateTimeImmutable、统一UTC、严格超时校验、预处理绑定、hash_equals 比对等修复方案,帮助开发者快速排查和加固时间相关代码。

0

2026.10.22

Golangci-lint配置文件与规则设置
Golangci-lint配置文件与规则设置

本专题聚焦Golangci-lint YAML配置文件,讲清运行参数、规则启停、目录排除、问题过滤及严重级别设置,便于团队统一检查标准。

0

2026.10.22

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn