Skip to content

使用 Python 调用 Azure Speech to Text REST API 实现短语音转文字

解决在轻量级应用中集成语音识别的痛点:无需安装庞大的 Speech SDK,通过简单的 Python HTTP 请求即可将 60 秒以内的短音频文件转换为文本。

为什么需要这个技能

在许多自动化场景中,我们只需要处理简短的语音指令或短音频片段。安装和配置完整的 Azure Speech SDK 往往过于沉重,且增加了依赖管理的复杂性。

Azure 提供的 REST API 允许开发者直接通过标准的 HTTP 协议传输音频数据并获取转录结果。这种方式极大地简化了部署流程,尤其适用于 Serverless 函数(如 AWS Lambda, Azure Functions)或轻量级容器环境,使得语音转文字功能的集成变得像调用普通 API 一样简单。

适用场景

  • 短指令识别:处理 60 秒以内的语音指令或用户短留言。
  • 轻量级集成:在不希望引入复杂 SDK 的 Python 项目中实现语音转文字。
  • 自动化流水线:在 CI/CD 或自动化脚本中对短音频样本进行批量转录。
  • 低延迟原型开发:快速验证语音识别逻辑,无需配置复杂的开发环境。

核心工作流

  1. 环境准备:在 Azure Portal 中创建 Speech 资源,获取 API 密钥(Key)和区域(Region)。
  2. 音频预处理:确保音频文件符合要求(推荐使用 WAV 格式,PCM 编码,16kHz 采样率,单声道)。
  3. 构建 HTTP 请求
    • 设置 Ocp-Apim-Subscription-Key 请求头进行身份验证。
    • 正确配置 Content-Type(如 audio/wav; codecs=audio/pcm; samplerate=16000)。
    • 通过查询参数指定目标语言(如 zh-CN)和结果格式(simpledetailed)。
  4. 数据传输与解析:使用 requests 库发送 POST 请求,并解析返回的 JSON 数据中的 DisplayText 字段。
python
import os
import requests

def transcribe_audio(audio_file_path: str, language: str = "zh-CN") -> dict:
    """使用 REST API 转录短音频文件(最大 60 秒)"""
    region = os.environ["AZURE_SPEECH_REGION"]
    api_key = os.environ["AZURE_SPEECH_KEY"]
    
    url = f"https://{region}.stt.speech.microsoft.com/speech/recognition/conversation/cognitiveservices/v1"
    
    headers = {
        "Ocp-Apim-Subscription-Key": api_key,
        "Content-Type": "audio/wav; codecs=audio/pcm; samplerate=16000",
        "Accept": "application/json"
    }
    
    params = {
        "language": language,
        "format": "detailed"
    }
    
    with open(audio_file_path, "rb") as audio_file:
        response = requests.post(url, headers=headers, params=params, data=audio_file)
    
    response.raise_for_status()
    return response.json()

# 使用示例
result = transcribe_audio("test_audio.wav", "zh-CN")
print(result["DisplayText"])

下载和安装

下载 azure-speech-to-text-rest-py 中文版 Skill ZIP

解压后将目录放入你的 AI 工具 skills 文件夹,重启工具后即可使用。具体路径参考内附的 USAGE.zh.md

你可能还需要

暂无推荐