IBM Cloud Docs
支援的音訊格式

支援的音訊格式

IBM Watson® Speech to Text 服務可從多種格式的音訊中擷取語音。 本主題的後續部分可以幫助您充分利用服務。 如果您不熟悉音訊處理,請從 音訊術語和特徵 開始,以了解有關音訊概念的資訊。

音訊格式

表 1 提供該服務支援的音訊格式摘要。

  • 音訊格式透過其 Content-Type 規範來標識每種支援的格式。
  • 壓縮表示該格式對壓縮的支援。 使用支援壓縮的格式,您可以減少音訊的大小,讓您可以傳遞給服務的資料量達到最大。 但您需要考慮壓縮對音訊品質可能產生的影響。 如需相關資訊,請參閱資料限制和壓縮
  • 內容類型規格 指出您是否必須使用 Content-Type 標頭或相等參數,來指定您傳送給服務之音訊的格式(MIME 類型)。 如需相關資訊,請參閱指定音訊格式

對於每種格式,最終直欄會識別其他必要的參數選用參數。 下列各節提供這些參數的相關資訊。

支援的音訊格式摘要
音訊格式 壓縮 內容類型規範 必要參數 選用參數
audio/alaw 失真 必要 rate={integer}
audio/basic 失真 必要
audio/flac 無失真 選用
audio/g729 失真 選用
audio/l16 必要 rate={integer} channels={integer}
endianness=big-endian
endianness=little-endian
audio/mp3
音訊/mpeg
失真 選用
audio/mulaw 失真 必要 rate={integer}
audio/ogg 失真 選用 codecs=opus
codecs=vorbis
audio/wav 無、無損或有損 選用
audio/webm 失真 選用 codecs=opus
codecs=vorbis

audio/alaw 格式

A-law (audio/alaw) 是單一頻道失真音訊格式。 它使用的演算法類似 audio/basicaudio/mulaw 格式所套用的 u-law 演算法,不過 A-law 演算法會產生不同的信號特徵。 當您使用此格式時,該服務需要格式規格有額外參數。

音訊/法律格式參數
參數 說明
rate
必需的
一個整數,用來指定擷取音訊的取樣率。 例如,為以 8 kHz:

audio/alaw;rate=8000

audio/basic 格式

基本音訊 (audio/basic) 是使用 8 位元 u-law(或 mu-law)資料進行編碼的單一頻道失真音訊格式,該資料是以 8 kHz 取樣。 此格式提供最小公分母,以指出音訊的媒體類型。 此服務只支援對窄頻模型使用 audio/basic 格式的檔案。

有關更多信息,請參閱互聯網工程任務組 (IETF)徵求意見(RFC)2046iana.org/assignments/media-types/audio/basic

audio/flac 格式

自由無失真音訊轉碼器 (FLAC) (audio/flac) 為無失真音訊格式。

audio/g729 格式

G.729 (audio/g729) 是支援以 8 kHz 編碼之資料的失真音訊格式。 此服務只支援 G.729 附錄 D,而不支援附錄 J。此服務只支援對窄頻模型使用 audio/g729 格式的檔案。

audio/l16 格式

線性 16 位元脈衝編碼調變 (PCM) (audio/l16) 是一種未經壓縮的音訊格式。 使用此格式可傳遞原始 PCM 檔。 也可以在容器 Waveform Audio File Format (WAV) 檔案內包含線性 PCM 音訊。 當您使用 audio/l16 格式時,該服務會接受格式規格上的額外必要參數及選用參數。

audio/l16格式的參數
參數 說明
rate
必需的
一個整數,用來指定擷取音訊的取樣率。 例如,為以 16 kHz:

audio/l16;rate=16000

channels
選修的
依預設,此服務會將音訊當成具有單一頻道來處理。 *如果音訊有多個頻道,*您必須指定一個整數來識別頻道數。 例如,為以 16 kHz:

audio/l16;rate=16000;channels=2

該服務最多接受 16 個通道。 在轉碼期間,它會將音訊降混成一個頻道。

endianness
選修的
預設,此服務會自動偵測送入音訊的排列法。 然而,其自動偵測有時可能會失敗,而會捨棄 audio/l16 格式的簡短音訊的連線。 指定排列法會停用自動偵測。 請指定 big-endianlittle-endian。 例如,為以小端格式在 16 kHz捕獲的音訊資料指定以下參數:

audio/l16;rate=16000;endianness=little-endian

