Node.js के साथ Speech-to-Text API का इस्तेमाल करना

Node.js के साथ Speech-to-Text API का इस्तेमाल करना

इस कोडलैब (कोड बनाना सीखने के लिए ट्यूटोरियल) के बारे में जानकारी

subjectपिछली बार दिस॰ 15, 2022 को अपडेट किया गया
account_circleAnu Srivastava ने लिखा

1. खास जानकारी

Google Cloud Speech-to-Text API की मदद से डेवलपर, 120 भाषाओं और वैरिएंट में मौजूद ऑडियो को टेक्स्ट में बदल सकते हैं. इसके लिए, यह इस्तेमाल में आसान एपीआई में बेहतरीन न्यूरल नेटवर्क मॉडल लागू करता है.

इस कोडलैब में, Node.js के साथ Speech-to-Text API का इस्तेमाल किया जाएगा. इस लेख में, बोली को टेक्स्ट में बदलने के लिए, Cloud Speech-to-Text API पर ऑडियो फ़ाइल को अंग्रेज़ी और अन्य भाषाओं में भेजने का तरीका बताया गया है.

आपको इनके बारे में जानकारी मिलेगी

  • बोली से लिखाई में बदलने वाले एपीआई को चालू करने का तरीका
  • एपीआई अनुरोधों की पुष्टि करने का तरीका
  • Node.js के लिए Google Cloud क्लाइंट लाइब्रेरी इंस्टॉल करने का तरीका
  • ऑडियो फ़ाइलों को अंग्रेज़ी में ट्रांसक्राइब करने का तरीका
  • शब्द के टाइमस्टैंप की मदद से, ऑडियो फ़ाइलों को टेक्स्ट में बदलने का तरीका
  • ऑडियो फ़ाइलों को अलग-अलग भाषाओं में ट्रांसक्राइब करने का तरीका

आपको इन चीज़ों की ज़रूरत होगी

  • Google Cloud Platform प्रोजेक्ट
  • ब्राउज़र, जैसे कि Chrome या Firefox
  • JavaScript/Node.js का इस्तेमाल करना कितना आसान है

सर्वे

इस ट्यूटोरियल का इस्तेमाल कैसे किया जाएगा?

आप Node.js के साथ अपने अनुभव को क्या रेटिंग देंगे/देंगी?

Google Cloud Platform की सेवाएं इस्तेमाल करने का आपका अनुभव कैसा रहा?

2. सेटअप और ज़रूरी शर्तें

अपने हिसाब से एनवायरमेंट सेटअप करना

  1. Cloud Console में साइन इन करें और नया प्रोजेक्ट बनाएं या किसी मौजूदा प्रोजेक्ट का फिर से इस्तेमाल करें. (अगर आपके पास पहले से Gmail या G Suite खाता नहीं है, तो आपको एक खाता बनाना होगा.)

dMbN6g9RawQj_VXCSYpdYncY-DbaRzr2GbnwoV7jFf1u3avxJtmGPmKpMYgiaMH-qu80a_NJ9p2IIXFppYk8x3wyymZXavjglNLJJhuXieCem56H30hwXtd8PvXGpXJO9gEUDu3cZw

ci9Oe6PgnbNuSYlMyvbXF1JdQyiHoEgnhl4PlV_MFagm2ppzhueRkqX4eLjJllZco_2zCp0V0bpTupUSKji9KkQyWqj11pqit1K1faS1V6aFxLGQdkuzGp4rsQTan7F01iePL5DtqQ

8-tA_Lheyo8SscAVKrGii2coplQp2_D1Iosb2ViABY0UUO1A8cimXUu6Wf1R9zJIRExL5OB2j946aIiFtyKTzxDcNnuznmR45vZ2HMoK3o67jxuoUJCAnqvEX6NgPGFjCVNgASc-lg

प्रोजेक्ट आईडी याद रखें. यह Google Cloud के सभी प्रोजेक्ट के लिए एक खास नाम होता है (ऊपर दिया गया नाम पहले ही ले लिया गया है और यह आपके लिए काम नहीं करेगा!). बाद में, इस कोडलैब को इस कोडलैब में PROJECT_ID के तौर पर दिखाया जाएगा.

  1. इसके बाद, आपको Google Cloud के संसाधनों का इस्तेमाल करने के लिए, Cloud Console में बिलिंग की सुविधा चालू करनी होगी.

