You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure语音翻译服务中说话人识别及UserID获取问题求助

解决方案:Azure语音翻译+说话人标记实现方案

核心思路

Azure Speech Translator本身不直接提供说话人区分能力,需要结合**对话转录(Conversation Transcription)**功能,它可以同时完成说话人识别、语音转写和翻译,完美匹配你的需求。

步骤1:安装依赖SDK

确保安装Azure Speech及对话转录相关的NuGet包:

dotnet add package Microsoft.CognitiveServices.Speech
dotnet add package Microsoft.CognitiveServices.Speech.Transcription

步骤2:完整实现代码(麦克风输入)

以下代码可直接实现说话人标记+英文翻译的功能:

using Microsoft.CognitiveServices.Speech;
using Microsoft.CognitiveServices.Speech.Transcription;
using System;
using System.Threading.Tasks;

class Program
{
    static async Task Main(string[] args)
    {
        // 替换为你的Azure Speech密钥和区域
        string speechKey = "YOUR_SPEECH_KEY";
        string speechRegion = "YOUR_SPEECH_REGION";

        // 配置语音服务,设置源语言和目标翻译语言
        var config = SpeechConfig.FromSubscription(speechKey, speechRegion);
        config.SetSpeechRecognitionLanguage("zh-CN"); // 替换为实际源语言
        config.AddTargetLanguage("en"); // 目标翻译语言为英文

        // 初始化对话转录器(麦克风输入)
        using var conversationTranscriber = new ConversationTranscriber(config);

        // 绑定转录完成事件
        conversationTranscriber.Transcribed += (s, e) =>
        {
            if (e.Result.Reason == ResultReason.RecognizedSpeech)
            {
                // 获取系统分配的说话人ID,映射为友好名称
                string speakerLabel = $"Speaker-{e.Result.SpeakerId}";
                // 获取英文翻译结果
                string translatedText = e.Result.Translations["en"];
                
                // 按需求格式输出
                Console.WriteLine($"{speakerLabel}: {translatedText}");
            }
            else if (e.Result.Reason == ResultReason.NoMatch)
            {
                Console.WriteLine($"无法识别语音: {e.Result.NoMatchDetails.Reason}");
            }
        };

        // 绑定取消/错误事件
        conversationTranscriber.Canceled += (s, e) =>
        {
            Console.WriteLine($"转录终止: {e.Reason}");
            if (e.Reason == CancellationReason.Error)
            {
                Console.WriteLine($"错误详情: {e.ErrorDetails}");
            }
        };

        // 启动转录
        await conversationTranscriber.StartTranscribingAsync();
        Console.WriteLine("开始说话,按任意键停止...");
        Console.ReadKey();
        await conversationTranscriber.StopTranscribingAsync();
    }
}

步骤3:切换为音频文件输入

如果需要处理本地音频文件,替换麦克风输入的初始化代码为:

// 从本地WAV文件读取音频
using var audioConfig = AudioConfig.FromWavFileInput("your-audio-file.wav");
using var conversationTranscriber = new ConversationTranscriber(config, audioConfig);

关键说明

  • SpeakerId:对话转录器自动为每个说话人分配唯一标识,你可以根据这个ID映射为Speaker-1、Speaker-2等友好名称。
  • 语言配置:SetSpeechRecognitionLanguage设置音频的源语言,AddTargetLanguage支持添加多个目标翻译语言。
  • 权限验证:确保你的Azure Speech资源所在区域支持对话转录功能,部分区域需提前申请启用。

内容的提问来源于stack exchange,提问作者Mayur

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 17:56:30