IBM Cloud Docs
使用音訊格式

使用音訊格式

IBM Watson® Text to Speech 服務可用若干熱門音訊格式(或 MIME 類型)傳回合成音訊。 如需所有支援格式的相關資訊,請參閱支援的音訊格式

為了充份利用服務,您需要瞭解服務傳回之音訊的取樣率,以及在您需要時指定不同速率的方式。 如需相關資訊,請參閱取樣率。 服務一律針對所有格式傳回單一頻道音訊。

取樣率

取樣率(或取樣頻率)是針對音訊每秒產生的樣本數。 取樣率的測量單位是赫茲 (Hz) 或千赫 ( kHz)。 例如,每秒 16,000 個樣本的速率等於 16,000 赫玆(或 16 kHz)。

在內部,服務一律使用取樣率 22,050 Hz 來合成音訊。 對於許多格式,服務也會以這個取樣率傳回音訊。 對於其他格式,服務會以不同的取樣率傳回音訊。

對於大部分格式,您可以為音訊指定不同的取樣率。 對於 audio/alawaudio/l16audio/mulaw 格式,您必須指定取樣速率。 您可以在音訊格式規格包含 rate={integer} 參數,來指定取樣率。 如需相關資訊,請參閱指定音訊格式

當您指定取樣率時,服務會將音訊從 22,050 Hz 重新取樣為指定的速率,然後才傳回音訊。 指定的取樣率必須在 8 kHz 到 192 kHz 範圍內。 部分音訊格式將速率限制為特定值;這些格式的說明會識別這類限制。

判定取樣率

識別服務傳回之任何音訊取樣率的最可靠方法是從音訊串流本身擷取資訊。 要判定取樣率,請使用一些簡單文字(例如,"hello world")呼叫 /v1/synthesize 方法,並指定您計劃使用的格式和轉碼器。 然後,您可以將音訊串流儲存至檔案並在音訊播放程式(例如播放音訊檔中所列其中一種)中開啟,以取得取樣率。

支援的音訊格式

表 1 列出您可以用來要求合成音訊的音訊格式。 預設情況下,服務以 Opus 編解碼器 (audio/ogg;codecs=opus) 傳回 Ogg 格式的音訊。

Safari 瀏覽器不支援 Ogg 音訊格式。 如果您在 Safari 瀏覽器中使用Text to Speech服務,則必須指定您希望服務傳回音訊的不同格式。 如需相關資訊,請參閱指定音訊格式

服務提供每一種格式的下列資訊:

  • 預設取樣率 顯示指出格式之音訊的取樣率(如果您未指定替代的速率)。
  • 必要參數 指出您必須為所傳回音訊指定取樣率的格式。
  • 選用參數 識別您可以選擇性地指定所傳回音訊之取樣率或其他特徵的格式。

如接受 * 參數之格式的*音訊格式codecs 直欄中所顯示,請用 ;(分號)隔開格式規格的所有參數。 如需不同格式的相關資訊,請參閱表格之後的小節。

支援的音訊格式摘要
音訊格式 預設取樣率 必要參數 選用參數
audio/alaw rate={integer}
audio/basic 8000 Hz
audio/flac 22,050 Hz rate={integer}
audio/l16 rate={integer} endianness=big-endian
endianness=little-endian
audio/mp3
音訊/mpeg
22,050 Hz rate={integer}
audio/mulaw rate={integer}
音訊/ogg
音訊/ogg;編解碼器=vorbis
22,050 Hz rate={integer}
audio/ogg;codecs=opus 48,000 Hz rate={integer}
audio/wav 22,050 Hz rate={integer}
音訊/webm
音訊/webm;編解碼器=opus
48,000 Hz
audio/webm;codecs=vorbis 22,050 Hz rate={integer}

audio/alaw 格式

A-law ( audio/alaw ) 是一種單通道有損音訊格式,使用類似於 audio/basicaudio/mulaw 格式的 u-law(或 mu-law)資料進行編碼,但 A-law 演算法產生不同的訊號特徵。 您必須以此格式指定取樣率。 例如,指定 audio/alaw;rate=8000 以 8 kHz 取樣的音訊。

由於傳回音訊的串流性質,產生的 A-law 音訊可能無法在所有音訊播放器中使用。 尤其,無論音訊的長度為何,音訊串流標頭中的 numSamples 屬性都會設為 0

audio/basic 格式

基本音訊 是一種單一頻道的失真音訊格式,它是使用取樣率為 8 kHz 的 8 位元 u-law(或 mu-law)資料進行編碼的。 此格式提供最低共同分母媒體類型。 此格式的音訊取樣率一律為 8 kHz。

如需相關資訊,請參閱:

audio/flac 格式

自由無失真音訊轉碼器 (FLAC) (.flac) 是一種無失真壓縮音訊編碼格式。 您可以選擇性地指定非預設 22,050 Hz 的取樣率。

audio/l16 格式

線性 16 位元脈衝編碼調變 (PCM) 是一種未經壓縮的音訊資料格式(通常指的是 .raw.pcm)。 您必須使用此音訊格式來指定取樣率。 例如,對於取樣率為 16 kHz 的音訊指定 audio/l16;rate=16000

