在本快速入門中,我們將使用 Microsoft Foundry,在 Foundry Tools 中的 Foundry Tools 中的 Azure 語音,試用文字轉換語音模型。
先決條件
- Azure 訂用帳戶。
- 一個鑄造廠的專案。 如果你需要建立專案,請參考 「建立 Microsoft Foundry 專案」。
嘗試文字轉語音
請依照以下步驟嘗試在 Foundry 入口網站進行文字轉語音:
- 登入 Microsoft Foundry。 確定 新鑄造廠 的開關是開啟的。 這些步驟指的是 Foundry(新)。
- 從右上方功能表中選取 [建置]。
- 選取左窗格中的 模型 。
- 「AI Services」索引標籤顯示可在 Foundry 入口網站中開箱即用的 Azure 人工智慧模型。 選取 [Azure 語音 - 文字轉換語音] 以開啟文字轉換語音遊樂場。
- 從下拉式功能表中選擇預先建置的語音,並選擇性地使用提供者參數滑桿進行調整。
- 在文字方塊中輸入範例文字。
- 選取 [ 播放 ] 以聆聽合成語音朗讀您的文字。
參考文件 | 套件 (NuGet) | GitHub 上的其他範例
在 Foundry Tools 中使用 Azure Speech,你可以執行一個合成類人聲音來閱讀文字的應用程式。 您可以變更語音、輸入要說的文字,以及聆聽電腦喇叭上的輸出。
秘訣
您可以在 Speech Studio 語音資源庫中嘗試文字轉換語音,而不需要註冊或撰寫任何程式碼。
秘訣
試試 Azure Speech Toolkit ,可以輕鬆在 Visual Studio Code 上建立和執行範例。
先決條件
- Azure 訂用帳戶。 您可以免費建立一個訂用帳戶。
- 在 Azure 入口網站中建立語音 AI 服務資源。
- 取得語音資源金鑰和端點。 部署語音資源之後,選取 [移至資源] 以檢視和管理索引鍵。
設定 Azure 環境
語音 SDK 可以 NuGet 套件的形式取得,實作 .NET Standard 2.0。 使用主控台安裝本指南中稍後說明的語音 SDK。 如需安裝指示,請參閱安裝語音 SDK。
設定環境變數
你需要驗證你的應用程式才能使用 Foundry Tools。 本文說明如何使用環境變數來儲存您的認證。 然後,您可以從程式碼存取環境變數,以驗證您的應用程式。 針對實際執行環境,使用更安全的方法來儲存和存取您的認證。
重要事項
我們建議使用適用於 Azure 資源的受控識別搭配 Microsoft Entra ID 驗證,以避免使用在雲端執行的應用程式儲存認證。
請謹慎使用 API 金鑰。 請勿在程式碼中直接包含 API 金鑰,且切勿公開張貼金鑰。 如果使用 API 金鑰,請將這些金鑰安全地儲存在 Azure Key Vault 中、定期輪替金鑰,並使用角色型存取控制和網路存取限制來限制對 Azure Key Vault 的存取。 如需在應用程式中安全地使用 API 金鑰的詳細資訊,請參閱透過 Azure Key Vault 使用 API 金鑰。
如需 AI 服務安全性的詳細資訊,請參閱驗證對 Azure AI 服務的要求 (英文)。
若要設定語音資源密鑰和端點的環境變數,請開啟主控台視窗,並遵循作系統和開發環境的指示。
- 若要設定
SPEECH_KEY環境變數,請以您其中一個資源金鑰取代 your-key。 - 若要設定
ENDPOINT環境變數,請將 您的端點 取代為您資源的其中一個端點。
setx SPEECH_KEY your-key
setx ENDPOINT your-endpoint
附註
如果您只需要存取目前主控台的環境變數,您可以使用 set (而不是 setx) 來設定環境變數。
新增環境變數之後,您可能需要重新啟動任何需要讀取環境變數的程式,包括主控台視窗。 例如,如果正在使用 Visual Studio 作為編輯器,請您在執行範例前重新啟動 Visual Studio。
建立應用程式
遵循下列步驟來建立主控台應用程式並安裝語音 SDK。
在資料夾開啟要新增專案的命令提示字元視窗。 執行此命令以使用 .NET CLI 建立主控台應用程式。
dotnet new console此命令會在專案目錄中建立 Program.cs 檔案。
使用 .NET CLI 在新專案中安裝語音 SDK。
dotnet add package Microsoft.CognitiveServices.Speech將 Program.cs 的內容取代為下列程式碼。
using System; using System.IO; using System.Threading.Tasks; using Microsoft.CognitiveServices.Speech; using Microsoft.CognitiveServices.Speech.Audio; class Program { // This example requires environment variables named "SPEECH_KEY" and "END_POINT" static string speechKey = Environment.GetEnvironmentVariable("SPEECH_KEY"); static string endpoint = Environment.GetEnvironmentVariable("END_POINT"); static void OutputSpeechSynthesisResult(SpeechSynthesisResult speechSynthesisResult, string text) { switch (speechSynthesisResult.Reason) { case ResultReason.SynthesizingAudioCompleted: Console.WriteLine($"Speech synthesized for text: [{text}]"); break; case ResultReason.Canceled: var cancellation = SpeechSynthesisCancellationDetails.FromResult(speechSynthesisResult); Console.WriteLine($"CANCELED: Reason={cancellation.Reason}"); if (cancellation.Reason == CancellationReason.Error) { Console.WriteLine($"CANCELED: ErrorCode={cancellation.ErrorCode}"); Console.WriteLine($"CANCELED: ErrorDetails=[{cancellation.ErrorDetails}]"); Console.WriteLine($"CANCELED: Did you set the speech resource key and endpoint values?"); } break; default: break; } } async static Task Main(string[] args) { var speechConfig = SpeechConfig.FromEndpoint(speechKey, endpoint); // The neural multilingual voice can speak different languages based on the input text. speechConfig.SpeechSynthesisVoiceName = "en-US-Ava:DragonHDLatestNeural"; using (var speechSynthesizer = new SpeechSynthesizer(speechConfig)) { // Get text from the console and synthesize to the default speaker. Console.WriteLine("Enter some text that you want to speak >"); string text = Console.ReadLine(); var speechSynthesisResult = await speechSynthesizer.SpeakTextAsync(text); OutputSpeechSynthesisResult(speechSynthesisResult, text); } Console.WriteLine("Press any key to exit..."); Console.ReadKey(); } }若要變更語音合成語言,請以另一個
en-US-Ava:DragonHDLatestNeural取代 。所有神經語音都是多語系,而且可流利地使用其自己的語言和英文。 例如,如果英文的輸入文字是 I'm excited to try text to speech,而您設定
es-ES-Ximena:DragonHDLatestNeural作為語言,則會使用西班牙文腔調以英文讀出該文字。 如果語音不說輸入文字的語言,語音服務就不會輸出合成的音訊。執行新的主控台應用程式,以開始對預設喇叭進行語音合成。
dotnet run重要事項
確保您已設定
SPEECH_KEY和END_POINT環境變數。 如果您未設定這些變數,則範例會失敗,並顯示錯誤訊息。輸入您想要說的一些文字。 例如,輸入我很高興嘗試文字轉換語音。 選取 Enter 鍵以聆聽合成語音。
Enter some text that you want to speak > I'm excited to try text to speech
備註
更多語音合成選項
本快速入門會使用 SpeakTextAsync 作業來合成您輸入的簡短文字區塊。 您也可以使用檔案中的長格式文字,並更精細地控制語音樣式、韻律和其他設定。
- 如需從檔案進行語音合成以及進一步控制語音語調、韻律和其他設定的相關資訊,請參閱如何合成語音和使用語音合成標記語言改善合成 (SSML)。
- 如需合成長格式文字轉換語音的相關資訊,請參閱文字轉換語音的批次合成 API。
Foundry Tools 中的 Azure 語音的 OpenAI 文字轉換語音功能
也支援 OpenAI 文字轉換語音。 請參閱 Azure 語音中的 OpenAI 文字轉語音 與 多語言語音。 您可以使用支援的 OpenAI 語音名稱取代 en-US-Ava:DragonHDLatestNeural,例如 en-US-FableMultilingualNeural。
清除資源
您可以使用 Azure 入口網站或 Azure 命令列介面 (CLI) 來移除您所建立的語音資源。
參考文件 | 套件 (NuGet) | GitHub 上的其他範例
在 Foundry Tools 中使用 Azure Speech,你可以執行一個合成類人聲音來閱讀文字的應用程式。 您可以變更語音、輸入要說的文字,以及聆聽電腦喇叭上的輸出。
秘訣
您可以在 Speech Studio 語音資源庫中嘗試文字轉換語音,而不需要註冊或撰寫任何程式碼。
秘訣
試試 Azure Speech Toolkit ,可以輕鬆在 Visual Studio Code 上建立和執行範例。
先決條件
- Azure 訂用帳戶。 您可以免費建立一個訂用帳戶。
- 在 Azure 入口網站中建立語音 AI 服務資源。
- 取得語音資源金鑰和端點。 部署語音資源之後,選取 [移至資源] 以檢視和管理索引鍵。
設定 Azure 環境
語音 SDK 可以 NuGet 套件的形式取得,實作 .NET Standard 2.0。 稍後會在本指南中安裝語音 SDK。 如需安裝指示,請參閱安裝語音 SDK。
設定環境變數
你需要驗證你的應用程式才能使用 Foundry Tools。 本文說明如何使用環境變數來儲存您的認證。 然後,您可以從程式碼存取環境變數,以驗證您的應用程式。 針對實際執行環境,使用更安全的方法來儲存和存取您的認證。
重要事項
我們建議使用適用於 Azure 資源的受控識別搭配 Microsoft Entra ID 驗證,以避免使用在雲端執行的應用程式儲存認證。
請謹慎使用 API 金鑰。 請勿在程式碼中直接包含 API 金鑰,且切勿公開張貼金鑰。 如果使用 API 金鑰,請將這些金鑰安全地儲存在 Azure Key Vault 中、定期輪替金鑰,並使用角色型存取控制和網路存取限制來限制對 Azure Key Vault 的存取。 如需在應用程式中安全地使用 API 金鑰的詳細資訊,請參閱透過 Azure Key Vault 使用 API 金鑰。
如需 AI 服務安全性的詳細資訊,請參閱驗證對 Azure AI 服務的要求 (英文)。
若要設定語音資源密鑰和端點的環境變數,請開啟主控台視窗,並遵循作系統和開發環境的指示。
- 若要設定
SPEECH_KEY環境變數,請以您其中一個資源金鑰取代 your-key。 - 若要設定
ENDPOINT環境變數,請將 您的端點 取代為您資源的其中一個端點。
setx SPEECH_KEY your-key
setx ENDPOINT your-endpoint
附註
如果您只需要存取目前主控台的環境變數,您可以使用 set (而不是 setx) 來設定環境變數。
新增環境變數之後,您可能需要重新啟動任何需要讀取環境變數的程式,包括主控台視窗。 例如,如果正在使用 Visual Studio 作為編輯器,請您在執行範例前重新啟動 Visual Studio。
建立應用程式
遵循下列步驟來建立主控台應用程式並安裝語音 SDK。
在 Visual Studio Community 中建立名為
SpeechSynthesis的 C++ 主控台專案。將 SpeechSynthesis.cpp 的內容取代為下列程式碼:
#include <iostream> #include <stdlib.h> #include <speechapi_cxx.h> using namespace Microsoft::CognitiveServices::Speech; using namespace Microsoft::CognitiveServices::Speech::Audio; std::string GetEnvironmentVariable(const char* name); int main() { // This example requires environment variables named "SPEECH_KEY" and "ENDPOINT" auto speechKey = GetEnvironmentVariable("SPEECH_KEY"); auto endpoint = GetEnvironmentVariable("ENDPOINT"); if ((size(speechKey) == 0) || (size(endpoint) == 0)) { std::cout << "Please set both SPEECH_KEY and ENDPOINT environment variables." << std::endl; return -1; } auto speechConfig = SpeechConfig::FromEndpoint(speechKey, endpoint); // The neural multilingual voice can speak different languages based on the input text. speechConfig->SetSpeechSynthesisVoiceName("en-US-Ava:DragonHDLatestNeural"); auto speechSynthesizer = SpeechSynthesizer::FromConfig(speechConfig); // Get text from the console and synthesize to the default speaker. std::cout << "Enter some text that you want to speak >" << std::endl; std::string text; getline(std::cin, text); auto result = speechSynthesizer->SpeakTextAsync(text).get(); // Checks result. if (result->Reason == ResultReason::SynthesizingAudioCompleted) { std::cout << "Speech synthesized to speaker for text [" << text << "]" << std::endl; } else if (result->Reason == ResultReason::Canceled) { auto cancellation = SpeechSynthesisCancellationDetails::FromResult(result); std::cout << "CANCELED: Reason=" << (int)cancellation->Reason << std::endl; if (cancellation->Reason == CancellationReason::Error) { std::cout << "CANCELED: ErrorCode=" << (int)cancellation->ErrorCode << std::endl; std::cout << "CANCELED: ErrorDetails=[" << cancellation->ErrorDetails << "]" << std::endl; std::cout << "CANCELED: Did you set the speech resource key and endpoint values?" << std::endl; } } std::cout << "Press enter to exit..." << std::endl; std::cin.get(); } std::string GetEnvironmentVariable(const char* name) { #if defined(_MSC_VER) size_t requiredSize = 0; (void)getenv_s(&requiredSize, nullptr, 0, name); if (requiredSize == 0) { return ""; } auto buffer = std::make_unique<char[]>(requiredSize); (void)getenv_s(&requiredSize, buffer.get(), requiredSize, name); return buffer.get(); #else auto value = getenv(name); return value ? value : ""; #endif }選取 [工具]>[Nuget 套件管理員]>[套件管理員主控台]。 在套件管理員主控台中,執行此命令。
Install-Package Microsoft.CognitiveServices.Speech若要變更語音合成語言,請以另一個
en-US-Ava:DragonHDLatestNeural取代 。所有神經語音都是多語系,而且可流利地使用其自己的語言和英文。 例如,如果英文的輸入文字是 I'm excited to try text to speech,而您設定了
es-ES-Ximena:DragonHDLatestNeural,則會使用西班牙文腔調以英文讀出該文字。 如果語音不說輸入文字的語言,語音服務就不會輸出合成的音訊。若要啟動默認說話者的語音合成, 請建置並執行新的控制台應用程式。
重要事項
確保您已設定
SPEECH_KEY和ENDPOINT環境變數。 如果您未設定這些變數,則範例會失敗,並顯示錯誤訊息。輸入您想要說的一些文字。 例如,輸入我很高興嘗試文字轉換語音。 選取 Enter 鍵以聆聽合成語音。
Enter some text that you want to speak > I'm excited to try text to speech
備註
更多語音合成選項
本快速入門會使用 SpeakTextAsync 作業來合成您輸入的簡短文字區塊。 您也可以使用檔案中的長格式文字,並更精細地控制語音樣式、韻律和其他設定。
- 如需從檔案進行語音合成以及進一步控制語音語調、韻律和其他設定的相關資訊,請參閱如何合成語音和使用語音合成標記語言改善合成 (SSML)。
- 如需合成長格式文字轉換語音的相關資訊,請參閱文字轉換語音的批次合成 API。
Foundry Tools 中的 Azure 語音的 OpenAI 文字轉換語音功能
也支援 OpenAI 文字轉換語音。 請參閱 Azure 語音中的 OpenAI 文字轉語音 與 多語言語音。 您可以使用支援的 OpenAI 語音名稱取代 en-US-Ava:DragonHDLatestNeural,例如 en-US-FableMultilingualNeural。
清除資源
您可以使用 Azure 入口網站或 Azure 命令列介面 (CLI) 來移除您所建立的語音資源。
參考文件 | 套件 (Go) | GitHub 上的其他範例
在 Foundry Tools 中使用 Azure Speech,你可以執行一個合成類人聲音來閱讀文字的應用程式。 您可以變更語音、輸入要說的文字,以及聆聽電腦喇叭上的輸出。
秘訣
您可以在 Speech Studio 語音資源庫中嘗試文字轉換語音,而不需要註冊或撰寫任何程式碼。
秘訣
試試 Azure Speech Toolkit ,可以輕鬆在 Visual Studio Code 上建立和執行範例。
先決條件
- Azure 訂用帳戶。 您可以免費建立一個訂用帳戶。
- 在 Azure 入口網站建立一個 Foundry 語音資源。
- 取得語音資源金鑰和區域。 部署語音資源之後,選取 [移至資源] 以檢視和管理索引鍵。
設定 Azure 環境
安裝適用於 Go 語言的語音 SDK。 如需安裝指示,請參閱安裝語音 SDK。
設定環境變數
你需要驗證你的應用程式才能使用 Foundry Tools。 本文說明如何使用環境變數來儲存您的認證。 然後,您可以從程式碼存取環境變數,以驗證您的應用程式。 針對實際執行環境,使用更安全的方法來儲存和存取您的認證。
重要事項
我們建議使用適用於 Azure 資源的受控識別搭配 Microsoft Entra ID 驗證,以避免使用在雲端執行的應用程式儲存認證。
請謹慎使用 API 金鑰。 請勿在程式碼中直接包含 API 金鑰,且切勿公開張貼金鑰。 如果使用 API 金鑰,請將這些金鑰安全地儲存在 Azure Key Vault 中、定期輪替金鑰,並使用角色型存取控制和網路存取限制來限制對 Azure Key Vault 的存取。 如需在應用程式中安全地使用 API 金鑰的詳細資訊,請參閱透過 Azure Key Vault 使用 API 金鑰。
如需 AI 服務安全性的詳細資訊,請參閱驗證對 Azure AI 服務的要求 (英文)。
若要設定語音資源索引鍵和區域的環境變數,請開啟主控台視窗,並遵循作業系統和開發環境的指示進行。
- 若要設定
SPEECH_KEY環境變數,請以您其中一個資源金鑰取代 your-key。 - 若要設定
SPEECH_REGION環境變數,請以您的其中一個資源區域取代 your-region。 - 若要設定
ENDPOINT環境變數,請取代your-endpoint為語音資源的實際端點。
setx SPEECH_KEY your-key
setx SPEECH_REGION your-region
setx ENDPOINT your-endpoint
附註
如果您只需要存取目前主控台的環境變數,您可以使用 set (而不是 setx) 來設定環境變數。
新增環境變數之後,您可能需要重新啟動任何需要讀取環境變數的程式,包括主控台視窗。 例如,如果正在使用 Visual Studio 作為編輯器,請您在執行範例前重新啟動 Visual Studio。
建立應用程式
遵循下列步驟來建立 Go 模組。
在資料夾開啟要新增專案的命令提示字元視窗。 建立名為 speech-synthesis.go 的新檔案。
將下列程式碼複製到 speech-synthesis.go:
package main import ( "bufio" "fmt" "os" "strings" "time" "github.com/Microsoft/cognitive-services-speech-sdk-go/audio" "github.com/Microsoft/cognitive-services-speech-sdk-go/common" "github.com/Microsoft/cognitive-services-speech-sdk-go/speech" ) func synthesizeStartedHandler(event speech.SpeechSynthesisEventArgs) { defer event.Close() fmt.Println("Synthesis started.") } func synthesizingHandler(event speech.SpeechSynthesisEventArgs) { defer event.Close() fmt.Printf("Synthesizing, audio chunk size %d.\n", len(event.Result.AudioData)) } func synthesizedHandler(event speech.SpeechSynthesisEventArgs) { defer event.Close() fmt.Printf("Synthesized, audio length %d.\n", len(event.Result.AudioData)) } func cancelledHandler(event speech.SpeechSynthesisEventArgs) { defer event.Close() fmt.Println("Received a cancellation.") } func main() { // This example requires environment variables named "SPEECH_KEY" and "SPEECH_REGION" speechKey := os.Getenv("SPEECH_KEY") speechRegion := os.Getenv("SPEECH_REGION") audioConfig, err := audio.NewAudioConfigFromDefaultSpeakerOutput() if err != nil { fmt.Println("Got an error: ", err) return } defer audioConfig.Close() speechConfig, err := speech.NewSpeechConfigFromSubscription(speechKey, speechRegion) if err != nil { fmt.Println("Got an error: ", err) return } defer speechConfig.Close() speechConfig.SetSpeechSynthesisVoiceName("en-US-Ava:DragonHDLatestNeural") speechSynthesizer, err := speech.NewSpeechSynthesizerFromConfig(speechConfig, audioConfig) if err != nil { fmt.Println("Got an error: ", err) return } defer speechSynthesizer.Close() speechSynthesizer.SynthesisStarted(synthesizeStartedHandler) speechSynthesizer.Synthesizing(synthesizingHandler) speechSynthesizer.SynthesisCompleted(synthesizedHandler) speechSynthesizer.SynthesisCanceled(cancelledHandler) for { fmt.Printf("Enter some text that you want to speak, or enter empty text to exit.\n> ") text, _ := bufio.NewReader(os.Stdin).ReadString('\n') text = strings.TrimSuffix(text, "\n") if len(text) == 0 { break } task := speechSynthesizer.SpeakTextAsync(text) var outcome speech.SpeechSynthesisOutcome select { case outcome = <-task: case <-time.After(60 * time.Second): fmt.Println("Timed out") return } defer outcome.Close() if outcome.Error != nil { fmt.Println("Got an error: ", outcome.Error) return } if outcome.Result.Reason == common.SynthesizingAudioCompleted { fmt.Printf("Speech synthesized to speaker for text [%s].\n", text) } else { cancellation, _ := speech.NewCancellationDetailsFromSpeechSynthesisResult(outcome.Result) fmt.Printf("CANCELED: Reason=%d.\n", cancellation.Reason) if cancellation.Reason == common.Error { fmt.Printf("CANCELED: ErrorCode=%d\nCANCELED: ErrorDetails=[%s]\nCANCELED: Did you set the speech resource key and region values?\n", cancellation.ErrorCode, cancellation.ErrorDetails) } } } }若要變更語音合成語言,請以另一個
en-US-Ava:DragonHDLatestNeural取代 。所有神經語音都是多語系,而且可流利地使用其自己的語言和英文。 例如,如果英文的輸入文字是 I'm excited to try text to speech,而您設定了
es-ES-Ximena:DragonHDLatestNeural,則會使用西班牙文腔調以英文讀出該文字。 如果語音不說輸入文字的語言,語音服務就不會輸出合成的音訊。執行下列命令來建立 go.mod 檔案,該檔案會連結至 Github 上託管的元件:
go mod init speech-synthesis go get github.com/Microsoft/cognitive-services-speech-sdk-go重要事項
確保您已設定
SPEECH_KEY和SPEECH_REGION環境變數。 如果您未設定這些變數,則範例會失敗,並顯示錯誤訊息。現在組建並執行程式碼:
go build go run speech-synthesis
備註
Foundry Tools 中的 Azure 語音的 OpenAI 文字轉換語音功能
也支援 OpenAI 文字轉換語音。 請參閱 Azure 語音中的 OpenAI 文字轉語音 與 多語言語音。 您可以使用支援的 OpenAI 語音名稱取代 en-US-Ava:DragonHDLatestNeural,例如 en-US-FableMultilingualNeural。
清除資源
您可以使用 Azure 入口網站或 Azure 命令列介面 (CLI) 來移除您所建立的語音資源。
在 Foundry Tools 中使用 Azure Speech,你可以執行一個合成類人聲音來閱讀文字的應用程式。 您可以變更語音、輸入要說的文字,以及聆聽電腦喇叭上的輸出。
秘訣
您可以在 Speech Studio 語音資源庫中嘗試文字轉換語音,而不需要註冊或撰寫任何程式碼。
秘訣
試試 Azure Speech Toolkit ,可以輕鬆在 Visual Studio Code 上建立和執行範例。
先決條件
- Azure 訂用帳戶。 您可以免費建立一個訂用帳戶。
- 在 Azure 入口網站中建立語音 AI 服務資源。
- 取得語音資源金鑰和端點。 部署語音資源之後,選取 [移至資源] 以檢視和管理索引鍵。
設定 Azure 環境
若要設定環境,請 安裝語音 SDK。 本快速入門中的範例適用於 JAVA 執行階段。
安裝 Apache Maven。 然後執行
mvn -v以確認安裝成功。在專案的根目錄中建立新 pom.xml 檔案,並將下列程式碼複製到其中:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.microsoft.cognitiveservices.speech.samples</groupId> <artifactId>quickstart-eclipse</artifactId> <version>1.0.0-SNAPSHOT</version> <build> <sourceDirectory>src</sourceDirectory> <plugins> <plugin> <artifactId>maven-compiler-plugin</artifactId> <version>3.7.0</version> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin> </plugins> </build> <dependencies> <dependency> <groupId>com.microsoft.cognitiveservices.speech</groupId> <artifactId>client-sdk</artifactId> <version>1.43.0</version> </dependency> </dependencies> </project>安裝語音 SDK 和相依性。
mvn clean dependency:copy-dependencies
設定環境變數
你需要驗證你的應用程式才能使用 Foundry Tools。 本文說明如何使用環境變數來儲存您的認證。 然後,您可以從程式碼存取環境變數,以驗證您的應用程式。 針對實際執行環境,使用更安全的方法來儲存和存取您的認證。
重要事項
我們建議使用適用於 Azure 資源的受控識別搭配 Microsoft Entra ID 驗證,以避免使用在雲端執行的應用程式儲存認證。
請謹慎使用 API 金鑰。 請勿在程式碼中直接包含 API 金鑰,且切勿公開張貼金鑰。 如果使用 API 金鑰,請將這些金鑰安全地儲存在 Azure Key Vault 中、定期輪替金鑰,並使用角色型存取控制和網路存取限制來限制對 Azure Key Vault 的存取。 如需在應用程式中安全地使用 API 金鑰的詳細資訊,請參閱透過 Azure Key Vault 使用 API 金鑰。
如需 AI 服務安全性的詳細資訊,請參閱驗證對 Azure AI 服務的要求 (英文)。
若要設定語音資源密鑰和端點的環境變數,請開啟主控台視窗,並遵循作系統和開發環境的指示。
- 若要設定
SPEECH_KEY環境變數,請以您其中一個資源金鑰取代 your-key。 - 若要設定
ENDPOINT環境變數,請將 您的端點 取代為您資源的其中一個端點。
setx SPEECH_KEY your-key
setx ENDPOINT your-endpoint
附註
如果您只需要存取目前主控台的環境變數,您可以使用 set (而不是 setx) 來設定環境變數。
新增環境變數之後,您可能需要重新啟動任何需要讀取環境變數的程式,包括主控台視窗。 例如,如果正在使用 Visual Studio 作為編輯器,請您在執行範例前重新啟動 Visual Studio。
建立應用程式
遵循下列步驟來建立新的主控台應用程式,以進行語音辨識。
在相同的專案根目錄中建立名為 SpeechSynthesis.java 的檔案。
將下列程式碼複製到 SpeechSynthesis.java:
import com.microsoft.cognitiveservices.speech.*; import com.microsoft.cognitiveservices.speech.audio.*; import java.util.Scanner; import java.util.concurrent.ExecutionException; public class SpeechSynthesis { // This example requires environment variables named "SPEECH_KEY" and "ENDPOINT" private static String speechKey = System.getenv("SPEECH_KEY"); private static String endpoint = System.getenv("ENDPOINT"); public static void main(String[] args) throws InterruptedException, ExecutionException { SpeechConfig speechConfig = SpeechConfig.fromEndpoint(speechKey, endpoint); speechConfig.setSpeechSynthesisVoiceName("en-US-Ava:DragonHDLatestNeural"); SpeechSynthesizer speechSynthesizer = new SpeechSynthesizer(speechConfig); // Get text from the console and synthesize to the default speaker. System.out.println("Enter some text that you want to speak >"); String text = new Scanner(System.in).nextLine(); if (text.isEmpty()) { return; } SpeechSynthesisResult speechSynthesisResult = speechSynthesizer.SpeakTextAsync(text).get(); if (speechSynthesisResult.getReason() == ResultReason.SynthesizingAudioCompleted) { System.out.println("Speech synthesized to speaker for text [" + text + "]"); } else if (speechSynthesisResult.getReason() == ResultReason.Canceled) { SpeechSynthesisCancellationDetails cancellation = SpeechSynthesisCancellationDetails.fromResult(speechSynthesisResult); System.out.println("CANCELED: Reason=" + cancellation.getReason()); if (cancellation.getReason() == CancellationReason.Error) { System.out.println("CANCELED: ErrorCode=" + cancellation.getErrorCode()); System.out.println("CANCELED: ErrorDetails=" + cancellation.getErrorDetails()); System.out.println("CANCELED: Did you set the speech resource key and endpoint values?"); } } System.exit(0); } }若要變更語音合成語言,請以另一個
en-US-Ava:DragonHDLatestNeural取代 。所有神經語音都是多語系,而且可流利地使用其自己的語言和英文。 例如,如果英文的輸入文字是 I'm excited to try text to speech,而您設定了
es-ES-Ximena:DragonHDLatestNeural,則會使用西班牙文腔調以英文讀出該文字。 如果語音不說輸入文字的語言,語音服務就不會輸出合成的音訊。執行主控台應用程式,將語音合成輸出到預設喇叭。
javac SpeechSynthesis.java -cp ".;target\dependency\*" java -cp ".;target\dependency\*" SpeechSynthesis重要事項
確保您已設定
SPEECH_KEY和ENDPOINT環境變數。 如果您未設定這些變數,則範例會失敗,並顯示錯誤訊息。輸入您想要說的一些文字。 例如,輸入我很高興嘗試文字轉換語音。 選取 Enter 鍵以聆聽合成語音。
Enter some text that you want to speak > I'm excited to try text to speech
備註
更多語音合成選項
本快速入門會使用 SpeakTextAsync 作業來合成您輸入的簡短文字區塊。 您也可以使用檔案中的長格式文字,並更精細地控制語音樣式、韻律和其他設定。
- 如需從檔案進行語音合成以及進一步控制語音語調、韻律和其他設定的相關資訊,請參閱如何合成語音和使用語音合成標記語言改善合成 (SSML)。
- 如需合成長格式文字轉換語音的相關資訊,請參閱文字轉換語音的批次合成 API。
Foundry Tools 中的 Azure 語音的 OpenAI 文字轉換語音功能
也支援 OpenAI 文字轉換語音。 請參閱 Azure 語音中的 OpenAI 文字轉語音 與 多語言語音。 您可以使用支援的 OpenAI 語音名稱取代 en-US-Ava:DragonHDLatestNeural,例如 en-US-FableMultilingualNeural。
清除資源
您可以使用 Azure 入口網站或 Azure 命令列介面 (CLI) 來移除您所建立的語音資源。
參考文件 | 套件 (npm) | GitHub 上的其他範例 | 程式庫原始程式碼
在 Foundry Tools 中使用 Azure Speech,你可以執行一個合成類人聲音來閱讀文字的應用程式。 您可以變更語音、輸入要說的文字,以及聆聽電腦喇叭上的輸出。
秘訣
您可以在 Speech Studio 語音資源庫中嘗試文字轉換語音,而不需要註冊或撰寫任何程式碼。
秘訣
試試 Azure Speech Toolkit ,可以輕鬆在 Visual Studio Code 上建立和執行範例。
先決條件
- Azure 訂用帳戶。 您可以免費建立一個訂用帳戶。
- 在 Azure 入口網站建立一個 Foundry 語音資源。
- 取得語音資源金鑰和區域。 部署語音資源之後,選取 [移至資源] 以檢視和管理索引鍵。
設定
建立新的資料夾
synthesis-quickstart,並使用下列命令移至快速入門資料夾:mkdir synthesis-quickstart && cd synthesis-quickstart使用下列命令建立
package.json:npm init -y使用下列項目安裝適用於 JavaScript 的語音 SDK:
npm install microsoft-cognitiveservices-speech-sdk
擷取資源資訊
你需要驗證你的應用程式才能使用 Foundry Tools。 本文說明如何使用環境變數來儲存您的認證。 然後,您可以從程式碼存取環境變數,以驗證您的應用程式。 針對實際執行環境,使用更安全的方法來儲存和存取您的認證。
重要事項
我們建議使用適用於 Azure 資源的受控識別搭配 Microsoft Entra ID 驗證,以避免使用在雲端執行的應用程式儲存認證。
請謹慎使用 API 金鑰。 請勿在程式碼中直接包含 API 金鑰,且切勿公開張貼金鑰。 如果使用 API 金鑰,請將這些金鑰安全地儲存在 Azure Key Vault 中、定期輪替金鑰,並使用角色型存取控制和網路存取限制來限制對 Azure Key Vault 的存取。 如需在應用程式中安全地使用 API 金鑰的詳細資訊,請參閱透過 Azure Key Vault 使用 API 金鑰。
如需 AI 服務安全性的詳細資訊,請參閱驗證對 Azure AI 服務的要求 (英文)。
若要設定語音資源索引鍵和區域的環境變數,請開啟主控台視窗,並遵循作業系統和開發環境的指示進行。
- 若要設定
SPEECH_KEY環境變數,請以您其中一個資源金鑰取代 your-key。 - 若要設定
SPEECH_REGION環境變數,請以您的其中一個資源區域取代 your-region。 - 若要設定
ENDPOINT環境變數,請取代your-endpoint為語音資源的實際端點。
setx SPEECH_KEY your-key
setx SPEECH_REGION your-region
setx ENDPOINT your-endpoint
附註
如果您只需要存取目前主控台的環境變數,您可以使用 set (而不是 setx) 來設定環境變數。
新增環境變數之後,您可能需要重新啟動任何需要讀取環境變數的程式,包括主控台視窗。 例如,如果正在使用 Visual Studio 作為編輯器,請您在執行範例前重新啟動 Visual Studio。
將語音合成至檔案
若要從檔案翻譯語音:
使用下列內容建立名為 synthesis.js 的新檔案:
import { createInterface } from "readline"; import { SpeechConfig, AudioConfig, SpeechSynthesizer, ResultReason } from "microsoft-cognitiveservices-speech-sdk"; function synthesizeSpeech() { const audioFile = "YourAudioFile.wav"; // This example requires environment variables named "ENDPOINT" and "SPEECH_KEY" const speechConfig = SpeechConfig.fromEndpoint(new URL(ENDPOINT), process.env.SPEECH_KEY); const audioConfig = AudioConfig.fromAudioFileOutput(audioFile); // The language of the voice that speaks. speechConfig.speechSynthesisVoiceName = "en-US-Ava:DragonHDLatestNeural"; // Create the speech synthesizer. const synthesizer = new SpeechSynthesizer(speechConfig, audioConfig); const rl = createInterface({ input: process.stdin, output: process.stdout }); rl.question("Enter some text that you want to speak >\n> ", function (text) { rl.close(); // Start the synthesizer and wait for a result. synthesizer.speakTextAsync(text, function (result) { if (result.reason === ResultReason.SynthesizingAudioCompleted) { console.log("synthesis finished."); } else { console.error("Speech synthesis canceled, " + result.errorDetails + "\nDid you set the speech resource key and region values?"); } synthesizer.close(); }, function (err) { console.trace("err - " + err); synthesizer.close(); }); console.log("Now synthesizing to: " + audioFile); }); } synthesizeSpeech();在 synthesis.js中,您可以選擇性地 將YourAudioFile.wav 重新命名為另一個輸出檔名。
若要變更語音合成語言,請以另一個
en-US-Ava:DragonHDLatestNeural取代 。所有神經語音都是多語系,而且可流利地使用其自己的語言和英文。 例如,如果英文的輸入文字是 I'm excited to try text to speech,而您設定了
es-ES-Ximena:DragonHDLatestNeural,則會使用西班牙文腔調以英文讀出該文字。 如果語音不說輸入文字的語言,語音服務就不會輸出合成的音訊。執行主控台應用程式,以開始對檔案進行語音合成:
node synthesis.js
輸出
您應該會在控制台中看到下列輸出。 依照提示輸入您要合成的文字:
Enter some text that you want to speak >
> I'm excited to try text to speech
Now synthesizing to: YourAudioFile.wav
synthesis finished.
備註
更多語音合成選項
本快速入門會使用 SpeakTextAsync 作業來合成您輸入的簡短文字區塊。 您也可以使用檔案中的長格式文字,並更精細地控制語音樣式、韻律和其他設定。
- 如需從檔案進行語音合成以及進一步控制語音語調、韻律和其他設定的相關資訊,請參閱如何合成語音和使用語音合成標記語言改善合成 (SSML)。
- 如需合成長格式文字轉換語音的相關資訊,請參閱文字轉換語音的批次合成 API。
Foundry Tools 中的 Azure 語音的 OpenAI 文字轉換語音功能
也支援 OpenAI 文字轉換語音。 請參閱 Azure 語音中的 OpenAI 文字轉語音 與 多語言語音。 您可以使用支援的 OpenAI 語音名稱取代 en-US-Ava:DragonHDLatestNeural,例如 en-US-FableMultilingualNeural。
清除資源
您可以使用 Azure 入口網站或 Azure 命令列介面 (CLI) 來移除您所建立的語音資源。
參考文件 | 套件 (下載) | GitHub 上的其他範例
在 Foundry Tools 中使用 Azure Speech,你可以執行一個合成類人聲音來閱讀文字的應用程式。 您可以變更語音、輸入要說的文字,以及聆聽電腦喇叭上的輸出。
秘訣
您可以在 Speech Studio 語音資源庫中嘗試文字轉換語音,而不需要註冊或撰寫任何程式碼。
秘訣
試試 Azure Speech Toolkit ,可以輕鬆在 Visual Studio Code 上建立和執行範例。
先決條件
- Azure 訂用帳戶。 您可以免費建立一個訂用帳戶。
- 在 Azure 入口網站建立一個 Foundry 語音資源。
- 取得語音資源金鑰和區域。 部署語音資源之後,選取 [移至資源] 以檢視和管理索引鍵。
設定 Azure 環境
適用於 Swift 的語音 SDK 會以架構套件組合的形式散發。 此架構同時支援 iOS 和 macOS 上的 Objective-C 和 Swift。
語音 SDK 可用於 Xcode 專案中做為 CocoaPod,或直接下載並手動連結。 本指南使用 CocoaPod。 依照安裝指示中的說明安裝 CocoaPod 相依性管理員。
設定環境變數
你需要驗證你的應用程式才能使用 Foundry Tools。 本文說明如何使用環境變數來儲存您的認證。 然後,您可以從程式碼存取環境變數,以驗證您的應用程式。 針對實際執行環境,使用更安全的方法來儲存和存取您的認證。
重要事項
我們建議使用適用於 Azure 資源的受控識別搭配 Microsoft Entra ID 驗證,以避免使用在雲端執行的應用程式儲存認證。
請謹慎使用 API 金鑰。 請勿在程式碼中直接包含 API 金鑰,且切勿公開張貼金鑰。 如果使用 API 金鑰,請將這些金鑰安全地儲存在 Azure Key Vault 中、定期輪替金鑰,並使用角色型存取控制和網路存取限制來限制對 Azure Key Vault 的存取。 如需在應用程式中安全地使用 API 金鑰的詳細資訊,請參閱透過 Azure Key Vault 使用 API 金鑰。
如需 AI 服務安全性的詳細資訊,請參閱驗證對 Azure AI 服務的要求 (英文)。
若要設定語音資源索引鍵和區域的環境變數,請開啟主控台視窗,並遵循作業系統和開發環境的指示進行。
- 若要設定
SPEECH_KEY環境變數,請以您其中一個資源金鑰取代 your-key。 - 若要設定
SPEECH_REGION環境變數,請以您的其中一個資源區域取代 your-region。 - 若要設定
ENDPOINT環境變數,請取代your-endpoint為語音資源的實際端點。
setx SPEECH_KEY your-key
setx SPEECH_REGION your-region
setx ENDPOINT your-endpoint
附註
如果您只需要存取目前主控台的環境變數,您可以使用 set (而不是 setx) 來設定環境變數。
新增環境變數之後,您可能需要重新啟動任何需要讀取環境變數的程式,包括主控台視窗。 例如,如果正在使用 Visual Studio 作為編輯器,請您在執行範例前重新啟動 Visual Studio。
建立應用程式
遵循下列步驟在 macOS 應用程式中合成語音。
複製 Azure-Samples/cognitive-services-speech-sdk 存放庫,以取得使用語音 SDK 在 macOS 上的 Swift 中合成音訊範例專案。 存放庫也有 iOS 範例。
瀏覽至在終端中所下載範例應用程式 (
helloworld) 的目錄。執行命令
pod install。 此命令會產生一個helloworld.xcworkspaceXcode 工作區,其中包含範例應用程式和作為相依性的語音 SDK。在 XCode 中開啟
helloworld.xcworkspace工作區。開啟名為 AppDelegate.swift 的檔案,並找出
applicationDidFinishLaunching和synthesize方法,如下所示。import Cocoa @NSApplicationMain class AppDelegate: NSObject, NSApplicationDelegate, NSTextFieldDelegate { var textField: NSTextField! var synthesisButton: NSButton! var inputText: String! var sub: String! var region: String! @IBOutlet weak var window: NSWindow! func applicationDidFinishLaunching(_ aNotification: Notification) { print("loading") // load subscription information sub = ProcessInfo.processInfo.environment["SPEECH_KEY"] region = ProcessInfo.processInfo.environment["SPEECH_REGION"] inputText = "" textField = NSTextField(frame: NSRect(x: 100, y: 200, width: 200, height: 50)) textField.textColor = NSColor.black textField.lineBreakMode = .byWordWrapping textField.placeholderString = "Type something to synthesize." textField.delegate = self self.window.contentView?.addSubview(textField) synthesisButton = NSButton(frame: NSRect(x: 100, y: 100, width: 200, height: 30)) synthesisButton.title = "Synthesize" synthesisButton.target = self synthesisButton.action = #selector(synthesisButtonClicked) self.window.contentView?.addSubview(synthesisButton) } @objc func synthesisButtonClicked() { DispatchQueue.global(qos: .userInitiated).async { self.synthesize() } } func synthesize() { var speechConfig: SPXSpeechConfiguration? do { try speechConfig = SPXSpeechConfiguration(subscription: sub, region: region) } catch { print("error \(error) happened") speechConfig = nil } speechConfig?.speechSynthesisVoiceName = "en-US-Ava:DragonHDLatestNeural"; let synthesizer = try! SPXSpeechSynthesizer(speechConfig!) let result = try! synthesizer.speakText(inputText) if result.reason == SPXResultReason.canceled { let cancellationDetails = try! SPXSpeechSynthesisCancellationDetails(fromCanceledSynthesisResult: result) print("cancelled, error code: \(cancellationDetails.errorCode) detail: \(cancellationDetails.errorDetails!) ") print("Did you set the speech resource key and region values?"); return } } func controlTextDidChange(_ obj: Notification) { let textFiled = obj.object as! NSTextField inputText = textFiled.stringValue } }在 AppDelegate.m 中,使用您先前所設定的環境變數 (針對語音資源金鑰和區域)。
sub = ProcessInfo.processInfo.environment["SPEECH_KEY"] region = ProcessInfo.processInfo.environment["SPEECH_REGION"]在 AppDelegate.m 中,選擇性地包含語音合成語音名稱,如下所示:
speechConfig?.speechSynthesisVoiceName = "en-US-Ava:DragonHDLatestNeural";若要變更語音合成語言,請以另一個
en-US-Ava:DragonHDLatestNeural取代 。所有神經語音都是多語系,而且可流利地使用其自己的語言和英文。 例如,如果英文的輸入文字是 I'm excited to try text to speech,而您設定了
es-ES-Ximena:DragonHDLatestNeural,則會使用西班牙文腔調以英文讀出該文字。 如果語音不說輸入文字的語言,語音服務就不會輸出合成的音訊。若要顯示偵錯輸出 選取 [檢視]>[偵錯區域]> [啟動主控台]。
若要建置並執行範例程式碼,請從功能表中選取 [產品]> [執行],或選取 [播放] 按鈕。
重要事項
確保您已設定 SPEECH_KEY 和 SPEECH_REGION環境變數。 如果您未設定這些變數,則範例會失敗,並顯示錯誤訊息。
輸入一些文字並選取應用程式中的按鈕後,您應該會聽到合成音訊的播放。
備註
更多語音合成選項
本快速入門會使用 SpeakText 作業來合成您輸入的簡短文字區塊。 您也可以使用檔案中的長格式文字,並更精細地控制語音樣式、韻律和其他設定。
- 如需從檔案進行語音合成以及進一步控制語音語調、韻律和其他設定的相關資訊,請參閱如何合成語音和使用語音合成標記語言改善合成 (SSML)。
- 如需合成長格式文字轉換語音的相關資訊,請參閱文字轉換語音的批次合成 API。
Foundry Tools 中的 Azure 語音的 OpenAI 文字轉換語音功能
也支援 OpenAI 文字轉換語音。 請參閱 Azure 語音中的 OpenAI 文字轉語音 與 多語言語音。 您可以使用支援的 OpenAI 語音名稱取代 en-US-Ava:DragonHDLatestNeural,例如 en-US-FableMultilingualNeural。
清除資源
您可以使用 Azure 入口網站或 Azure 命令列介面 (CLI) 來移除您所建立的語音資源。
參考文件 | 套件 (PyPi) | GitHub 上的其他範例
在 Foundry Tools 中使用 Azure Speech,你可以執行一個合成類人聲音來閱讀文字的應用程式。 您可以變更語音、輸入要說的文字,以及聆聽電腦喇叭上的輸出。
秘訣
您可以在 Speech Studio 語音資源庫中嘗試文字轉換語音,而不需要註冊或撰寫任何程式碼。
秘訣
試試 Azure Speech Toolkit ,可以輕鬆在 Visual Studio Code 上建立和執行範例。
先決條件
- Azure 訂用帳戶。 您可以免費建立一個訂用帳戶。
- 在 Azure 入口網站中建立語音 AI 服務資源。
- 取得語音資源金鑰和端點。 部署語音資源之後,選取 [移至資源] 以檢視和管理索引鍵。
設定 Azure 環境
適用於 Python 的語音 SDK 會以 Python 套件索引 (PyPI) 模組的形式提供。 適用於 Python 的語音 SDK 與 Windows、Linux 和 macOS 相容。
- 在 Windows 上,請為平台安裝適用於 Visual Studio 2015、2017、2019 和 2022 的 Microsoft Visual C++ 可轉散發套件。 安裝此套件時可能需要重新啟動。
- 在 Linux 上,您必須使用 x64 目標架構。
安裝 Python 從 3.7 或更新的版本。 如有任何需求,請參閱安裝語音 SDK。
設定環境變數
你需要驗證你的應用程式才能使用 Foundry Tools。 本文說明如何使用環境變數來儲存您的認證。 然後,您可以從程式碼存取環境變數,以驗證您的應用程式。 針對實際執行環境,使用更安全的方法來儲存和存取您的認證。
重要事項
我們建議使用適用於 Azure 資源的受控識別搭配 Microsoft Entra ID 驗證,以避免使用在雲端執行的應用程式儲存認證。
請謹慎使用 API 金鑰。 請勿在程式碼中直接包含 API 金鑰,且切勿公開張貼金鑰。 如果使用 API 金鑰,請將這些金鑰安全地儲存在 Azure Key Vault 中、定期輪替金鑰,並使用角色型存取控制和網路存取限制來限制對 Azure Key Vault 的存取。 如需在應用程式中安全地使用 API 金鑰的詳細資訊,請參閱透過 Azure Key Vault 使用 API 金鑰。
如需 AI 服務安全性的詳細資訊,請參閱驗證對 Azure AI 服務的要求 (英文)。
若要設定語音資源密鑰和端點的環境變數,請開啟主控台視窗,並遵循作系統和開發環境的指示。
- 若要設定
SPEECH_KEY環境變數,請以您其中一個資源金鑰取代 your-key。 - 若要設定
ENDPOINT環境變數,請將 您的端點 取代為您資源的其中一個端點。
setx SPEECH_KEY your-key
setx ENDPOINT your-endpoint
附註
如果您只需要存取目前主控台的環境變數,您可以使用 set (而不是 setx) 來設定環境變數。
新增環境變數之後,您可能需要重新啟動任何需要讀取環境變數的程式,包括主控台視窗。 例如,如果正在使用 Visual Studio 作為編輯器,請您在執行範例前重新啟動 Visual Studio。
建立應用程式
請遵循下列步驟以建立主控台應用程式。
在資料夾開啟要新增專案的命令提示字元視窗。 建立名為 speech_synthesis.py 的檔案。
執行此命令以安裝語音 SDK:
pip install azure-cognitiveservices-speech將下列程式碼複製到 speech_synthesis.py:
import os import azure.cognitiveservices.speech as speechsdk # This example requires environment variables named "SPEECH_KEY" and "ENDPOINT" # Replace with your own subscription key and endpoint, the endpoint is like : "https://YourServiceRegion.api.cognitive.microsoft.com" speech_config = speechsdk.SpeechConfig(subscription=os.environ.get('SPEECH_KEY'), endpoint=os.environ.get('ENDPOINT')) audio_config = speechsdk.audio.AudioOutputConfig(use_default_speaker=True) # The neural multilingual voice can speak different languages based on the input text. speech_config.speech_synthesis_voice_name='en-US-Ava:DragonHDLatestNeural' speech_synthesizer = speechsdk.SpeechSynthesizer(speech_config=speech_config, audio_config=audio_config) # Get text from the console and synthesize to the default speaker. print("Enter some text that you want to speak >") text = input() speech_synthesis_result = speech_synthesizer.speak_text_async(text).get() if speech_synthesis_result.reason == speechsdk.ResultReason.SynthesizingAudioCompleted: print("Speech synthesized for text [{}]".format(text)) elif speech_synthesis_result.reason == speechsdk.ResultReason.Canceled: cancellation_details = speech_synthesis_result.cancellation_details print("Speech synthesis canceled: {}".format(cancellation_details.reason)) if cancellation_details.reason == speechsdk.CancellationReason.Error: if cancellation_details.error_details: print("Error details: {}".format(cancellation_details.error_details)) print("Did you set the speech resource key and endpoint values?")若要變更語音合成語言,請以另一個
en-US-Ava:DragonHDLatestNeural取代 。所有神經語音都是多語系,而且可流利地使用其自己的語言和英文。 例如,如果英文的輸入文字是 I'm excited to try text to speech,而您設定了
es-ES-Ximena:DragonHDLatestNeural,則會使用西班牙文腔調以英文讀出該文字。 如果語音不說輸入文字的語言,語音服務就不會輸出合成的音訊。執行新的主控台應用程式,以開始對預設喇叭進行語音合成。
python speech_synthesis.py重要事項
確保您已設定
SPEECH_KEY和ENDPOINT環境變數。 如果您未設定這些變數,則範例會失敗,並顯示錯誤訊息。輸入您想要說的一些文字。 例如,輸入我很高興嘗試文字轉換語音。 選取 Enter 鍵以聆聽合成語音。
Enter some text that you want to speak > I'm excited to try text to speech
備註
更多語音合成選項
本快速入門會使用 speak_text_async 作業來合成您輸入的簡短文字區塊。 您也可以使用檔案中的長格式文字,並更精細地控制語音樣式、韻律和其他設定。
- 如需從檔案進行語音合成以及進一步控制語音語調、韻律和其他設定的相關資訊,請參閱如何合成語音和使用語音合成標記語言改善合成 (SSML)。
- 如需合成長格式文字轉換語音的相關資訊,請參閱文字轉換語音的批次合成 API。
Foundry Tools 中的 Azure 語音的 OpenAI 文字轉換語音功能
也支援 OpenAI 文字轉換語音。 請參閱 Azure 語音中的 OpenAI 文字轉語音 與 多語言語音。 您可以使用支援的 OpenAI 語音名稱取代 en-US-Ava:DragonHDLatestNeural,例如 en-US-FableMultilingualNeural。
清除資源
您可以使用 Azure 入口網站或 Azure 命令列介面 (CLI) 來移除您所建立的語音資源。
語音轉換文字 REST API 參考 | 適用於簡短音訊的語音轉換文字 REST API 參考 | GitHub 上的其他範例
在 Foundry Tools 中使用 Azure Speech,你可以執行一個合成類人聲音來閱讀文字的應用程式。 您可以變更語音、輸入要說的文字,以及聆聽電腦喇叭上的輸出。
秘訣
您可以在 Speech Studio 語音資源庫中嘗試文字轉換語音,而不需要註冊或撰寫任何程式碼。
秘訣
試試 Azure Speech Toolkit ,可以輕鬆在 Visual Studio Code 上建立和執行範例。
先決條件
- Azure 訂用帳戶。 您可以免費建立一個訂用帳戶。
- 在 Azure 入口網站建立一個 Foundry 語音資源。
- 取得語音資源金鑰和區域。 部署語音資源之後,選取 [移至資源] 以檢視和管理索引鍵。
設定環境變數
你需要驗證你的應用程式才能使用 Foundry Tools。 本文說明如何使用環境變數來儲存您的認證。 然後,您可以從程式碼存取環境變數,以驗證您的應用程式。 針對實際執行環境,使用更安全的方法來儲存和存取您的認證。
重要事項
我們建議使用適用於 Azure 資源的受控識別搭配 Microsoft Entra ID 驗證,以避免使用在雲端執行的應用程式儲存認證。
請謹慎使用 API 金鑰。 請勿在程式碼中直接包含 API 金鑰,且切勿公開張貼金鑰。 如果使用 API 金鑰,請將這些金鑰安全地儲存在 Azure Key Vault 中、定期輪替金鑰,並使用角色型存取控制和網路存取限制來限制對 Azure Key Vault 的存取。 如需在應用程式中安全地使用 API 金鑰的詳細資訊,請參閱透過 Azure Key Vault 使用 API 金鑰。
如需 AI 服務安全性的詳細資訊,請參閱驗證對 Azure AI 服務的要求 (英文)。
若要設定語音資源索引鍵和區域的環境變數,請開啟主控台視窗,並遵循作業系統和開發環境的指示進行。
- 若要設定
SPEECH_KEY環境變數,請以您其中一個資源金鑰取代 your-key。 - 若要設定
SPEECH_REGION環境變數,請以您的其中一個資源區域取代 your-region。 - 若要設定
ENDPOINT環境變數,請取代your-endpoint為語音資源的實際端點。
setx SPEECH_KEY your-key
setx SPEECH_REGION your-region
setx ENDPOINT your-endpoint
附註
如果您只需要存取目前主控台的環境變數,您可以使用 set (而不是 setx) 來設定環境變數。
新增環境變數之後,您可能需要重新啟動任何需要讀取環境變數的程式,包括主控台視窗。 例如,如果正在使用 Visual Studio 作為編輯器,請您在執行範例前重新啟動 Visual Studio。
將語音合成至檔案
在命令提示字元中,執行下列 cURL 命令。 您可以選擇性地將 output.mp3 重新命名為另一個輸出檔案名稱。
curl --location --request POST "https://%SPEECH_REGION%.tts.speech.microsoft.com/cognitiveservices/v1" ^
--header "Ocp-Apim-Subscription-Key: %SPEECH_KEY%" ^
--header "Content-Type: application/ssml+xml" ^
--header "X-Microsoft-OutputFormat: audio-16khz-128kbitrate-mono-mp3" ^
--header "User-Agent: curl" ^
--data-raw "<speak version='1.0' xml:lang='en-US'><voice xml:lang='en-US' xml:gender='Female' name='en-US-Ava:DragonHDLatestNeural'>my voice is my passport verify me</voice></speak>" --output output.mp3
重要事項
確保您已設定 SPEECH_KEY 和 SPEECH_REGION環境變數。 如果您未設定這些變數,則範例會失敗,並顯示錯誤訊息。
提供的文字應該輸出至名為 output.mp3 的音訊檔案。
若要變更語音合成語言,請以另一個en-US-Ava:DragonHDLatestNeural取代 。
所有神經語音都是多語系,而且可流利地使用其自己的語言和英文。 例如,如果英文的輸入文字是 I'm excited to try text to speech,而您設定了 es-ES-Ximena:DragonHDLatestNeural,則會使用西班牙文腔調以英文讀出該文字。 如果語音不說輸入文字的語言,語音服務就不會輸出合成的音訊。
如需詳細資訊,請參閱文字轉換語音 REST API。
備註
Foundry Tools 中的 Azure 語音的 OpenAI 文字轉換語音功能
也支援 OpenAI 文字轉換語音。 請參閱 Azure 語音中的 OpenAI 文字轉語音 與 多語言語音。 您可以使用支援的 OpenAI 語音名稱取代 en-US-Ava:DragonHDLatestNeural,例如 en-US-FableMultilingualNeural。
清除資源
您可以使用 Azure 入口網站或 Azure 命令列介面 (CLI) 來移除您所建立的語音資源。
參考文件 | 套件 (npm) | GitHub 上的其他範例 | 程式庫原始程式碼
在 Foundry Tools 中使用 Azure Speech,你可以執行一個合成類人聲音來閱讀文字的應用程式。 您可以變更語音、輸入要說的文字,以及聆聽電腦喇叭上的輸出。
秘訣
您可以在 Speech Studio 語音資源庫中嘗試文字轉換語音,而不需要註冊或撰寫任何程式碼。
秘訣
試試 Azure Speech Toolkit ,可以輕鬆在 Visual Studio Code 上建立和執行範例。
先決條件
- Azure 訂用帳戶。 您可以免費建立一個訂用帳戶。
- 在 Azure 入口網站建立一個 Foundry 語音資源。
- 取得語音資源金鑰和區域。 部署語音資源之後,選取 [移至資源] 以檢視和管理索引鍵。
設定
建立新的資料夾
synthesis-quickstart,並使用下列命令移至快速入門資料夾:mkdir synthesis-quickstart && cd synthesis-quickstart使用下列命令建立
package.json:npm init -y請使用下列命令將
package.json更新為 ECMAScript。npm pkg set type=module使用下列項目安裝適用於 JavaScript 的語音 SDK:
npm install microsoft-cognitiveservices-speech-sdk您必須安裝 Node.js 類型定義,以避免 TypeScript 錯誤。 執行下列命令:
npm install --save-dev @types/node
擷取資源資訊
你需要驗證你的應用程式才能使用 Foundry Tools。 本文說明如何使用環境變數來儲存您的認證。 然後,您可以從程式碼存取環境變數,以驗證您的應用程式。 針對實際執行環境,使用更安全的方法來儲存和存取您的認證。
重要事項
我們建議使用適用於 Azure 資源的受控識別搭配 Microsoft Entra ID 驗證,以避免使用在雲端執行的應用程式儲存認證。
請謹慎使用 API 金鑰。 請勿在程式碼中直接包含 API 金鑰,且切勿公開張貼金鑰。 如果使用 API 金鑰,請將這些金鑰安全地儲存在 Azure Key Vault 中、定期輪替金鑰,並使用角色型存取控制和網路存取限制來限制對 Azure Key Vault 的存取。 如需在應用程式中安全地使用 API 金鑰的詳細資訊,請參閱透過 Azure Key Vault 使用 API 金鑰。
如需 AI 服務安全性的詳細資訊,請參閱驗證對 Azure AI 服務的要求 (英文)。
若要設定語音資源索引鍵和區域的環境變數,請開啟主控台視窗,並遵循作業系統和開發環境的指示進行。
- 若要設定
SPEECH_KEY環境變數,請以您其中一個資源金鑰取代 your-key。 - 若要設定
SPEECH_REGION環境變數,請以您的其中一個資源區域取代 your-region。 - 若要設定
ENDPOINT環境變數,請取代your-endpoint為語音資源的實際端點。
setx SPEECH_KEY your-key
setx SPEECH_REGION your-region
setx ENDPOINT your-endpoint
附註
如果您只需要存取目前主控台的環境變數,您可以使用 set (而不是 setx) 來設定環境變數。
新增環境變數之後,您可能需要重新啟動任何需要讀取環境變數的程式,包括主控台視窗。 例如,如果正在使用 Visual Studio 作為編輯器,請您在執行範例前重新啟動 Visual Studio。
將語音合成至檔案
若要從檔案翻譯語音:
使用下列內容建立名為 synthesis.ts 的新檔案:
import { createInterface } from "readline"; import { SpeechConfig, AudioConfig, SpeechSynthesizer, ResultReason, SpeechSynthesisResult } from "microsoft-cognitiveservices-speech-sdk"; function synthesizeSpeech(): void { const audioFile = "YourAudioFile.wav"; // This example requires environment variables named "ENDPOINT" and "SPEECH_KEY" const speechConfig: SpeechConfig = SpeechConfig.fromEndpoint(new URL(process.env.ENDPOINT!), process.env.SPEECH_KEY!); const audioConfig: AudioConfig = AudioConfig.fromAudioFileOutput(audioFile); // The language of the voice that speaks. speechConfig.speechSynthesisVoiceName = "en-US-Ava:DragonHDLatestNeural"; // Create the speech synthesizer. const synthesizer: SpeechSynthesizer = new SpeechSynthesizer(speechConfig, audioConfig); const rl = createInterface({ input: process.stdin, output: process.stdout }); rl.question("Enter some text that you want to speak >\n> ", function (text: string) { rl.close(); // Start the synthesizer and wait for a result. synthesizer.speakTextAsync(text, function (result: SpeechSynthesisResult) { if (result.reason === ResultReason.SynthesizingAudioCompleted) { console.log("synthesis finished."); } else { console.error("Speech synthesis canceled, " + result.errorDetails + "\nDid you set the speech resource key and region values?"); } synthesizer.close(); }, function (err: string) { console.trace("err - " + err); synthesizer.close(); }); console.log("Now synthesizing to: " + audioFile); }); } synthesizeSpeech();在 synthesis.ts 中,您可以選擇性地 將YourAudioFile.wav 重新命名為另一個輸出檔名。
若要變更語音合成語言,請以另一個
en-US-Ava:DragonHDLatestNeural取代 。所有神經語音都是多語系,而且可流利地使用其自己的語言和英文。 例如,如果英文的輸入文字是 I'm excited to try text to speech,而您設定了
es-ES-Ximena:DragonHDLatestNeural,則會使用西班牙文腔調以英文讀出該文字。 如果語音不說輸入文字的語言,語音服務就不會輸出合成的音訊。建立檔案
tsconfig.json以轉譯 TypeScript 程式代碼,並複製 ECMAScript 的下列程式代碼。{ "compilerOptions": { "module": "NodeNext", "target": "ES2022", // Supports top-level await "moduleResolution": "NodeNext", "skipLibCheck": true, // Avoid type errors from node_modules "strict": true // Enable strict type-checking options }, "include": ["*.ts"] }從 TypeScript 轉譯為 JavaScript。
tsc如果成功,此命令應該不會產生任何輸出。
執行主控台應用程式,以開始對檔案進行語音合成:
node synthesis.js
輸出
您應該會在控制台中看到下列輸出。 依照提示輸入您要合成的文字:
Enter some text that you want to speak >
> I'm excited to try text to speech
Now synthesizing to: YourAudioFile.wav
synthesis finished.
備註
更多語音合成選項
本快速入門會使用 SpeakTextAsync 作業來合成您輸入的簡短文字區塊。 您也可以使用檔案中的長格式文字,並更精細地控制語音樣式、韻律和其他設定。
- 如需從檔案進行語音合成以及進一步控制語音語調、韻律和其他設定的相關資訊,請參閱如何合成語音和使用語音合成標記語言改善合成 (SSML)。
- 如需合成長格式文字轉換語音的相關資訊,請參閱文字轉換語音的批次合成 API。
Foundry Tools 中的 Azure 語音的 OpenAI 文字轉換語音功能
也支援 OpenAI 文字轉換語音。 請參閱 Azure 語音中的 OpenAI 文字轉語音 與 多語言語音。 您可以使用支援的 OpenAI 語音名稱取代 en-US-Ava:DragonHDLatestNeural,例如 en-US-FableMultilingualNeural。
清除資源
您可以使用 Azure 入口網站或 Azure 命令列介面 (CLI) 來移除您所建立的語音資源。