IBM Watson SDK使用教程
前言
最近有小夥伴讓我幫忙看看如何在Unity中使用IBM Watson SDK,我看了一些基礎教學視頻把如何接入和簡單的使用過程記錄了一下,作爲學習筆記,希望能幫助到大家。
使用步驟:
1. 註冊並從IBM Cloud官網獲取授權資料
首先,打開IBM Cloud 的註冊網站登錄或者註冊一個賬號,這個就此略過。
註冊完之後,登錄到自己的主界面,點開左側的菜單欄,找到“Watson”選項,單擊進去
到了下一個界面,可以看到IBM Watson的一些概述。我們接着找到左邊菜單欄的“Watson服務”下面的瀏覽服務
然後你能看到我們所能夠選擇的Watson所提供的服務。選中其中一個我們需要的服務,在這裏我選擇了Language Translator服務來演示。顧名思義,這項服務是可以幫助我們在Unity中實現文字翻譯的功能。
修改好了初始設置之後,點擊右下角的創建即可看到我們項目已經創建完成並且提供給了我們接下來在Unity中使用該SDK會用到的URL和API祕鑰屬性
2.接入SDK到Unity中
首先,創建一個Unity項目或者打開你想接入的項目,這裏我是用來演示的所以就新創了一個Unity 項目。然後我直接從AssetStore上搜索並導入了IBM Watson SDK。
同時我創建了一個文本文檔用來做最基本的翻譯演示。然後,創建一個空物體,命名爲“LanguageTranslator”併爲其添加一個腳本,叫“LanguageTranslatorScript”。
如果你跟着我做到這步,你的場景應該如下圖所示:
之後基本上就是存代碼上的東西啦。打開我們的腳本文件進行編輯,代碼在下面:
看代碼之前,有幾個坑提前說一下:
- 官網教程展示的還是v2版的LanguageTranslator但是現在其實已經開始使用了v3版本的我就直接拿v3版本的進行演示。使用區別就是v3版的構造函數還需要穿入一個Version函數,我取的就是IBM Watson幫我產生的祕鑰的日期
- 另外一個坑就是創建Credentials的時候,網絡上很多教程都是直接給Username和Password賦值就可以成功。然而這時候你發現,你的IBM Watson上自動產生的協議裏面根本沒有這兩個屬性,只給了我們Api祕鑰和URL。這個時候怎麼辦呢? 我翻了不少博客終於找到很多答案,有的說用TokenOptions之類的,但是都沒有通過測試,目前只有我下面寫的這一種方法成功的獲取到了翻譯:就是在Username和Password這兩個屬性裏面直接寫入"apikey"和你實際的Api祕鑰值
using System.Collections;
using System.Collections.Generic;
using IBM.Watson.DeveloperCloud.Connection;
using IBM.Watson.DeveloperCloud.Logging;
using IBM.Watson.DeveloperCloud.Services.LanguageTranslator.v3;
using IBM.Watson.DeveloperCloud.Utilities;
using UnityEngine;
using UnityEngine.UI;
public class LanguageTranslatorScript : MonoBehaviour
{
public Text txtResponse;
private LanguageTranslator _translator;
private string _translatorModel = "en-zh";
private string content = "I love you";
void Start()
{
//首先創建一個認證信息類
Credentials languageTranslatorCredentials = new Credentials()
{
//這裏有個坑,要注意:新版的Watson Service 已經傾向使用apikey而不再是username 和 password
Username = "apikey", //用戶名輸入"apikey"
Password = "nN0D0alLdjBCDDexj9K3z3_mICPfh3eawcG3UoVIExul" //密碼則是你的api祕鑰
};
//v3版的LanguageTranslator現在除了Credentials之外還需要一個版本信息,這裏我填的就是我IBM Watson上看到的安全協議產生日期
_translator = new LanguageTranslator("2018-12-25", languageTranslatorCredentials);
//之後直接調用獲取翻譯方法:注意要創建相對應的回調,具體格式可以自行F12到定義裏去看
_translator.GetTranslation(OnComplete, OnFail, content, _translatorModel);
}
//翻譯完成回調
private void OnComplete(Translations response, Dictionary<string, object> customData)
{
Debug.Log(response);
txtResponse.text = response.translations[0].translation;
}
//翻譯失敗回調
private void OnFail(RESTConnector.Error error, Dictionary<string, object> customData)
{
Debug.Log(error.ToString());
}
}
趟過代碼裏面的幾個坑,跑起來就可以把"I love you"轉成“我愛你”啦,上圖:
到這裏,IBM Watson SDK的接入Demo就算是完成了。這裏頭當然還有很多可以可改進的地方,比如能實時輸入然後實時翻譯等。又或者把翻譯和語音輸入服務一起用,實時翻譯語音輸入等等。那些如果我有空玩的時候再更新上來吧。希望這個簡單的教程能夠幫到大家!