您可以選擇性地使用 endianness 參數,指定音訊的排列法。 Endianness 指出基礎電腦架構排序資料位元組的方式:

  • 大序排列法 (endianness=big-endian) 會依最重要的位元來排序資料。
  • 小序排列法 (endianness=little-endian) 會依最不重要的位元來排序資料。

例如,指定 audio/l16;rate=16000;endianness=big-endian 取得以 16 kHz 取樣的音訊,並以大序排列法順序傳回。 如果省略 endianness,預設值為 little-endian。 (指定 endianness 是僅適用於 audio/l16 格式的問題,此格式不包含標頭。 其他格式不會考量 endianness。)

有關詳細信息,請參閱 IETF 徵求意見(RFC)2586

audio/mp3 及 audio/mpeg 格式

MP3Motion Picture Experts Group (MPEG) 是一種失真資料壓縮格式(MP3 及 MPEG 指的是相同的格式)。 您可以選擇指定預設值以外的取樣率。 Enhanced Neural 和 Expressive 聲音的預設取樣率為 22,050 Hz,Natural 聲音則為 24,000 Hz。

audio/mulaw 格式

8 位元 mu-law(或 u-law)音訊 是一種單一頻道的失真音訊格式,它是使用 8 位元 mu-law 資料進行編碼的。 您必須使用此音訊格式來指定取樣率。 例如,對於取樣率為 16 kHz 的音訊指定 audio/mulaw;rate=16000

audio/ogg 格式

Ogg 格式 (.ogg) 是一種自由且開放的容器格式,由 Xiph.org Foundation 維護。 您可以在格式中指定 codecs 參數,以要求用下列其中一種轉碼器壓縮音訊串流:

  • Opus 轉碼器,指定 audio/ogg;codecs=opus。 您可以選擇性地指定非預設 48,000 Hz 的取樣率。 只有下列值才是有效的取樣率:480002400016000120008000。 如果您指定非其中之一的值,則服務會傳回錯誤。

    現行限制會導致服務忽略有效的取樣率。 服務一律以 48 kHz 的取樣率傳回音訊。

  • Vorbis 轉碼器,指定 audio/ogg;codecs=vorbis 或只指定 audio/ogg。 您可以選擇性地指定非預設 22,050 Hz 的取樣率。

這兩個轉碼器都是自由且開放的失真音訊壓縮格式。 Opus 是偏好的轉碼器,但根據 Ogg 規格,如果您省略轉碼器,則服務會以 Vorbis 格式傳回音訊。 如果您完全省略音訊格式,則依預設服務會以 Ogg 格式傳回音訊,並搭配使用 Opus 轉碼器。

如需相關資訊,請參閱:

audio/wav 格式

Waveform Audio File Format (WAV) (.wav) 是一種標準容器格式,通常用於未經壓縮的音訊位元串流,但也可以包含壓縮音訊。 您可以選擇性地指定非預設 22,050 Hz 的取樣率。

由於所傳回音訊的串流本質,產生的 WAV 音訊可能無法在所有音訊播放程式中運作。 尤其,無論音訊的長度為何,音訊串流標頭中的 numSamples 屬性都會設為 0

audio/webm 格式

Web 媒體 (WebM) (.webm) 是一種開放式媒體檔案格式。 您可以在格式中指定 codecs 參數,以要求用下列其中一種轉碼器壓縮音訊串流:

  • Opus 轉碼器,指定 audio/webm;codecs=opus 或只指定 audio/webm。 此格式的音訊取樣率一律為 48 kHz。
  • Vorbis 轉碼器,指定 audio/webm;codecs=vorbis。 您可以選擇性地指定非預設 22,050 Hz 的取樣率。

這兩個轉碼器都是自由且開放的失真音訊壓縮格式。 Opus 是偏好的轉碼器。

如需相關資訊,請參閱:

指定音訊格式

依預設,服務會以 audio/ogg;codecs=opus 格式傳回音訊。 您可以使用 HTTP 或 WebSocket 介面來指定不同的音訊格式。

  • 利用 HTTP GETPOST /v1/synthesize 方法,您可以使用 Accept 要求標頭或 accept 查詢參數來指定格式。
    • 如果您使用 Accept 要求標頭,請指定格式及任何其他參數,如下列範例中所示。 範例指定 audio/l16 格式,以及 16,000 Hz 的取樣率。

      audio/l16;rate=16000
      
    • 如果您使用 accept 查詢參數,則必須將格式及任何其他參數進行 URL 編碼,如下列範例中所示。 範例指定的格式和取樣率與前一個範例相同。

      audio%2Fl16%3Brate%3D16000
      
    若要以預設格式接收音訊,請同時省略標頭和查詢參數。 如需相關資訊,請參閱將文字合成為音訊
  • 利用 WebSocket /v1/synthesize 方法,您必須使用傳遞以起始合成之文字訊息的必要 accept 參數,指定格式。 若要以預設格式接收音訊,請為參數指定 */* 值。 如需相關資訊,請參閱傳送輸入文字

播放音訊檔

若要播放服務產生的音訊檔,請使用下列其中一種工具:

  • Web 瀏覽器,如Google Chrome™、Firefox®或Microsoft® Internet Explorer®
  • 音訊播放器,例如 Audacity® ( audacityteam.org ) 或 FFmpeg ( ffmpeg.org )