Getting started with JavaScript SpeechToText control

22 Jul 202612 minutes to read

This section explains the steps required to create a simple Essential® JS 2 SpeechToText and demonstrates the basic usage of the SpeechToText control in a JavaScript application.

Prerequisites

Before getting started, ensure the following requirements are met:

Requirement Notes
Modern web browser Chrome, Firefox, Edge, or Safari — latest version recommended
Code editor Visual Studio Code is recommended
Local HTTP server Required to serve the application. Opening HTML files directly via file:// may block script loading in some browsers. VS Code Live Server extension is recommended
Syncfusion® license key Required from version 16.2.0.17 onwards. Refer to the Registering a license key section

Dependencies

The list of dependencies required to use the SpeechToText control in your application is given as follows:

|-- @syncfusion/ej2-inputs
    |-- @syncfusion/ej2-base
    |-- @syncfusion/ej2-buttons
    |-- @syncfusion/ej2-popups

For npm-based projects, install the packages using: npm install @syncfusion/ej2-inputs --save

Control Initialization

The JavaScript (ES5) SpeechToText control can be initialized by using either of the following ways.

  • Using local script and style references in a HTML page.
  • Using CDN link for script and style reference.

Using local script and style references in a HTML page

Step 1: Create an app folder quickstart for getting started.

Step 2: You can get the global scripts and styles from the Essential Studio JavaScript (Essential JS 2) build installed location.

Syntax:

Dependency Script: **(installed location)**\Syncfusion\Essential Studio\JavaScript - EJ2\{RELEASE_VERSION}\Web (Essential JS 2)\JavaScript\{DEPENDENCY_PACKAGE_NAME}\dist\global\{DEPENDENCY_PACKAGE_NAME}.min.js

Control Script: **(installed location)**\Syncfusion\Essential Studio\JavaScript - EJ2\{RELEASE_VERSION}\Web (Essential JS 2)\JavaScript\{PACKAGE_NAME}\dist\global\{PACKAGE_NAME}.min.js

Dependency Styles: **(installed location)**\Syncfusion\Essential Studio\JavaScript - EJ2\{RELEASE_VERSION}\Web (Essential JS 2)\JavaScript\{DEPENDENCY_PACKAGE_NAME}\styles\bootstrap5.3.css

Control Styles: **(installed location)**\Syncfusion\Essential Studio\JavaScript - EJ2\{RELEASE_VERSION}\Web (Essential JS 2)\JavaScript\{PACKAGE_NAME}\styles\bootstrap5.3.css

Example:

Dependency Script: C:\Program Files (x86)\Syncfusion\Essential Studio\JavaScript - EJ2\16.3.0.17\Web (Essential JS 2)\JavaScript\ej2-base\dist\global\ej2-base.min.js

Control Script: C:\Program Files (x86)\Syncfusion\Essential Studio\JavaScript - EJ2\16.3.0.17\Web (Essential JS 2)\JavaScript\ej2-inputs\dist\global\ej2-inputs.min.js

Dependency Styles: C:\Program Files (x86)\Syncfusion\Essential Studio\JavaScript - EJ2\16.3.0.17\Web (Essential JS 2)\JavaScript\ej2-base\styles\bootstrap5.3.css

Control Styles: C:\Program Files (x86)\Syncfusion\Essential Studio\JavaScript - EJ2\16.3.0.17\Web (Essential JS 2)\JavaScript\ej2-inputs\styles\bootstrap5.3.css

The below located script and style file contains all Syncfusion JavaScript (ES5) UI control resources in a single file.

Scripts: **(installed location)**\Syncfusion\Essential Studio\JavaScript - EJ2\{RELEASE_VERSION}\Web (Essential JS 2)\JavaScript\ej2\dist\ej2.min.js

Styles: **(installed location)**\Syncfusion\Essential Studio\JavaScript - EJ2\{RELEASE_VERSION}\Web (Essential JS 2)\JavaScript\ej2\bootstrap5.3.css

The Custom Resource Generator (CRG) is an online web tool, which can be used to generate the custom script and styles for a set of specific controls. This web tool is useful to combine the required control scripts and styles in a single file.

Step 3: Create a folder ~/quickstart/resources and copy/paste the global scripts and styles from the above installed location to ~/quickstart/resources/package corresponding package location.

Step 4: Create a HTML page (index.html) in ~/quickstart/index.html location and add the Essentials JS 2 script and style references.

