Alexa Skill 結合 Auth0

在上一篇Alexa Skills Kit 新手教學介紹了怎麼建立一個簡單的 Alexa Skill 的範例。若有考慮到要將 Skill 產品化應該都會遇到一些問題,就是當我對 Echo 或 APP 說了一指令希望它去打開臥室的門,它要怎麼知道該使用者的臥室是哪個裝置進而讓它去執行開門的動作呢?這時候我們需要借助Account Linking這個功能,這是在使用者啟用這個技能時,需要使用者授權讓該技能擁有存取使用者資訊的功能。當我們能存取使用者的一些資訊後,就可以去查詢使用者的臥室是哪個裝置,進而去控制裝置的動作。而Account Linking是使用OAuth 2.0協定來進行的,你當然可以選擇自己建立 OAuth Server 或者使用其他第三方服務。而本文將使用 Auth0 結合 Alexa Skill。

Read More

Share Comments

Alexa Skills Kit 新手教學

Amazon 於 2014 年推出了 Alexa 智慧語音助手,就目前來說 Alexa 應該已經是家喻戶曉的東西了。透過 Amazon Echo 搭配 Alexa 就能讓冷冰冰的機器能與使用者對話,而要做到這樣的事情在其背後是需要龐大的架構來支撐的。在整個 Alexa 生態系中有兩個重要的東西,第一個是 Alexa Voice Service (AVS),它是讓機器與人溝通重要的中樞神經,所有接收到的語音檔案都會傳至 AVS 加以解析並判斷,再回覆給使用者。第二個是 Alexa Skills Kit (ASK),它是讓人能有客製化的語音命令,透過 ASK 能控制設備或更多的功能 (像是訂購 pizza 等),藉由 ASK 來強壯整個 Alexa 的生態系。所以,本文會先簡單介紹 AVS 與 ASK,在以一個簡單的教學說明如何客製化一個自己的技能。

Read More

Share Comments

更換 AVS Device SDK 的喚醒詞

在 AVS Device SDK 中有提供 Wake Word Engine (WWE) 方便讓開發者可以換成自己的喚醒詞,而官方提供的範例預設使用了Sensory所訓練出來的 Alexa 模型。但Sensory官方文件說明它是有 120 天的使用限制的,若要當作產品使用則需要與他們聯絡,且Sensory目前也僅提供 Alexa 這個喚醒詞,但 Alexa 這個詞因為發音不正確的關係實在有夠難喚醒的。因此,本文將Sensory換成Snowboy並且更改由Snowboy提供的其他喚醒詞。

Read More

Share Comments

在 Raspberry Pi 上使用 AVS Device SDK 實現智慧音箱

Amazon 提供了 Alexa Voice Service(AVS) 的服務,希望能讓開發者可以整合 Alexa 至他們的產品之中,並且讓任何連接的設備帶來語音的便利性。Amazon 提供了 AVS Device SDK 讓開發人員可以快速且簡單的建立自己的 Alexa 產品,而 AVS Device SDK 是一個基於 C++ 的 Library,其中包含了語音的捕捉、聲音的處理與通訊等功能,而每個元件都提供 API 給開發者使用與客製化整合至自己的產品中。

Read More

Share Comments

使用 Kustomize 管理 Kubernetes 配置檔

Kustomize 是 SIG-CLI 的一個子項目,其目的是為 Kubernetes 提供一種可以重複使用配置檔的管理工具。舉例來說,我們今天開發了一個前端應用 v1 並且撰寫了一個 Deployment、Service 以及 ConfigMap 的 YAML,接著透過kubectl指令將其部署在 Kubernetes 環境之中。但之後此前端應用經過開發與升級至 v2 並需要將其部署至 Kubernetes 環境,但其中 Kubernetes 的配置檔有些參數與 v1 略有不同。此時,我們通常會將 v1 所撰寫的 YAML 複製一份並修改部分內容,再透過kubectl部署到 Kubernetes 環境之中。但這樣的情況下我們同時保存兩份 YAML 且其他人也無法輕易地看出兩份 YAML 之間的配置有哪些不同。而 Kustomize 就可以很好的幫我們解決這些問題。

Read More

Share Comments

使用 Helm 在 Kubernetes 上部署 Harbor

在之前已經介紹過 Harbor,且是在實體機上的透過docker-compose簡單且快速的部署 Harbor。而本篇將介紹如何透過 Kubernetes Helm 來部署 Harbor。而官方在早期有提供 YAML 來直接部署 Harbor 在 Kubernetes 之上,且 Harbor 的版本為 v1.2。但後來官方不建議直接使用 YAML 來部署 Harbor,而是透過 Helm 來部署。因此本文將介紹如何用 Kubernetes Helm 來部署 Harbor 在 Kubernetes 上。

Read More

Share Comments

Hexo 新增 Color Quote

最近看到 hexo-theme-minos 提供了一個非常漂亮的 Color Quote 功能,如下面所示。因此,想把它加入到自己的部落格之中。而開始從它的 Github 中搜尋它的原始碼,發現原來它是利用 Hexo 提供的 extend tag 功能,而它的使用方法很簡單,使用者只要註冊了一個 extend tag,之後再文章中就可以使用此 extend tag,但是 extend tag 僅限於使用 Hexo 的語法;而不是原本 Markdown 的語法。

Read More

Share Comments

企業等級的 Docker Registry Harbor

Harbor 是一個企業級 Registry 伺服器用於儲存和分散 Docker Image 的,透過新增一些企業常用的功能,例如:安全性、身分驗證和管理等功能擴展了開源的 Docker Distribution。作為一個企業級的私有 Registry 伺服器,Harbor 提供了更好的效能與安全性。Harbor 支援安裝多個 Registry 並將 Image 在多個 Registry 做 replicated。除此之外,Harbor 亦提供了高級的安全性功能,像是用戶管理(user managment),存取控制(access control)和活動審核(activity auditing)。

Read More

Share Comments

基於 Kubernetes 的 Serverless 框架 Kubeless

Kubeless 是一個基於 Kubernetes 的無伺服器(Serverless)框架,由 Go 語言所撰寫而成。Kubeless 利用 Kubernetes 資源提供自動擴展(auto-scaling)、API 路由、監控以及故障排除等功能。

而 Kubeless 為什麼能在如此多的無伺服器(Serverless)框架中脫穎而出呢?這是因為 Kubeless 使用 Kubernetes 的 CRD(Custom Resource Definition) 來建立 Function,而每個 Function 建立時都會是一個 Deployment,並同時暴露(expose)出一個 Service,透過 Kubernetes 的好處省去開發者開發上的麻煩。而 Kubeless 僅需執行一個in-cluster的 Controller 來監控這些 CRD,並按需求啟動與執行。

Read More

Share Comments

NVIDIA Docker v2 安裝

2017 年 11 月 NVIDIA 已將 NVIDIA Docker v2 的版本合併(merged)至 NVIDIA/nvidia-docker 的 repository,這意味著 v2 會逐漸取代 v1。

而根據官方的說明,v1 與 v2 差異如下:

  • 不需要封裝的 Docker CLI 以及獨立的背景程式(daemon)
  • GPU 的隔離現在透過環境變數NVIDIA_VISIBLE_DEVICES
  • 任何的 Docker image 都可以啟動 GPU 支援,不只是基於官方的 CUDA image
  • Ubuntu 與 CentOS 都有 Package repositories,意味著安裝更為簡單與方便
  • 基於libnvidia-container來重新實現

而本文將介紹如何使用 NVIDIA Docker v2 來讓容器使用 GPU。

Read More

Share Comments