跳至主要内容

支援多種語言

本課程的手繪筆記概述

手繪筆記由 Nitya Narasimhan 提供。點擊圖片查看大圖。

這段影片概述了 Azure 語音服務,涵蓋了前幾課中的語音轉文字和文字轉語音,以及本課程中討論的語音翻譯:

使用幾行 Python 代碼識別語音,來自 Microsoft Build 2020

🎥 點擊上方圖片觀看影片

課前測驗

課前測驗

介紹

在過去的三節課中,你學習了如何將語音轉換為文字、語言理解以及將文字轉換為語音,這些都由 AI 提供支持。AI 還可以幫助人類交流的另一個領域是語言翻譯——將一種語言轉換為另一種語言,例如從英語轉換為法語。

在本課程中,你將學習如何使用 AI 來翻譯文字,使你的智能計時器能夠與多種語言的用戶互動。

在本課程中,我們將涵蓋:

🗑 這是本專案的最後一課,所以在完成本課程和作業後,別忘了清理你的雲端服務。你將需要這些服務來完成作業,所以請確保先完成作業。

如有需要,請參考清理專案指南以獲取相關指示。

翻譯文字

文字翻譯是一個已經研究了超過 70 年的計算機科學問題,現在由於 AI 和計算機能力的進步,已經接近解決,幾乎可以與人類翻譯媲美。

💁 其起源可以追溯到更早的時代,例如 9 世紀的阿拉伯密碼學家 Al-Kindi,他開發了語言翻譯技術

機器翻譯

文字翻譯最初是一種稱為機器翻譯(MT)的技術,可以在不同的語言對之間進行翻譯。MT 通過將一種語言中的單詞替換為另一種語言中的單詞,並添加技術來選擇正確的翻譯短語或句子部分的方法,當簡單的逐字翻譯沒有意義時。

🎓 當翻譯器支持在一種語言和另一種語言之間進行翻譯時,這些被稱為語言對。不同的工具支持不同的語言對,這些可能並不完整。例如,一個翻譯器可能支持英語到西班牙語的語言對,和西班牙語到意大利語的語言對,但不支持英語到意大利語。

例如,將 "Hello world" 從英語翻譯成法語可以通過替換來完成——"Bonjour" 替換 "Hello","le monde" 替換 "world",從而得到正確的翻譯 "Bonjour le monde"。

當不同語言使用不同的方式來表達相同的意思時,替換方法就不起作用了。例如,英語句子 "My name is Jim" 翻譯成法語是 "Je m'appelle Jim"——字面意思是 "我叫自己 Jim"。"Je" 是法語中的 "我","moi" 是 "我",但由於動詞以元音開頭,所以與動詞連接成 "m'","appelle" 是 "叫",而 "Jim" 不翻譯,因為它是一個名字,不是一個可以翻譯的單詞。單詞順序也成為一個問題——簡單的替換 "Je m'appelle Jim" 變成 "I myself call Jim",與英語的單詞順序不同。

💁 有些單詞永遠不會被翻譯——無論使用哪種語言介紹我,我的名字都是 Jim。當翻譯成使用不同字母表的語言,或使用不同字母表示不同聲音的語言時,單詞可以被音譯,即選擇適當的字母或字符,使其聽起來與給定單詞相同。

成語也是翻譯的一個問題。這些是具有不同於單詞直接解釋的理解含義的短語。例如,英語中的成語 "I've got ants in my pants" 並不字面指在衣服裡有螞蟻,而是指坐立不安。如果你將其翻譯成德語,你會讓聽眾感到困惑,因為德語版本是 "I have bumble bees in the bottom"。

💁 不同的地區增加了不同的複雜性。對於成語 "ants in your pants",在美式英語中 "pants" 指的是外衣,在英式英語中,"pants" 是內衣。

✅ 如果你會說多種語言,想想一些無法直接翻譯的短語

機器翻譯系統依賴於描述如何翻譯某些短語和成語的大型規則數據庫,以及使用統計方法從可能的選項中選擇適當翻譯的統計方法。這些統計方法使用由人類翻譯成多種語言的巨大數據庫來選擇最可能的翻譯,這種技術稱為統計機器翻譯。其中一些使用語言的中間表示,允許一種語言翻譯成中間語言,然後從中間語言翻譯成另一種語言。這樣,添加更多語言涉及到翻譯到和從中間語言,而不是翻譯到和從所有其他語言。

神經翻譯

神經翻譯涉及使用 AI 的力量來翻譯,通常使用一個模型翻譯整個句子。這些模型在由人類翻譯的巨大數據集上進行訓練,例如網頁、書籍和聯合國文件。

神經翻譯模型通常比機器翻譯模型小,因為不需要巨大的短語和成語數據庫。提供翻譯的現代 AI 服務通常混合多種技術,混合統計機器翻譯和神經翻譯。

