6. Amazon Alexa 기술을 일본어화

연재 기사



전후 관계가 있기 때문에 차례로 읽을 수 있으면 알기 쉬워지고 있습니다.

1. Amazon Alexa와 Fire TV에서 Hello World를 사용해보십시오 - Qiita
2. Amazon Alexa에서 음성에서 인수 받기 - Qiita
3. Amazon Alexa의 Custom Slot Types 설정 - Qiita
4. Amazon Alexa에서 Heroku의 Rails로 연결 - Qiita
5. Amazon Alexa에서 대화 계속하기 (세션 인계) - Qiita
6. Amazon Alexa 기술을 일본어로 만들기 - Qiita
7. 자작한 일본어의 Alexa Skill을 Echo dot로 움직이기 - Qiita

소개



요 전날 마침내 에코의 국내 출시가 발표되었습니다.

Amazon | Echo Dot - 스마트 스피커

이에 따라 Alexa 앱도 일본어화가 가능해졌습니다.
그래서 전회까지 만든 Hello world를 일본어화하고 싶습니다.

Amazon Alexa에서 대화 계속하기 (세션 인계) - Qiita

스킬을 일본어화



우선 개발자 포털에서 일본어화한 스킬을 선택합니다.

아마존 앱 개발자 포털

다음으로 스킬 정보를 일본어화합니다.
위의 탭에서 '새 언어 추가'를 선택하여 일본어를 추가합니다.
스킬명, 호출명을 「안녕하세요」로 변경합니다.
앱의 호출명도 제대로 일본어 대응하고 있네요.



그런 다음 대화 모델을 일본어화합니다.
인텐트 스키마는 영어와 같은 것을 입력합니다.
{
  "intents": [
    {
      "intent": "AMAZON.CancelIntent"
    },
    {
      "intent": "AMAZON.HelpIntent"
    },
    {
      "intent": "AMAZON.StopIntent"
    },
    {
      "slots": [
        {
          "name": "firstName",
          "type": "JP_FIRST_NAME"
        }
      ],
      "intent": "HelloWorldIntent"
    },
    {
      "intent": "HowAreYouIntent"
    }
  ]
}

사용자 정의 슬롯 유형도 JP_FIRST_NAME로 적절한 값을 입력하십시오.
나는 「타로」 「하나코」로서 등록했습니다.

Amazon Alexa의 Custom Slot Types 설정 - Qiita

사실 국내 발매에 따라 아마존이 준비한 일본인의 이름에 대응한 내장 슬롯이 추가되었습니다.

슬롯 타입 참조 | Custom Skills

이것을 이용하면 보다 많은 이름에 대응하는 것이 가능합니다.
이번에는 이야기를 단순화하기 위해 영어판을 그대로 일본어화하기로 합니다.

마지막으로 샘플 발화를 설정합니다.
HelloWorldIntent こんにちは私の名前は {firstName} です
HowAreYouIntent 良いよ

주의점
슬롯이 들어간다 {firstName} 의 전후에 반각의 스페이스가 필요합니다.



응답 측의 Rails 일본어



그런 다음 Alexa의 요청에 대해 Rails 측에서 일본어로 응답하도록 수정합니다.
Alexa의 요청에는 언어를 판정한다.
최종 Rails 측의 코드는 아래와 같습니다.locale 로 언어 판정을 하고 응답하는 메시지를 분기하고 있습니다.

#app/controllers/talks_controller.rb
class TalksController < ApplicationController
  protect_from_forgery with: :null_session

  def create
    request = AlexaRubykit::build_request(params)
    response = AlexaRubykit::Response.new
    session_end = true
    case request.name
      when 'HelloWorldIntent'
        first_name = request.slots[:firstName][:value]
        message = if request.locale == 'ja-JP'
                    "こんにちは#{first_name}さん。ご機嫌いかがですか?"
                  else
                    "Hello world! #{first_name}. How are you?"
                  end
        response.add_speech(message)
        response.add_session_attribute :first_name, first_name
        session_end = false
      when 'HowAreYouIntent'
        first_name = request.session.attributes[:first_name]
        message = if request.locale == 'ja-JP'
                    "いいですね!#{first_name}さん。"
                  else
                    "That's good, #{first_name}."
                  end
        response.add_speech(message)
    end
    render json: response.build_response(session_end)
  end
end


Alexa에서 일본어로 말하기



사실, FireTV는 아직 일본어로 Alexa 메뉴가 존재하지 않습니다.
다음 주 Echo 배송까지는 Alexa 앱에서만 확인할 수 없을 것 같습니다.
'테스트'에서 발화하는 곳에 '안녕하세요 내 이름은 타로입니다'라고 입력하고 '안녕하세요 호출'을 누르면 오른쪽 하단에 일본어로 응답이 돌아옵니다.



요약



Echo가 없기 때문에 일본어로의 발화의 인식률이 높은 것인가? 등 신경이 쓰이는 곳은 있지만, 일본어화의 설정은 매우 심플했습니다.
벤더로부터 벌써 Alexa 대응이 많이 발표되고 있기 때문에 향후 분위기가 올 것을 기대할 수 있네요.
Echo가 도착하면 발화하여 동영상을 찍고 싶습니다.

Let's enjoy Alexa.

좋은 웹페이지 즐겨찾기