इस कोडलैब का इस्तेमाल करने पर, आपको ज़्यादा पैसे नहीं चुकाने होंगे. "साफ़ करना" सेक्शन में दिए गए निर्देशों का पालन करना न भूलें सेक्शन में, संसाधनों को बंद करने का तरीका बताया गया है. इससे इस ट्यूटोरियल के अलावा बिलिंग की सुविधा नहीं मिलेगी. Google Cloud के नए उपयोगकर्ता, 300USD डॉलर के मुफ़्त में आज़माने वाले प्रोग्राम में हिस्सा ले सकते हैं.

Cloud Shell शुरू करना

Google Cloud को आपके लैपटॉप से, कहीं से भी ऑपरेट किया जा सकता है. हालांकि, इस कोडलैब में Google Cloud Shell का इस्तेमाल किया जा रहा है. यह क्लाउड में चलने वाला कमांड लाइन एनवायरमेंट है.

Cloud Shell चालू करें

  1. Cloud Console में, Cloud Shell चालू करें H7JlbhKGHITmsxhQIcL प्रयोग पर क्लिक करें.

zlNW0HehB_AFW1qZ4AyebSQUdWm95n7TbnOr7UVm3j9dFcg6oWApJRlC0jnU1Mvb-IQp-trP1Px8xKNwt6o3pP6fyih947sEhOFI4IRF0W7WZk6hFqZDUGXQQXrw21GuMm2ecHrbzQ

अगर आपने Cloud Shell का इस्तेमाल पहले कभी नहीं किया है, तो आपको इसके बारे में जानकारी देने वाली एक इंटरमीडिएट स्क्रीन (पेज के फ़ोल्ड के नीचे) दिखेगी. अगर ऐसा है, तो जारी रखें पर क्लिक करें (यह आपको फिर कभी नहीं दिखेगा). एक बार इस्तेमाल होने वाली स्क्रीन कुछ इस तरह दिखती है:

kEPbNAo_w5C_pi9QvhFwWwky1cX8hr_xEMGWySNIoMCdi-Djx9AQRqWn-__DmEpC7vKgUtl-feTcv-wBxJ8NwzzAp7mY65-fi2LJo4twUoewT1SUjd6Y3h81RG3rKIkqhoVlFR-G7w

प्रावधान करने और Cloud Shell से कनेक्ट होने में कुछ ही समय लगेगा.

pTv5mEKzWMWp5VBrg2eGcuRPv9dLInPToS-mohlrqDASyYGWnZ_SwE-MzOWHe76ZdCSmw0kgWogSJv27lrQE8pvA5OD6P1I47nz8vrAdK7yR1NseZKJvcxAZrPb8wRxoqyTpD-gbhA

इस वर्चुअल मशीन में ऐसे सभी डेवलपमेंट टूल मौजूद हैं जिनकी आपको ज़रूरत पड़ेगी. यह पांच जीबी की स्थायी होम डायरेक्ट्री उपलब्ध कराता है और Google Cloud में चलता है. इससे नेटवर्क की परफ़ॉर्मेंस और पुष्टि करने की प्रक्रिया को बेहतर बनाने में मदद मिलती है. अगर सभी नहीं, तो इस कोडलैब में आपका बहुत सारा काम बस किसी ब्राउज़र या आपके Chromebook से किया जा सकता है.

Cloud Shell से कनेक्ट करने के बाद, आपको दिखेगा कि आपकी पुष्टि पहले ही हो चुकी है. साथ ही, यह प्रोजेक्ट पहले से ही आपके प्रोजेक्ट आईडी पर सेट है.

  1. यह पुष्टि करने के लिए Cloud Shell में नीचे दिया गया कमांड चलाएं कि आपकी पुष्टि हो गई है:
gcloud auth list

कमांड आउटपुट

 Credentialed Accounts
ACTIVE  ACCOUNT
*       <my_account>@<my_domain.com>

To set the active account, run:
    $ gcloud config set account `ACCOUNT`
gcloud config list project

कमांड आउटपुट

[core]
project = <PROJECT_ID>

अगर ऐसा नहीं है, तो आप इसे इस निर्देश की मदद से सेट कर सकते हैं:

gcloud config set project <PROJECT_ID>

कमांड आउटपुट

Updated property [core/project].

3. बोली को लिखाई में बदलने की सुविधा चालू करें

Speech-to-Text API का इस्तेमाल शुरू करने से पहले, आपको इस एपीआई को चालू करना होगा. Cloud Shell में इस कमांड का इस्तेमाल करके, एपीआई को चालू किया जा सकता है:

gcloud services enable speech.googleapis.com