<!DOCTYPE html>
  <html xmlns="http://www.w3.org/1999/xhtml">
       <head>
          <title>JavaScript (ES5)</title>
          <!-- JavaScript (ES5) SpeechToText's dependency style -->
          <link href="resources/base/bootstrap5.3.css" rel="stylesheet" type="text/css"/>
          <link href="resources/buttons/bootstrap5.3.css" rel="stylesheet" type="text/css"/>
          <link href="resources/popups/bootstrap5.3.css" rel="stylesheet" type="text/css"/>

          <!-- JavaScript (ES5) SpeechToText's control style -->
          <link href="resources/inputs/bootstrap5.3.css" rel="stylesheet" type="text/css"/>

          <!-- JavaScript (ES5) SpeechToText's dependency global script -->
          <script src="resources/base/ej2-base.min.js" type="text/javascript"></script>
          <script src="resources/buttons/ej2-buttons.min.js" type="text/javascript"></script>
          <script src="resources/popups/ej2-popups.min.js" type="text/javascript"></script>
          <script src="resources/splitbuttons/ej2-splitbuttons.min.js" type="text/javascript"></script>

          <!-- JavaScript (ES5) SpeechToText's control global script -->
          <script src="resources/inputs/ej2-inputs.min.js" type="text/javascript"></script>
       </head>
       <body>
       </body>
  </html>

Step 5: Now, add the SpeechToText element and initiate the JavaScript (ES5) SpeechToText control in the index.html by using following code

[src/index.html]

<!DOCTYPE html>
  <html xmlns="http://www.w3.org/1999/xhtml">
       <head>
          <title>JavaScript (ES5)</title>
          <!-- JavaScript (ES5) SpeechToText's dependency style -->
          <link href="resources/base/bootstrap5.3.css" rel="stylesheet" type="text/css"/>
          <link href="resources/buttons/bootstrap5.3.css" rel="stylesheet" type="text/css"/>
          <link href="resources/popups/bootstrap5.3.css" rel="stylesheet" type="text/css"/>

          <!-- JavaScript (ES5) SpeechToText's control style -->
          <link href="resources/inputs/bootstrap5.3.css" rel="stylesheet" type="text/css"/>

          <!-- JavaScript (ES5) SpeechToText's dependency global script -->
          <script src="resources/base/ej2-base.min.js" type="text/javascript"></script>
          <script src="resources/buttons/ej2-buttons.min.js" type="text/javascript"></script>
          <script src="resources/popups/ej2-popups.min.js" type="text/javascript"></script>
          <script src="resources/splitbuttons/ej2-splitbuttons.min.js" type="text/javascript"></script>

          <!-- JavaScript (ES5) SpeechToText's control global script -->
          <script src="resources/inputs/ej2-inputs.min.js" type="text/javascript"></script>
       </head>
       <body>
            <!-- Add the HTML <div> element  -->
            <div id="container">
                <button id="speechtotext_default"></button>
            </div>
            <script>
                // Initializes the SpeechToText control
                var speechToText = new ej.inputs.SpeechToText({});

                // Render initialized SpeechToText.
                speechToText.appendTo('#speechtotext_default');
            </script>
       </body>
  </html>

Step 6: Now, run the index.html in web browser, it will render the Syncfusion JavaScript (ES5) SpeechToText control.

Step 1: Create an app folder quickstart for getting started.

Step 2: The JavaScript (ES5) control’s global scripts and styles are already hosted in the below CDN link formats.

Syntax:

Dependency Script: https://cdn.syncfusion.com/ej2/{DEPENDENCY_PACKAGE_NAME}/dist/global/{PACKAGE_NAME}.min.js

Control Script: https://cdn.syncfusion.com/ej2/{PACKAGE_NAME}/dist/global/{PACKAGE_NAME}.min.js

Dependency Styles: https://cdn.syncfusion.com/ej2/{DEPENDENCY_PACKAGE_NAME}/styles/bootstrap5.3.css

Control Styles: https://cdn.syncfusion.com/ej2/{PACKAGE_NAME}/styles/bootstrap5.3.css

Example:

Script: https://cdn.syncfusion.com/ej2/ej2-inputs/dist/global/ej2-inputs.min.js

Styles: https://cdn.syncfusion.com/ej2/ej2-inputs/styles/bootstrap5.3.css

Step 3: Create a HTML page (index.html) in ~/quickstart/index.html location and add the CDN link references. Now, add the SpeechToText element and initiate the JavaScript (ES5) SpeechToText control in the index.html by using following code.

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">

<head>
  <script src="https://cdn.syncfusion.com/ej2/syncfusion-helper.js"></script>
  <title>JavaScript (ES5)</title>
  <!-- JavaScript (ES5) SpeechToText's dependency style -->
  <link href="https://cdn.syncfusion.com/ej2/34.1.29/ej2-base/styles/tailwind3.css" rel="stylesheet" type="text/css" />
  <link href="https://cdn.syncfusion.com/ej2/34.1.29/ej2-buttons/styles/tailwind3.css" rel="stylesheet" type="text/css" />
  <link href="https://cdn.syncfusion.com/ej2/34.1.29/ej2-popups/styles/tailwind3.css" rel="stylesheet" type="text/css" />

  <!-- JavaScript (ES5) SpeechToText's control style -->
  <link href="https://cdn.syncfusion.com/ej2/34.1.29/ej2-inputs/styles/tailwind3.css" rel="stylesheet" type="text/css" />

  <!-- JavaScript (ES5) SpeechToText's dependency global script -->
  <script src="https://cdn.syncfusion.com/ej2/34.1.29/ej2-base/dist/global/ej2-base.min.js" type="text/javascript"></script>
  <script src="https://cdn.syncfusion.com/ej2/34.1.29/ej2-buttons/dist/global/ej2-buttons.min.js" type="text/javascript"></script>
  <script src="https://cdn.syncfusion.com/ej2/34.1.29/ej2-popups/dist/global/ej2-popups.min.js" type="text/javascript"></script>
  <script src="https://cdn.syncfusion.com/ej2/34.1.29/ej2-splitbuttons/dist/global/ej2-splitbuttons.min.js" type="text/javascript"></script>

  <!-- JavaScript (ES5) SpeechToText's control global script -->
  <script src="https://cdn.syncfusion.com/ej2/34.1.29/ej2-inputs/dist/global/ej2-inputs.min.js" type="text/javascript"></script>

  <!--style reference from app-->
  <link href="index.css" rel="stylesheet" />
</head>

<body>
  <!--Element to render the SpeechToText control-->
  <div id="container">
    <button id="speechtotext_default"></button>
    <textarea id="textareaInst"></textarea>
  </div>
  <script>
    // Initializes the SpeechToText control
    var speechToText = new ej.inputs.SpeechToText({
      transcriptChanged: (args) => {
        textareaObj.value = args.transcript;
      }
    });

    // Render initialized SpeechToText.
    speechToText.appendTo('#speechtotext_default');

    var textareaObj = new ej.inputs.TextArea({
      rows: 5,
      cols: 50,
      value: '',
      resizeMode: 'None',
      placeholder: 'Transcribed text will be shown here...'
    });
    textareaObj.appendTo('#textareaInst');
  </script>
  <script>
    var ele = document.getElementById('container');
    if (ele) {
      ele.style.visibility = "visible";
    }
</script>
<style>
  #container {
    margin: 50px auto;
    gap: 20px;
    display: flex;
    flex-direction: column;
    align-items: center;
  }
</style>
</body>

</html>

Registering a license key

Syncfusion® Essential® JS 2 controls require a valid license key from version 16.2.0.17 onwards. Without a license key, a license validation message will appear in the browser console.

Step 1: Obtain your license key from the Syncfusion License Portal or from the licensing FAQ page.

Step 2: Register the license key in your index.js file before initializing any Syncfusion® control.

// Register Syncfusion license key
ej.base.registerLicense('YOUR_LICENSE_KEY_HERE');

Replace 'YOUR_LICENSE_KEY_HERE' with the actual license key obtained from your Syncfusion account. For more information, refer to the Syncfusion Licensing documentation.

Step 4: Now, run the index.html in web browser, it will render the Syncfusion JavaScript SpeechToText control.

The SpeechToText control requires an internet connection and using a browser that supports SpeechRecognition from the Web Speech API.

Troubleshooting

SpeechToText renders blank / does not load

  • Verify that the container element exists and has a valid ID.
  • Open the browser developer console (F12) and check for JavaScript errors.
  • Ensure all CDN script tags are loading successfully (check the Network tab for 4xx/5xx errors).

License validation warning in the console

  • Register your license key before instantiating any Syncfusion® control.

Scripts blocked when opening via file://

  • Serve the application through a local HTTP server.

CDN resources fail to load

  • Check your internet connection.
  • Confirm the version number in the CDN URLs matches a valid published release. See the Syncfusion CDN page for available versions.