請求註解 (RFC) 2045的第5.1節指定audio/l16資料的大端格式,但許多人使用小端格式位元組序格式。

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

audio/mp3 及 audio/mpeg 格式

MP3 (audio/mp3) 或 Motion Picture Experts Group (MPEG) (audio/mpeg) 是失真音訊格式。 ( MP3和 MPEG 指的是相同的格式。)。

audio/mulaw 格式

Mu-law (audio/mulaw) 是單一頻道失真音訊格式。 資料是使用 u-law(或 m-law)演算法進行編碼。 audio/basic 格式是一律以 8 kHz 取樣的相等格式。 當您使用此格式時,該服務需要格式規格有額外參數。

音訊/mulaw 格式參數
參數 說明
rate
必需的
一個整數,用來指定擷取音訊的取樣率。 例如,為以 8 kHz:

audio/mulaw;rate=8000

audio/ogg 格式

Ogg ( audio/ogg ) 是一種開放容器格式,由Xiph.org基金會 ( xiph.org/ogg ) 維護。 您可以使用以下列失真轉碼器壓縮的音訊串流:

  • 作品audio/ogg;codecs=opus )。有關更多信息,請參閱 opus-codec.org
  • Vorbisaudio/ogg;codecs=vorbis )。有關更多信息,請參閱 xiph.org/vorbis

OGG Opus 是首選編解碼器。 由於其低延遲、高音訊品質和較小的尺寸,它是 OGG Vorbis 的邏輯繼承者。 它由互聯網工程任務組 (IETF) 標準化為 徵求意見(RFC)6716

如果您在內容類型中省略編解碼器,服務會自動從輸入音訊中偵測到編解碼器。

audio/wav 格式

Waveform Audio File Format (WAV) (audio/wav) 是一種容器格式,通常用於未經壓縮的音訊串流,但它也可以包含壓縮音訊。 服務支援使用任何編碼的 WAV 音訊。 它接受最多有九個頻道的 WAV 音訊(因為 FFmpeg 限制)。

如需透過將 WAV 音訊轉換為 Opus 轉碼器來減少 WAV 音訊大小的相關資訊,請參閱使用 Opus 轉碼器轉換為 audio/ogg

audio/webm 格式

Web 媒體 ( WebM ) ( audio/webm ) 是一種開放容器格式,由WebM專案 ( webmproject.org ) 維護。 您可以使用以下列失真轉碼器壓縮的音訊串流:

  • 作品audio/webm;codecs=opus )。有關更多信息,請參閱 opus-codec.org
  • Vorbisaudio/webm;codecs=vorbis )。有關更多信息,請參閱 xiph.org/vorbis

如果您省略轉碼器,服務會從輸入音訊自動偵測它。

有關示範如何從 Chrome 瀏覽器中的麥克風擷取音訊並將其編碼為WebM資料流的JavaScript程式碼,請參閱 jsbin.com/hedujihuqo/edit ?js,console。 此程式碼不會將擷取的音訊提交給服務。

指定音訊格式

您可以使用 Content-Type 請求標頭或等效參數來指定傳送至服務的音訊的格式(MIME 類型)。 您可以指定任何要求的音訊格式,但不一定需要:

  • 對於大部分格式,內容類型是選用的。 您可以省略內容類型,或指定 application/octet-stream,讓服務自動偵測格式。
  • 對於其他格式,需要內容類型。 這些格式不會提供服務自動偵測其格式所需的資訊(例如取樣率)。 您必須為 audio/alawaudio/basicaudio/l16audio/mulaw 格式指定內容類型。

有關需要內容類型規範的格式的詳細信息,請參閱 音訊格式 中的表 1。 表格的內容類型規格列指示您是否必須指定內容類型。

如需使用每個服務介面指定內容類型的範例,請參閱 發出語音辨識要求。 該主題中的所有範例都指定內容類型。

當您使用 curl 指令透過 HTTP 介面發出語音辨識請求時,您必須使用 Content-Type 標頭指定音訊格式、指定 "Content-Type: application/octet-stream" 或僅指定 "Content-Type:"。 如果您完全省略標頭,curl 會使用預設值 application/x-www-form-urlencoded

資料限制和壓縮

該服務最多接受 100 MB 的音訊資料用於同步 HTTP 或WebSocket請求的轉錄,以及 1 GB 的非同步 HTTP 請求的音訊資料。 當您識別長連續音訊串流或大型音訊檔案時,您需要考慮並適應這些資料限制。