4. एपीआई अनुरोधों की पुष्टि करें

Speech-to-Text API को अनुरोध भेजने के लिए, आपको किसी सेवा खाते का इस्तेमाल करना होगा. सेवा खाता आपके प्रोजेक्ट से जुड़ा होता है. Google क्लाइंट Node.js लाइब्रेरी इसका इस्तेमाल, Speech-to-Text API के अनुरोध करने के लिए करती है. किसी भी अन्य उपयोगकर्ता खाते की तरह, सेवा खाते को ईमेल पते के तौर पर दिखाया जाता है. इस सेक्शन में, आपको सेवा खाता बनाने के लिए Cloud SDK टूल का इस्तेमाल करना होगा. इसके बाद, ऐसे क्रेडेंशियल बनाने होंगे जिनकी पुष्टि, सेवा खाते के तौर पर करनी होगी.

सबसे पहले, अपने PROJECT_ID के साथ एक एनवायरमेंट वैरिएबल सेट करें, जिसका इस्तेमाल आप इस कोडलैब के दौरान करेंगे. अगर क्लाउड शेल का इस्तेमाल किया जा रहा है, तो यह आपके लिए सेट कर दिया जाएगा:

export GOOGLE_CLOUD_PROJECT=$(gcloud config get-value core/project)

इसके बाद, Speech-to-Text API को ऐक्सेस करने के लिए, नया सेवा खाता बनाएं. इसके लिए, इनका इस्तेमाल करें:

gcloud iam service-accounts create my-speech-to-text-sa \
 
--display-name "my speech-to-text codelab service account"

इसके बाद, वे क्रेडेंशियल बनाएं जिनका इस्तेमाल आपका Node.js कोड आपके नए सेवा खाते के तौर पर लॉगिन करने के लिए करेगा. ये क्रेडेंशियल बनाएं और यहां दिए गए निर्देश का इस्तेमाल करके, इसे JSON फ़ाइल ~/key.json के तौर पर सेव करें:

gcloud iam service-accounts keys create ~/key.json \
 
--iam-account  my-speech-to-text-sa@${GOOGLE_CLOUD_PROJECT}.iam.gserviceaccount.com

आखिर में, GOOGLE_APPLICATION_CREDENTIALS एनवायरमेंट वैरिएबल सेट करें, जिसका इस्तेमाल Speech-to-Text API Node.js लाइब्रेरी से अपने क्रेडेंशियल ढूंढने के लिए किया जाता है. इस वैरिएबल के बारे में अगले चरण में बताया गया है. एनवायरमेंट वैरिएबल को आपकी बनाई गई क्रेडेंशियल JSON फ़ाइल के पूरे पाथ पर सेट किया जाना चाहिए. इसके लिए, इनका इस्तेमाल करें:

export GOOGLE_APPLICATION_CREDENTIALS="/home/${USER}/key.json"

Speech-to-Text API की पुष्टि करने के बारे में ज़्यादा जानें.

5. Node.js के लिए Google Cloud Speech-to-Text API क्लाइंट लाइब्रेरी इंस्टॉल करें

सबसे पहले, एक ऐसा प्रोजेक्ट बनाएं जिसका इस्तेमाल आपको इस Speech-to-Text API लैब को चलाने के लिए करना है. इसके बाद, अपनी पसंद के फ़ोल्डर में एक नया Node.js पैकेज शुरू करें:

npm init

NPM, प्रोजेक्ट के कॉन्फ़िगरेशन के बारे में कई सवाल पूछता है. जैसे, नाम और वर्शन. हर सवाल के लिए, ENTER दबाकर डिफ़ॉल्ट वैल्यू स्वीकार करें. डिफ़ॉल्ट एंट्री पॉइंट, index.js नाम की फ़ाइल होती है.

इसके बाद, प्रोजेक्ट में Google Cloud Speech लाइब्रेरी इंस्टॉल करें:

npm install --save @google-cloud/speech

Google Cloud के लिए Node.js डेवलपमेंट सेट अप करने के तरीके के बारे में ज़्यादा जानकारी के लिए, कृपया सेटअप गाइड देखें.

अब आप Speech-to-Text API का इस्तेमाल करने के लिए तैयार हैं!

6. ऑडियो फ़ाइलों में बोले जा रहे शब्दों को टेक्स्ट में बदलें

इस सेक्शन में, पहले से रिकॉर्ड की गई ऑडियो फ़ाइल को अंग्रेज़ी में ट्रांसक्राइब किया जाएगा. ऑडियो फ़ाइल, Google Cloud Storage पर उपलब्ध है.

