2017-06-20 11 views
1

私はWatson unity SDKをダウンロードして、写真のように設定して動作させています。 私の質問は、どのようにキーワードスポッティングを追加するのですか? 私はこの質問を読んだFor Watson's Speech-To-Text Unity SDK, how can you specify keywords? しかし、私はSendStart関数を見つけることはできません。Watsonキーワードスポッティングユニティ

enter image description here

+0

私はWatsonをUnityに接続するのを楽しんでいません。/ – Fattie

答えて

2

テキストサービスへのスピーチは、キーワードを見つけることができません。キーワードを見つけるには、最終的なテキスト出力をしてAlchemy Languageサービスに送信する必要があります。 Natural Language UnderstandingサービスはまだWatson Unity SDKに抽象化されていますが、最終的にAlchemy言語に置き換わります。

private AlchemyAPI m_AlchemyAPI = new AlchemyAPI(); 

private void FindKeywords(string speechToTextFinalResponse) 
{ 
    if (!m_AlchemyAPI.ExtractKeywords(OnExtractKeywords, speechToTextFinalResponse)) 
     Log.Debug("ExampleAlchemyLanguage", "Failed to get keywords."); 
} 

void OnExtractKeywords(KeywordData keywordData, string data) 
{ 
    Log.Debug("ExampleAlchemyLanguage", "GetKeywordsResult: {0}", JsonUtility.ToJson(resp)); 
} 

EDIT 1

Natural Language UnderstandingはTOT彼ワトソンユニティSDKに抽象化されています。

NaturalLanguageUnderstanding m_NaturalLanguageUnderstanding = new NaturalLanguageUnderstanding(); 
private static fsSerializer sm_Serializer = new fsSerializer(); 

private void FindKeywords(string speechToTextFinalResponse) 
{ 
    Parameters parameters = new Parameters() 
    { 
    text = speechToTextFinalResponse, 
    return_analyzed_text = true, 
    language = "en", 
    features = new Features() 
    { 
     entities = new EntitiesOptions() 
     { 
      limit = 50, 
      sentiment = true, 
      emotion = true, 
     }, 
     keywords = new KeywordsOptions() 
     { 
      limit = 50, 
      sentiment = true, 
      emotion = true 
     } 
    } 

    if (!m_NaturalLanguageUnderstanding.Analyze(OnAnalyze, parameters)) 
     Log.Debug("ExampleNaturalLanguageUnderstanding", "Failed to analyze."); 
} 

private void OnAnalyze(AnalysisResults resp, string customData) 
{ 
    fsData data = null; 
    sm_Serializer.TrySerialize(resp, out data).AssertSuccess(); 
    Log.Debug("ExampleNaturalLanguageUnderstanding", "AnalysisResults: {0}", data.ToString()); 
} 

EDIT 2 申し訳ありませんが、私はスピーチのテキストは、キーワードスポッティングを行う能力を持っていた実現しませんでした。私にそれを指摘してくれたNathanに感謝します!この機能をUnity SDKのSpeech to Textの将来のリリースに追加しました。これは、ワトソンユニティSDK 1.0.0のために次のようになります。

void Start() 
{ 
    // Create credential and instantiate service 
    Credentials credentials = new Credentials(_username, _password, _url); 
    _speechToText = new SpeechToText(credentials); 

    // Add keywords 
    List<string> keywords = new List<string>(); 
    keywords.Add("speech"); 
    _speechToText.KeywordsThreshold = 0.5f; 
    _speechToText.Keywords = keywords.ToArray(); 
    _speechToText.Recognize(_audioClip, HandleOnRecognize); 
} 


private void HandleOnRecognize(SpeechRecognitionEvent result) 
{ 
    if (result != null && result.results.Length > 0) 
    { 
     foreach (var res in result.results) 
     { 
      foreach (var alt in res.alternatives) 
      { 
       string text = alt.transcript; 
       Log.Debug("ExampleSpeechToText", string.Format("{0} ({1}, {2:0.00})\n", text, res.final ? "Final" : "Interim", alt.confidence)); 

       if (res.final) 
        _recognizeTested = true; 
      } 

      if (res.keywords_result != null && res.keywords_result.keyword != null) 
      { 
       foreach (var keyword in res.keywords_result.keyword) 
       { 
        Log.Debug("ExampleSpeechToText", "keyword: {0}, confidence: {1}, start time: {2}, end time: {3}", keyword.normalized_text, keyword.confidence, keyword.start_time, keyword.end_time); 
       } 
      } 
     } 
    } 
} 

現在あなたはこのリリースでは(ウィジェット、設定、など)の機能破壊変更され、より高いレベルのすべてを持っているリファクタリングブランチhere.を見つけることができます除去された。

+1

The Speech to Textサービス*はキーワードスポッティングをサポートしていますが、Unity SDKはまだないと思います。 –

+0

https://github.com/watson-developer-cloud/unity-sdk/issues/243 – taj