首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> ASP.NET 基礎 >> 關於ASP.NET

ASP.NET 整合 Microsoft Speech SDK 實現語音合成 (TTS):伺服器端語音產生與播放完整指南

     編輯:關於ASP.NET

文字轉語音 (TTS) 技術讓應用程式能「朗讀」動態文字內容。本文介紹如何在 ASP.NET 中整合 Microsoft Speech Application SDK 1.1 (SASDK),實現伺服器端語音合成並串流至用戶端播放。

架構選擇:伺服器端合成 vs 用戶端合成

  • 用戶端:需安裝 TTS 引擎、語音包,受限於瀏覽器安全策略,現代瀏覽器已支援 Web Speech API (較推薦)。
  • 伺服器端:集中管理語音引擎、語音包、授權;輸出 WAV/MP3 串流,相容所有瀏覽器,適合企業內部系統、IVR 整合、無障礙輔助。

開發環境準備

  1. 安裝 Microsoft Speech SDK 5.1 (含 TTS 引擎)。
  2. 安裝 Speech Application SDK 1.1 (提供 Microsoft.Speech 命名空間)。
  3. 安裝語音包:Microsoft LH TTS (中文)、Microsoft Anna (英文) 等。
  4. IIS 應用程式集區啟用 32 位元模式 (舊版 Speech SDK 為 32 位元)。
  5. 授權:確認伺服器端合成授權條款 (部分語音包需商業授權)。

核心代碼:TTS 處理頁面 (TTSHandler.ashx)

public class TTSHandler : IHttpHandler
{
    public void ProcessRequest(HttpContext context)
    {
        string text = context.Request["text"];
        string voice = context.Request["voice"]; // 可選:指定語音名稱
        if (string.IsNullOrEmpty(text)) return;

        using (SpeechSynthesizer synth = new SpeechSynthesizer())
        {
            if (!string.IsNullOrEmpty(voice))
                synth.SelectVoice(voice);
            else
                synth.SelectVoiceByHints(VoiceGender.NotSet, VoiceAge.NotSet, 0, CultureInfo.CurrentUICulture);

            synth.Rate = 0;      // 語速 -10~10
            synth.Volume = 100;  // 音量 0~100

            // 產生 WAV 記憶體串流
            using (MemoryStream ms = new MemoryStream())
            {
                synth.SetOutputToWaveStream(ms);
                synth.Speak(text);
                ms.Position = 0;

                context.Response.Clear();
                context.Response.ContentType = "audio/wav";
                context.Response.AddHeader("Content-Length", ms.Length.ToString());
                ms.WriteTo(context.Response.OutputStream);
            }
        }
    }
    public bool IsReusable => false;
}

前端調用範例

<audio controls src="TTSHandler.ashx?text=歡迎使用語音合成系統&voice=Microsoft LH TTS"></audio>
// 或 JavaScript 動態播放
fetch('TTSHandler.ashx?text=' + encodeURIComponent(txt))
  .then(r => r.blob())
  .then(b => new Audio(URL.createObjectURL(b)).play());

進階應用場景

  • 動態公告廣播:後台輸入文字,前台即時播報。
  • 無障礙輔助:網頁內容自動朗讀 (WCAG 2.1 合規)。
  • IVR 整合:生成語音提示檔供電話系統撥放。
  • 多語系支援:依使用者語系自動切換語音包 (中/英/日/韓等)。

伺服器端 TTS 雖需授權與資源管理,但在可控環境下提供穩定、一致的語音體驗,是企業級應用的重要選項。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved