Install the IBM Watson SDK for Node.js
- Begin by installing the IBM Watson Node.js SDK using npm. This library will allow you to access the Watson Speech to Text service.
npm install ibm-watson
Create the Speech to Text Service Instance
- Import the Watson SDK and create an instance of the Speech to Text service by requiring the library and initializing it with your API key and URL.
- Load environment variables to keep sensitive data secure, using something like `dotenv` if necessary.
require('dotenv').config();
const { IamAuthenticator } = require('ibm-watson/auth');
const SpeechToTextV1 = require('ibm-watson/speech-to-text/v1');
const speechToText = new SpeechToTextV1({
authenticator: new IamAuthenticator({
apikey: process.env.IBM_WATSON_API_KEY,
}),
serviceUrl: process.env.IBM_WATSON_URL,
});
Create a Function for Speech Recognition
- Create a function that will handle the audio processing. This function will take an audio file as an input and return the transcribed text.
- Specify necessary parameters such as content type, audio, and other optional settings like model or language customization.
const fs = require('fs');
function transcribeAudio(filePath) {
const recognizeParams = {
audio: fs.createReadStream(filePath),
contentType: 'audio/flac',
model: 'en-US_BroadbandModel', // Specify language model
smartFormatting: true, // Optional: Enable smart formatting
};
return speechToText.recognize(recognizeParams)
.then(response => {
return response.result;
})
.catch(err => {
console.error('Error:', err);
});
}
Invoke the Function and Handle Response
- Invoke the transcription function with the desired audio file. Handle the promise returned to access the transcribed text.
transcribeAudio('./path/to/audio.flac')
.then(transcription => {
console.log('Transcription:', JSON.stringify(transcription, null, 2));
});
Additional Considerations
- Ensure your audio files are aptly formatted and compatible with IBM Watson’s expectations. You might need to preprocess audio files for best results.
- Consider error handling and logging within your application, especially for promises, to gracefully manage any API failures or network issues.
- Review rate limits and quotas associated with your IBM Watson account to avoid unexpected costs.