使用 Docker 安裝及執行語音容器
使用容器時,可以在您自己的環境中使用語音服務功能子集。 在本文中,您將瞭解如何下載、安裝及執行語音容器。
注意
中斷連線的容器價格和定額層會因標準容器而異。 如需詳細資訊,請參閱語音服務價格。
必要條件
在使用語音服務容器之前,您必須符合下列必要條件。 如尚未擁有 Azure 訂用帳戶,請在開始之前先建立免費帳戶。 您需要:
- 主機電腦上已安裝了 Docker。 Docker 必須設定為允許容器與 Azure 連線,以及傳送帳單資料至 Azure。
- 在 Windows 上,也必須將 Docker 設定為支援 Linux 容器。
- 您應該對 Docker 概念有基本的了解。
- 使用免費 (F0) 或標準 (S) 定價層的語音服務資源。
計費引數
語音容器在未連線至 Azure 進行計量的情況下,則不會獲得執行的授權。 您必須設定容器,以隨時與計量服務通訊帳單資訊。
所有 Azure AI 容器都需要三個主要參數。 Microsoft 軟體授權條款必須具有「接受」值。 也需要端點 URI 和 API 金鑰。
針對容器的查詢,會以 ApiKey
參數使用的 Azure 資源定價層來計費。
當下列三個選項都填入了有效值時,docker run
命令將會啟動容器:
選項 | 描述 |
---|---|
ApiKey |
語音資源的 API 金鑰,用於追蹤計費資訊。ApiKey 值可用來啟動容器,並可在相對應語音資源的 Azure 入口網站 [金鑰] 頁面上取得。 移至 [金鑰] 頁面,然後選取 [複製至剪貼簿] 圖示。 |
Billing |
語音資源的端點,用於追蹤計費資訊。 端點可在相對應語音資源的 Azure 入口網站 [概觀] 頁面上取得。 移至 [概觀] 頁面,並將滑鼠停留在端點上方,然後會出現 [複製至剪貼簿] 圖示。 複製端點,並將其用在需要之處。 |
Eula |
表示您接受容器的授權。 此選項的值必須設定為接受。 |
重要
這些訂用帳戶金鑰可用於存取 Azure AI 服務 API。 請不要共用您的金鑰。 安全地儲存金鑰。 例如,使用 Azure Key Vault。 我們也建議您定期重新產生這些金鑰。 呼叫 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 GHz 或更快。
核心和記憶體會對應至 --cpus
和 --memory
設定,用來作為 docker run
命令的一部分。
注意
最低和建議的配置以 Docker 限制 (而非主機電腦資源) 為基礎。 例如,大型語言模型的語音轉換文字容器記憶體對應部分。 我們建議將整個檔案計入記憶體需求中。 您需要新增額外的 4 到 8 GB 來載入語音模型 (請參閱上表)。 此外,任一個容器的第一次執行可能需要較長的時間,因為模型會分頁至記憶體中。
主機電腦的需求和建議
主機是執行 Docker 容器的 x64 型電腦。 它可以是您內部部署的電腦,或是在 Azure 中裝載服務的 Docker,例如:
- Azure Kubernetes Service。
- Azure 容器執行個體。
- 部署至 Azure Stack 的 Kubernetes \(英文\) 叢集。 如需詳細資訊,請參閱將 Kubernetes 部署至 Azure Stack。
注意
容器支援使用 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 |
容器會為端點提供一組完整的文件和立即試用功能。 使用此功能,您可以將自己的設定輸入至以 Web 為基礎的 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 服務文件中的在中斷連線的環境中使用容器。
下一步
- 檢閱設定容器以了解組態設定。
- 了解如何搭配 Kubernetes 和 Helm 使用語音服務容器。
- 在 Azure 容器執行個體上部署及執行容器
- 使用更多 Azure AI 容器。