最大化可透過語音辨識請求傳遞的音訊資料量的一種方法是使用提供 Compression 的 格式。 壓縮有兩種基本類型:有損壓縮和無損壓縮。 您選擇的音訊格式和壓縮演算法可以直接影響語音辨識的準確性。

使用有損壓縮的音訊格式可大幅減少音訊串流的大小。 但過於嚴格地壓縮音訊可能會導致轉錄準確性降低。 您聽不出差異,但服務對此類資料遺失更加敏感。

比較近似的音訊大小

請考量 2 小時連續語音傳輸結果的資料串流的估計大小,其是以 16 kHz 進行取樣,每個樣本為 16 位元:

  • 如果資料是以 audio/wav 格式編碼,則兩小時串流的大小為 230 MB,遠超出此服務的 100 MB 限制。
  • 如果資料是以 audio/ogg 格式編碼,則兩小時串流的大小只有 23 MB,遠低於此服務的限制。

下表估計可使用不同格式的同步 HTTP 或 WebSocket 要求來傳送用於語音辨識之音訊的持續時間上限。 持續時間會考量 100 MB 服務限制。 實際值會隨著音訊的複雜性及已達到的壓縮率而改變。

不同格式音訊的最大持續時間
音訊格式 音訊的持續時間上限(大約)
audio/wav 55 分鐘
audio/flac 1 小時 40 分鐘
audio/mp3 3 小時 20 分鐘
audio/ogg 8 小時 40 分鐘

在比較不同音訊格式的測試中,IBM®確定 WAV 和 FLAC 格式提供了最佳的字錯誤率 (WER)。 這些格式可以作為轉錄準確性的基線,因為它們保持音訊完整,沒有資料遺失。 帶有 Opus 編碼的 Ogg 格式顯示,相對於基線,WER 略有下降 2%。 MP3格式的結果最差,WER 相對於基準下降了 10%。

audio/ogg;codecs=opusaudio/webm;codecs=opus 通常為相等的格式,且其大小幾乎相同。 它們在內部使用相同的轉碼器;僅容器格式不同。

最大限度地提高轉錄準確性

選擇音訊格式和壓縮演算法時,請考慮以下建議以最大限度地提高轉錄準確性:

  • 使用未壓縮且無損的音訊格式。 如果音訊的持續時間少於 55 分鐘(少於 100 MB),請考慮使用 audio/wav 格式。 儘管 WAV 格式只能容納 55 分鐘的音頻,但這對於大多數轉錄應用程式(例如客戶支援電話)來說通常就足夠了。 未壓縮的 WAV 音訊可以產生更準確的轉錄。
  • 使用非同步 HTTP 介面。 如果您選擇使用 WAV 格式但您的音訊超過 100 MB 限制,則非同步介面可讓您傳送最多 1 GB 的資料。
  • 使用壓縮但無損的音訊格式。 如果必須壓縮音訊文件,請使用 audio/flac 格式,該格式採用無損壓縮。 無損壓縮可減少音訊的大小,但保持其品質。 FLAC 格式是最大限度提高轉錄準確性的良好候選格式。
  • 使用有損壓縮作為最後的手段。 如果您需要更高的壓縮率,請使用 Opus 編解碼器的 audio/ogg 格式。 儘管 Ogg 格式使用有損壓縮,但 Ogg 格式與 Opus 編解碼器的組合在有損壓縮演算法中顯示出語音準確度下降最少。

使用具有更高壓縮等級的其他格式可能會影響轉錄的準確性。 試驗該服務以確定哪種格式最適合您的音訊和應用程式。 有關改進語音辨識的更多方法,請參閱 改進語音辨識的提示

音訊轉換

您可以使用不同工具將音訊轉換成不同格式。 當您的音訊格式不受服務支援,或者是未經壓縮的或無失真的格式時,這些工具會很有幫助。 在後者的情況下,您可以將音訊轉換為失真格式,以減少其大小。

可以使用下列免費工具,將您的音訊從某種格式轉換成另一種格式:

這些工具提供多種音訊格式的跨平台支援。 此外,您還可以使用許多工具來播放音訊。 請不要使用這些工具來違反適用的著作權法。

使用 Opus 轉碼器轉換為 audio/ogg