इसके अंदर मौजूद index.js फ़ाइल पर जाएं और कोड को इनसे बदलें:

// Imports the Google Cloud client library
const speech = require('@google-cloud/speech');

const client = new speech.SpeechClient();

/**
 * Calls the Speech-to-Text API on a demo audio file.
 */

async
function quickstart() {
// The path to the remote LINEAR16 file stored in Google Cloud Storage
 
const gcsUri = 'gs://cloud-samples-data/speech/brooklyn_bridge.raw';

 
// The audio file's encoding, sample rate in hertz, and BCP-47 language code
 
const audio = {
    uri
: gcsUri,
 
};
 
const config = {
    encoding
: 'LINEAR16',
    sampleRateHertz
: 16000,
    languageCode
: 'en-US',
 
};
 
const request = {
    audio
: audio,
    config
: config,
 
};

 
// Detects speech in the audio file
 
const [response] = await client.recognize(request);
 
const transcription = response.results
     
.map(result => result.alternatives[0].transcript)
     
.join('\n');
  console
.log(`Transcription: ${transcription}`);
}

quickstart
();

एक या दो मिनट में कोड को पढ़ें और देखें कि इसका इस्तेमाल ऑडियो फ़ाइल को ट्रांसक्राइब करने के लिए किया जा रहा है*.*

Encoding पैरामीटर से एपीआई को यह पता चलता है कि आपकी ऑडियो फ़ाइल के लिए, किस तरह की ऑडियो एन्कोडिंग का इस्तेमाल किया जा रहा है. .raw फ़ाइलों के लिए, Flac को कोड में बदलने का तरीका इस्तेमाल किया जाता है. ज़्यादा जानकारी के लिए, कोड में बदलने के तरीके के बारे में जानने के लिए दस्तावेज़ देखें.

RecognitionAudio ऑब्जेक्ट में, Cloud Storage में मौजूद हमारी ऑडियो फ़ाइल के यूआरआई या ऑडियो फ़ाइल के लोकल फ़ाइल पाथ में से, एपीआई को पास किया जा सकता है. यहां हम Cloud Storage यूआरआई का इस्तेमाल कर रहे हैं.

प्रोग्राम चलाएं:

node .

आपको यह आउटपुट दिखेगा:

how old is the Brooklyn Bridge

7. शब्द के टाइमस्टैंप की मदद से बोले जा रहे शब्दों को टेक्स्ट में बदलें

बोली को लिखाई में बदलने की सुविधा से, बोले जा रहे शब्दों को टेक्स्ट में बदलने वाले ऑडियो के लिए, टाइम ऑफ़सेट (टाइमस्टैंप) का पता चल सकता है. टाइम ऑफ़सेट, दिए गए ऑडियो में बोले गए हर शब्द का शुरुआती और आखिरी हिस्सा दिखाता है. टाइम ऑफ़सेट वैल्यू, ऑडियो की शुरुआत से लेकर 100 मि॰से॰ तक के समय की जानकारी दिखाती है.

इसके अंदर मौजूद index.js फ़ाइल पर जाएं और कोड को इनसे बदलें:

const speech = require('@google-cloud/speech');

const client = new speech.SpeechClient();

/**
 * Calls the Speech-to-Text API on a demo audio file.
 */

async
function quickstart() {
// The path to the remote LINEAR16 file stored in Google Cloud Storage
 
const gcsUri = 'gs://cloud-samples-data/speech/brooklyn_bridge.raw';

 
// The audio file's encoding, sample rate in hertz, and BCP-47 language code
 
const audio = {
    uri
: gcsUri,
 
};
 
const config = {
    encoding
: 'LINEAR16',
    sampleRateHertz
: 16000,
    languageCode
: 'en-US',
    enableWordTimeOffsets
: true,
 
};
 
const request = {
    audio
: audio,
    config
: config,
 
};

 
// Detects speech in the audio file
 
const [response] = await client.recognize(request);
  response
.results.forEach((result) => {
    result
.alternatives.forEach((alternative) => {
      console
.log(`Transcript: ${alternative.transcript}`);
      console
.log(`Word details:`);
      console
.log(` Word count ${alternative.words.length}`);
      alternative
.words.forEach((item) => {
        console
.log(`  ${item.word}`);
       
const s = parseInt(item.startTime.seconds) +
         item
.startTime.nanos/1000000000;
        console
.log(`   WordStartTime: ${s}s`);
       
const e = parseInt(item.endTime.seconds) +
        item
.endTime.nanos/1000000000;
        console
.log(`   WordEndTime: ${e}s`);
     
});
   
});
 
});
}

