Azure Speech Service Text To Speech


  1. 說明
    1. Azure Portal 建立 Speech Service
    2. 安裝 Python Speech 相關的 SDK
    3. 設計 SSML
    4. 使用 Python 介接 API
    5. Speech Studio
    6. 成果
  2. 參考資料

介紹如何藉接 Azure Speech Service,將文字轉換為朗讀文字的語音檔,支援多國語語言,同時在聲調、語速都可以進行調整,聲音也相當擬人,不會有很明顯的機械音感覺。本次 API 介接使用 Python 進行示範,同時示範 Zero-Coding 的 Speech Studio 的使用。

logo

說明

Azure Portal 建立 Speech Service

不論是自行開發程式碼介接或者是使用 Speech Studio 都必須先於 Azure Portal 上建立 Speech Service,並在介接時使用 Key。

安裝 Python Speech 相關的 SDK

開始使用文字轉換語音 | MS Docs

pip install azure-cognitiveservices-speech

設計 SSML

ssml.xml

SSMS 是 Azure 指定文字該如何轉換為語音的標籤語言,例如定義段落、中斷沉默、使用的人聲類型、語速、音調等。目前繁體中文尚不支援角色與情緒的支援,期待未來這些功能更為完善,提供使用者更多元的語音產生選擇 😀

<speak 
  xmlns="http://www.w3.org/2001/10/synthesis" 
  xmlns:mstts="http://www.w3.org/2001/mstts" 
  xmlns:emo="http://www.w3.org/2009/10/emotionml" 
  version="1.0" xml:lang="zh-CN"
>
  <voice name="zh-TW-HsiaoChenNeural">       
    <prosody rate="40%" pitch="6%">
      <p>該如何驗證解決方案</p>
      <break time="1500ms" />
      <p>最好的方式就是將實際的情境需求應用於解決方案當中</p>
    </prosody>
  </voice>
</speak>

線上即時測試 SSML | Azure 文字轉換語音

使用 Python 介接 API

code.py

from azure.cognitiveservices.speech import AudioDataStream, SpeechConfig, SpeechSynthesizer, SpeechSynthesisOutputFormat
from azure.cognitiveservices.speech.audio import AudioOutputConfig

speech_config = SpeechConfig(
    subscription="ApiKey", 
    region="eastus")

audio_config = AudioOutputConfig(filename="file.wav")


ssml_string = open("ssml.xml", "r", encoding="utf8").read()
synthesizer = SpeechSynthesizer(
  speech_config=speech_config, 
  audio_config=audio_config)

result = synthesizer.speak_ssml_async(ssml_string).get()
stream = AudioDataStream(result)
stream.save_to_wav_file("file.wav")

其中 subscription 要輸入於 Azure 所建立的 Speech Service API Key,region 則是該 Service 建立時所選的地區。

Speech Studio

Speech Studio Portal

不需要寫程式碼的語音解決方案,同樣可以支援將資料以 SSML 處理,提供 UI 介面讓語音轉換的編輯上更為平易近人,同時也支援編輯檔的保存與匯出,在匯出上服務推薦使用 Azure Blob ,如果是匯出至本機限制 10 分鐘以內的音訊檔。

成果

參考資料

Cognitive-services-speech-sdk | GitHub

Synthesis Markup Language (SSML)

可以選擇使用的語音類型 | Language and voice support for the Speech service