使用 Docker 安裝及執行語音容器

使用容器時,可以在您自己的環境中使用語音服務功能子集。 在本文中,您將瞭解如何下載、安裝及執行語音容器。

注意

中斷連線的容器價格和定額層會因標準容器而異。 如需詳細資訊,請參閱 語音服務定價

必要條件

您必須先符合下列必要條件,才能使用語音服務容器。 如尚未擁有 Azure 訂用帳戶,請在開始之前先建立免費帳戶。 您需要:

計費自變數

語音容器在未連線至 Azure 進行計量的情況下,則不會獲得執行的授權。 您必須設定容器,以一律與計量服務通訊計費資訊。

所有 Azure AI 容器都需要三個主要參數。 Microsoft 軟體授權條款必須具有接受。 也需要端點 URI 和 API 金鑰。

對容器的查詢會以用於 ApiKey 參數的 Azure 資源定價層計費。

當下列三個選項都提供有效值時,此命令 docker run 會啟動容器:

選項 描述
ApiKey 語音資源的 API 金鑰,用於追蹤計費資訊。
ApiKey 值可用來啟動容器,並可在相對應語音資源的 Azure 入口網站 [金鑰] 頁面上取得。 移至 [ 金鑰 ] 頁面,然後選取 [複製到剪貼簿] 圖示。
Billing 語音資源的端點,用於追蹤計費資訊。
端點可在相對應語音資源的 Azure 入口網站 [概觀] 頁面上取得。 移至 [ 概觀 ] 頁面,將滑鼠停留在端點上,然後 會出現 [複製到剪貼簿 ] 圖示。 視需要複製並使用端點。
Eula 表示您已接受容器的授權。
此選項的值必須設定為 接受

重要

這些訂用帳戶金鑰可用於存取 Azure AI 服務 API。 請勿共用您的金鑰。 安全地儲存它們。 例如,使用 Azure 金鑰保存庫。 我們也建議您定期重新產生這些密鑰。 呼叫 API 只需一把金鑰。 當您重新產生第一個金鑰時,您可以使用第二個金鑰繼續存取服務。

容器需要計費自變數值才能執行。 這些值可讓容器連線到計費端點。 容器會每隔 10 到 15 分鐘報告使用量。 如果容器未在允許的時間範圍內連線到 Azure,容器會繼續執行,但在還原計費端點之前不會提供查詢。 在 10 到 15 分鐘的相同時間間隔內,嘗試連接 10 次。 如果它無法連線到 10 次嘗試內的計費端點,容器就會停止提供要求。 如需傳送哪些資訊給 Microsoft 以供計費的範例,請參閱 Azure AI 服務文件中的「Azure AI 容器常見問題集」

如需這些選項的詳細資訊,請參閱 設定容器

容器需求和建議

下表說明每個語音容器資源的最低和建議配置:

容器 最小值 建議需求 語音模式
語音轉換文字 4 核心、4 GB 記憶體 8 核心,8 GB 記憶體 +4 核心,8 GB 記憶體
自訂語音轉換文字 4 核心、4 GB 記憶體 8 核心,8 GB 記憶體 +4 核心,8 GB 記憶體
語音語言識別 1 核心、1 GB 記憶體 1 核心、1 GB 記憶體 n/a
類神經文字轉換語音 6 核心,12 GB 記憶體 8 核心,16 GB 記憶體 n/a

每個核心必須至少為 2.6 gbhertz (GHz) 或更快。

核心和記憶體會對應至 --cpus--memory 設定,這些設定會當做命令的 docker run 一部分使用。

注意

最小和建議的配置是以 Docker 限制為基礎, 而不是 主計算機資源。 例如,大型語言模型的語音轉換文字容器記憶體對應部分。 我們建議將整個檔案計入記憶體需求中。 您需要新增額外的 4 到 8 GB 以載入語音模型(請參閱上表)。 此外,第一次執行任一個容器可能需要更長的時間,因為模型正在分頁到記憶體中。

主電腦需求和建議

主機是執行 Docker 容器的 x64 型電腦。 它可以是內部部署或 Azure 中 Docker 主控服務的電腦,例如:

注意

容器支援使用 GStreamer 壓縮語音 SDK 的音訊輸入。 若要在容器中安裝 GStreamer,請遵循使用編解碼器壓縮音訊輸入搭配語音 SDK 中的 GStreamer Linux 指示。

進階向量延伸模組支援

主機是執行 Docker 容器的電腦。 主機 必須支援進階向量延伸 模組 (AVX2)。 您可以使用下列命令檢查 Linux 主機上的 AVX2 支援:

grep -q avx2 /proc/cpuinfo && echo AVX2 supported || echo No AVX2 support detected

警告

需要主計算機才能支援AVX2。 容器無法在沒有AVX2支援的情況下正確運作。

執行容器

使用 docker run 命令來執行容器。 開始執行後,容器就會持續執行,直到您停止容器