quickstart
();

एक या दो मिनट में कोड को पढ़ें और देखें कि इसका इस्तेमाल वर्ड टाइमस्टैंप* की मदद से, ऑडियो फ़ाइल को टेक्स्ट में बदलने के लिए किया जा रहा है.* EnableWordTimeOffsets पैरामीटर, एपीआई को टाइम ऑफ़सेट चालू करने के लिए कहता है. ज़्यादा जानकारी के लिए दस्तावेज़ देखें.

प्रोग्राम फिर से चलाएं:

node .

आपको यह आउटपुट दिखेगा:

Transcript: how old is the Brooklyn Bridge
Word details:
 
Word count 6
  how
   
WordStartTime: 0s
   
WordEndTime: 0.3s
  old
   
WordStartTime: 0.3s
   
WordEndTime: 0.6s
 
is
   
WordStartTime: 0.6s
   
WordEndTime: 0.8s
  the
   
WordStartTime: 0.8s
   
WordEndTime: 0.9s
 
Brooklyn
   
WordStartTime: 0.9s
   
WordEndTime: 1.1s
 
Bridge
   
WordStartTime: 1.1s
   
WordEndTime: 1.4s

8. अलग-अलग भाषाओं में बोले जा रहे शब्दों को टेक्स्ट में बदलें

Speech-to-Text API की मदद से, 100 से ज़्यादा भाषाओं में बोली को लेख में बदला जा सकता है! इस्तेमाल की जा सकने वाली भाषाओं की सूची यहां दी गई है.

इस सेक्शन में, पहले से रिकॉर्ड की गई ऑडियो फ़ाइल को फ़्रेंच में ट्रांसक्राइब किया जाएगा. ऑडियो फ़ाइल, Google Cloud Storage पर उपलब्ध है.

इसके अंदर मौजूद index.js फ़ाइल पर जाएं और कोड को इनसे बदलें:

// Imports the Google Cloud client library
const speech = require('@google-cloud/speech');

const client = new speech.SpeechClient();

/**
 * Calls the Speech-to-Text API on a demo audio file.
 */

async
function quickstart() {
// The path to the remote LINEAR16 file stored in Google Cloud Storage
 
const gcsUri = 'gs://cloud-samples-data/speech/corbeau_renard.flac';

 
// The audio file's encoding, sample rate in hertz, and BCP-47 language code
 
const audio = {
    uri
: gcsUri,
 
};
 
const config = {
    encoding
: 'FLAC',
    languageCode
: 'fr-FR',
 
};
 
const request = {
    audio
: audio,
    config
: config,
 
};

 
// Detects speech in the audio file
 
const [response] = await client.recognize(request);
 
const transcription = response.results
     
.map((result) => result.alternatives[0].transcript)
     
.join('\n');
  console
.log(`Transcription: ${transcription}`);
}

quickstart
();

अपना प्रोग्राम फिर से चलाएं और आपको नीचे दिया गया आउटपुट दिखेगा:

maître corbeau sur un arbre perché tenait en son bec un fromage

यह एक लोकप्रिय फ़्रेंच बच्चों की कहानी का वाक्य है.

इस्तेमाल की जा सकने वाली भाषाओं और भाषा कोड की पूरी सूची देखने के लिए, यहां दस्तावेज़ देखें.

9. बधाई हो!

आपने ऑडियो फ़ाइलों पर अलग-अलग तरह का ट्रांसक्रिप्शन करने के लिए, Node.js की मदद से बोली को लिखाई में बदलने की सुविधा का इस्तेमाल करना सीख लिया है!

व्यवस्थित करें

इस क्विकस्टार्ट में इस्तेमाल किए गए संसाधनों के लिए, आपके Google Cloud Platform खाते पर लगने वाले शुल्क से बचने के लिए:

  • Cloud Platform कंसोल पर जाएं.
  • वह प्रोजेक्ट चुनें जिसे शट डाउन करना है. इसके बाद, ‘मिटाएं' पर क्लिक करें सबसे ऊपर: यह प्रोजेक्ट को मिटाने के लिए शेड्यूल करता है.

ज़्यादा जानें

लाइसेंस

इस काम को क्रिएटिव कॉमंस एट्रिब्यूशन 2.0 जेनरिक लाइसेंस के तहत लाइसेंस मिला है.