opus-tools包括三個用於在 Opus 編解碼器中處理 Ogg 音訊的命令列實用程式:

  • opusenc實用程式使用 Opus 編解碼器將音訊從 WAV、FLAC 和其他格式編碼為 Ogg。 該頁面顯示如何壓縮音訊串流。 壓縮對於將即時音訊傳遞給服務非常實用。
  • opusdec實用程式將 Opus 編解碼器中的音訊解碼為未壓縮的 PCM WAV 檔案。
  • opusinfo實用程式提供有關 Opus 檔案的資訊和有效性檢查。

許多使用者會傳送 WAV 檔案以進行語音辨識。 使用該服務對於同步 HTTP 和 WebSocket 要求的 100 MB 資料限制,WAV 格式可減少單一要求能辨識的音訊量。 使用 opusenc 指令,將音訊轉換成偏好的 audio/ogg:codecs=opus 格式,可大幅增加可透過辨識要求而傳送的音訊量。

例如,假設有一個未經壓縮的寬頻 (16 kHz) WAV 檔案 (input.wav),其使用每個樣本 16 個位元,且位元速率為 256 kbps。 下列指令會將音訊轉換為使用 Opus 轉碼器的檔案 (output.opus):

opusenc input.wav output.opus

此轉換會以四倍壓縮音訊,並產生位元速率為 64 kbps 的輸出檔。 但是,根據 Opus 建議設置,您可以安全地將比特率降低至 24 kbps,並且仍然保留語音音訊的完整頻帶。 此減少會以十倍壓縮音訊。 下列指令使用 --bitrate 選項來產生位元速率為 24 kbps 的輸出檔:

opusenc --bitrate 24 input.wav output.opus

使用 opusenc 公用程式壓縮很快速。 壓縮的執行速率大約比即時快 100 倍。 當它完成時,該指令會將輸出寫入至主控台,提供關於其執行時間及產生的音訊資料的完整詳細資料。

從視訊檔轉錄語音

您無法從同時包含音訊和視訊的多媒體檔案轉錄語音。 此服務只接受音訊資料以進行語音辨識。

若要從同時包含音訊和視訊的多媒體檔案轉錄語音,必須將音訊資料從視訊資料區隔開來。 您可以使用 FFmpeg 公用程式將音訊從視訊來源區隔開來。 有關更多信息,請參閱 ffmpeg.org

改善語音辨識的秘訣

下列秘訣可協助您改善語音辨識的品質:

  • 錄製音訊的方式可能會對服務的結果產生重大影響。 語音辨識對於輸入音訊品質非常敏感。 為了獲得最佳可能正確性,請確保輸入音訊品質儘可能良好。

    • 儘可能使用靠近的語音導向麥克風(例如耳機),並在必要時調整麥克風設定。 使用專業麥克風來擷取音訊時,該服務表現最好。
    • 避免使用系統的內建麥克風。 通常安裝在行動裝置和平板電腦上的麥克風是不夠好的。
    • 確保說話者接近麥克風。 當說話者離麥克風越遠時,精確度會下降。 例如,若距離為 10 英尺,該服務要產生足夠的結果會很吃力。
  • 使用不大於 16 kHz(用於寬頻模型)或 8 kHz(用於窄頻模型)的取樣率,且每個樣本使用 16 位元。 該服務會將以高於目標模型(16 kHz 或 8 kHz)的取樣率所錄製的音訊轉換為模型的速率。 因此,較大的頻率雖不會導致更高的辨識正確性,但會增加音訊串流的大小。

  • 以提供資料壓縮的格式將音訊進行編碼。 藉由更有效率地編碼資料,您可以傳送更多音訊,而不超出 100 MB 限制。 由於人聲的動態範圍比音樂等更有限,因此語音可以容納比其他類型的音訊更低的位元率。 儘管如此,IBM®建議您仔細選擇音訊格式和壓縮演算法。 有關更多信息,請參閱 最大限度地提高轉錄準確性

  • 語音辨識對於背景噪音和人聲的細微差別很敏感。

    • 引擎噪音、運作中裝置、馬路噪音和背景對話都會大幅降低辨識正確性。
    • 地區口音和發音差異也會降低正確性。

    如果您的音訊有這些特徵,請考慮使用聲學模型自訂作業來改善語音辨識的正確性。 如需相關資訊,請參閱瞭解自訂作業

  • 要了解有關音訊特徵的更多信息,請考慮在語音識別請求中使用音訊指標。 如果您了解音訊訊號處理,這些指標可以為您的音訊特徵提供有意義且詳細的見解。 如需相關資訊,請參閱音訊度量值