Search Unity

  1. We are migrating the Unity Forums to Unity Discussions. On July 12, the Unity Forums will become read-only. On July 15, Unity Discussions will become read-only until July 18, when the new design and the migrated forum contents will go live. Read our full announcement for more information and let us know if you have any questions.

Question I want to execute JavaSctipt code defined outside of Canvas from the Unity side.

Discussion in 'Web' started by K_Kuriyama, Jun 2, 2023.

  1. K_Kuriyama

    K_Kuriyama

    Joined:
    Jul 4, 2020
    Posts:
    70
    I want to use Web Speech API, but on Window, MacOS and Android, I succeeded to speak with Web Speech API by writing SpeechSynthesisUtterance in .jslib file. However, only iOS did not output.
    After some tests, I found that SpeechSynthesisUtterance written in HTML JavaScript (non-Emscripten, e.g. main.js) works correctly.

    Is there any way to execute the function in the HTML-side JavaScript (***.js) from the Unity side?
    Also, I would like to know if there is any other way to dynamically read out the speech.
     
  2. K_Kuriyama

    K_Kuriyama

    Joined:
    Jul 4, 2020
    Posts:
    70
    Self resolved.
    Adding the following code to the HTML side seems to enable speech on iOS.



    Code (CSharp):
    1. canvas.addEventListener('touchend', function() {
    2.         // ダミー音声合成を実行
    3.         var speechSynthesis = window.speechSynthesis;
    4.         var utterance = new SpeechSynthesisUtterance('');
    5.         utterance.volume = 0; // 音量を0に設定
    6.         speechSynthesis.speak(utterance);
    7.       });

    I used this as a reference.

    http://fogbugz.unity3d.com/default.asp?1259405_68ph0a2cmn0aupuj
     
  3. unityruba

    unityruba

    Unity Technologies

    Joined:
    Nov 6, 2020
    Posts:
    278
  4. K_Kuriyama

    K_Kuriyama

    Joined:
    Jul 4, 2020
    Posts:
    70
    @unityruba

    Only the usual jslib description is given there, but it was necessary to understand the iOS Safari specifications when using the voice function on iOS.