Unity IBM Watson Translation, использующий пример сцены с правильными учетными данными, не работает, но также не отображает сообщение об ошибке - PullRequest
0 голосов
/ 13 апреля 2020

Я использую IBM Watson SDK для Unity (2019.2.11f1) для создания простой сцены перевода. Сначала я попробовал пример кода из живого перевода ibm watson, где сцена перевода уже есть. В основном вам нужно только добавить IAMKey и URL, который я сделал. Когда я начинаю (играть), сцена ничего не происходит. Я не получаю сообщение об ошибке, которое показывает, что ключ и URL верны, но ничего не происходит.

Кто-нибудь сталкивается с такими же проблемами и знает, что я делаю неправильно или я что-то упускаю?

Один из скриптов, который я попробовал:

namespace LangaugeTranslatorDemo
{
    public class LanguageTranslatorSample : MonoBehaviour
    {
        #region PLEASE SET THESE VARIABLES IN THE INSPECTOR
        [Space(10)]
        [Tooltip("The service URL (optional). This defaults to \"https://gateway.watsonplatform.net/langauge-translator/api\"")]
        [SerializeField]
        private string serviceUrl;
        [Tooltip("Text field to display the results of translation.")]
        public Text ResultsField;
        [Header("IAM Authentication")]
        [Tooltip("The IAM apikey.")]
        [SerializeField]
        private string iamApikey;
        [Header("Parameters")]
        // https://cloud.ibm.com/apidocs/language-translator#list-models
        [Tooltip("The translation model to use. See https://cloud.ibm.com/apidocs/language-translator#list-models.")]
        [SerializeField]
        private string translationModel;
        #endregion

        private LanguageTranslatorService languageTranslator;

        void Start()
        {
            if (string.IsNullOrEmpty(iamApikey))
                throw new IBMException("Please set the Language Translator iamApikey in the inspector.");
            if (string.IsNullOrEmpty(translationModel))
                throw new IBMException("Please set the translationModel in the inspector.");
            //  Start coroutine to create service
            StartCoroutine(CreateService());
        }

        private IEnumerator CreateService()
        {
            //  Create authenticator
            Authenticator languageTranslatorAuthenticator = new IamAuthenticator(
                apikey: iamApikey,
                url: serviceUrl
                );

            //  Yield here until we have IAM token data
            while (!languageTranslatorAuthenticator.CanAuthenticate())
                yield return null;

            //  Instantiate service
            languageTranslator = new LanguageTranslatorService(
                versionDate: "2019-09-16", 
                authenticator: languageTranslatorAuthenticator
                );
        }

        //  Call this method from ExampleStreaming
        public void Translate(string text)
        {
            //  Array of text to translate
            List<string> translateText = new List<string>();
            translateText.Add(text);

            //  Call to the service
            languageTranslator.Translate(OnTranslate, translateText, translationModel);
            Translate("Hello");
        }

        //  OnTranslate handler
        private void OnTranslate(DetailedResponse<TranslationResult> response, IBMError error)
        {
            //  Populate text field with TranslationOutput
            ResultsField.text = response.Result.Translations[0]._Translation;
        }
    }
}

1 Ответ

0 голосов
/ 28 апреля 2020

Вам понадобится apikey и сервисный URL для переводчика речи и текста и языка. Вы можете добавить учетные данные в SpeechToTextSample и LangaugeTranslatorSample в инспекторе.

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...