任何語言對之間都沒有 1:1 的翻譯。不同的翻譯模型會根據用於訓練模型的數據產生略有不同的結果。翻譯並不總是對稱的——即如果你將一個句子從一種語言翻譯成另一種語言,然後再翻譯回第一種語言,你可能會看到一個略有不同的句子作為結果。

✅ 試試不同的在線翻譯器,例如 Bing 翻譯Google 翻譯 或 Apple 翻譯應用。比較幾個句子的翻譯版本。還可以嘗試在一個翻譯器中翻譯,然後在另一個翻譯器中翻譯回來。

翻譯服務

有許多 AI 服務可以從你的應用程式中用來翻譯語音和文字。

認知服務語音服務

語音服務標誌

你在過去幾節課中使用的語音服務具有語音識別的翻譯功能。當你識別語音時,你可以請求不僅是同一語言的語音文字,還有其他語言的語音文字。

💁 這僅在語音 SDK 中可用,REST API 沒有內建翻譯功能。

認知服務翻譯服務

翻譯服務標誌

翻譯服務是一個專門的翻譯服務,可以將文字從一種語言翻譯成一種或多種目標語言。除了翻譯,它還支持廣泛的額外功能,包括屏蔽髒話。它還允許你為特定單詞或句子提供特定翻譯,以處理你不想翻譯的術語,或有特定知名翻譯的術語。

例如,當將句子 "I have a Raspberry Pi"(指的是單板計算機)翻譯成另一種語言如法語時,你會希望保持 "Raspberry Pi" 的名稱不變,而不是翻譯它,得到 "J’ai un Raspberry Pi" 而不是 "J’ai une pi aux framboises"。

創建翻譯資源

在本課程中,你將需要一個翻譯資源。你將使用 REST API 來翻譯文字。

任務 - 創建翻譯資源

  1. 從你的終端或命令提示符運行以下命令,在你的 smart-timer 資源組中創建一個翻譯資源。

    az cognitiveservices account create --name smart-timer-translator \
    --resource-group smart-timer \
    --kind TextTranslation \
    --sku F0 \
    --yes \
    --location <location>

    <location> 替換為創建資源組時使用的位置。

  2. 獲取翻譯服務的密鑰:

    az cognitiveservices account keys list --name smart-timer-translator \
    --resource-group smart-timer \
    --output table

    複製其中一個密鑰。

在應用程式中使用翻譯支援多種語言

在理想的世界中,你的整個應用程式應該能夠理解盡可能多的不同語言,從聆聽語音,到語言理解,再到用語音回應。這需要大量工作,因此翻譯服務可以加快應用程式的交付時間。

一個智能計時器架構,將日語翻譯成英語,然後用英語處理,再翻譯回日語

想像一下,你正在構建一個從頭到尾使用英語的智能計時器,理解英語語音並將其轉換為文字,用英語進行語言理解,構建英語回應並用英語語音回應。如果你想添加日語支持,你可以從將日語語音翻譯成英語文字開始,然後保持應用程式的核心不變,然後在回應文字之前將其翻譯成日語。這將使你能夠快速添加日語支持,並且你可以在以後擴展到提供完整的端到端日語支持。

💁 依賴機器翻譯的缺點是不同的語言和文化有不同的表達方式,因此翻譯可能不符合你期望的表達方式。

機器翻譯還為應用程式和設備提供了在創建用戶生成內容時進行翻譯的可能性。科幻小說經常出現“通用翻譯器”,這些設備可以將外星語言翻譯成(通常是)美式英語。如果忽略外星部分,這些設備更像是科學事實而非科學幻想。已經有應用程式和設備提供實時語音和文字翻譯,使用語音和翻譯服務的組合。

一個例子是 Microsoft Translator 手機應用,在這段影片中展示:

Microsoft Translator 實時功能演示

🎥 點擊上方圖片觀看影片

想像一下擁有這樣一個設備,特別是在旅行或與不懂語言的人互動時。在機場或醫院中擁有自動翻譯設備將提供急需的無障礙改進。

✅ 做一些研究:是否有任何商業上可用的翻譯物聯網設備?智能設備中是否內建了翻譯功能?

👽 雖然沒有真正的通用翻譯器可以讓我們與外星人交談,但 Microsoft Translator 支持克林貢語。Qapla’!

使用 AI 服務翻譯文字

你可以使用 AI 服務為你的智能計時器添加這種翻譯功能。

任務 - 使用 AI 服務翻譯文字

通過相關指南在你的物聯網設備上轉換翻譯文字:


🚀 挑戰

機器翻譯如何使其他物聯網應用受益,超越智能設備?想想翻譯如何幫助不同的方式,不僅僅是語音,還有文字。

課後測驗

課後測驗

回顧與自學

作業

構建一個通用翻譯器