記下使用 docker run 命令的下列最佳做法:

  • 行接續字元:下列各節中的 Docker 命令會使用反斜 \線 ,做為行接續字元。 根據您的主機作業系統需求取代或移除此字元。
  • 自變數順序:除非您熟悉 Docker 容器,否則請勿變更自變數的順序。

您可以使用 docker images 命令來列出您下載的容器映射。 下列命令會列出每個已下載之容器映像的識別碼、存放庫和標籤,並將它格式化為表格:

docker images --format "table {{.ID}}\t{{.Repository}}\t{{.Tag}}"

以下為範例結果:

IMAGE ID         REPOSITORY                TAG
<image-id>       <repository-path/name>    <tag-name>

驗證容器是否正在執行

有數種方式可以驗證容器正在執行。 找出有問題的容器的外部IP位址和公開的埠,然後開啟您最愛的網頁瀏覽器。 使用後續的各種要求 URL 來驗證容器正在執行中。

此處列出的範例要求 URL 為 http://localhost:5000,但您的特定容器可能會有所不同。 請務必依賴容器的外部 IP 位址和公開的埠。

要求 URL 目的
http://localhost:5000/ 容器會提供首頁。
http://localhost:5000/ready 透過 GET 要求,此 URL 會提供容器已準備好接受模型查詢的驗證。 此要求可用於 Kubernetes 活躍度和整備探查
http://localhost:5000/status 此外,使用 GET 要求此 URL 會驗證用來啟動容器的 API 金鑰是否有效,而不會造成端點查詢。 此要求可用於 Kubernetes 活躍度和整備探查
http://localhost:5000/swagger 容器會為端點提供一組完整的文件和立即試用功能。 透過這項功能,您可以將您的設定輸入網頁式 HTML 窗體,然後進行查詢,而不需要撰寫任何程序代碼。 查詢傳回之後,會提供範例 CURL 命令來示範所需的 HTTP 標頭和主體格式。

停止容器

若要關閉容器,請在容器執行所在的命令行環境中,選取 Ctrl+C

在相同的主機上執行多個容器

如果您想要使用公開的埠執行多個容器,請務必使用不同的公開埠執行每個容器。 例如,在埠 5000 上執行第一個容器,並在埠 5001 上執行第二個容器。

您可以讓此容器和不同的 Azure AI 容器在主機上一起執行。 您也可以針對相同的 Azure AI 容器執行多個容器。

主機 URL

注意

如果您正在執行多個容器,請使用唯一的埠號碼。

通訊協定 主機 URL 容器
WS ws://localhost:5000 語音轉換文字

自訂語音轉換文字
HTTP http://localhost:5000 類神經文字轉換語音

語音語言識別

如需使用 WSS 和 HTTPS 通訊協定的詳細資訊,請參閱 Azure AI 服務文件中的「容器安全性」

疑難排解

當您啟動或執行容器時,可能會遇到問題。 請使用輸出裝載並啟用記錄。 這麼做可讓容器產生對問題進行疑難解答時有幫助的記錄檔。

提示

如需疑難排解的詳細資訊和指導,請參閱 Azure AI 服務文件中的「Azure AI 容器常見問題集 (FAQ)」

記錄設定

語音容器隨附 ASP.NET Core 記錄支援。 以下是開始時預設記錄至主控台的 neural-text-to-speech container 範例:

docker run --rm -it -p 5000:5000 --memory 12g --cpus 6 \
mcr.microsoft.com/azure-cognitive-services/speechservices/neural-text-to-speech \
Eula=accept \
Billing={ENDPOINT_URI} \
ApiKey={API_KEY} \
Logging:Console:LogLevel:Default=Information

如需記錄的詳細資訊,請參閱 Azure AI 服務文件中的「設定語音容器」「使用量記錄」

Microsoft 診斷容器

如果您在執行 Azure AI 容器時遇到問題,可以嘗試使用 Microsoft 診斷容器。 您可以使用此容器來診斷部署環境中的常見錯誤,這些錯誤可能會導致 Azure AI 容器無法如預期般運作。

若要取得容器,請使用下列 docker pull 命令:

docker pull mcr.microsoft.com/azure-cognitive-services/diagnostic

然後執行容器。 {ENDPOINT_URI}取代為您的端點,並將 取代{API_KEY}為您的資源金鑰:

docker run --rm mcr.microsoft.com/azure-cognitive-services/diagnostic \
eula=accept \
Billing={ENDPOINT_URI} \
ApiKey={API_KEY}

容器會測試與計費端點的網路連線能力。

執行已中斷連線的容器

若要執行中斷連線的容器 (未連線到網際網路),您必須提交此要求表單,並等候核准。 如需在中斷連線的環境中套用及購買承諾用量方案以使用容器的詳細資訊,請參閱 Azure AI 服務文件中的在中斷連線的環境中使用容器

下一步