2017-06-20 67 views

回答

2

到文本的服务没有找到关键字的讲话。要查找关键字,您需要输入最终的文本输出并将其发送到Alchemy Language服务。 Natural Language Understanding服务仍然被抽象为Watson Unity SDK,但最终将取代炼金术语言。

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)); 
} 

编辑1

Natural Language Understanding被抽象的托特他沃森统一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

Speech to Text服务* does *支持关键字发现,但我认为Unity SDK可能还没有。 –

+0

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