2

我正在尝试使用 Watson Speech to Text API 在 react-native 应用程序中录制音频,然后将音频转换为文本。

我很难弄清楚这一点,任何帮助都将不胜感激。

我可以录制音频,但我无法弄清楚如何将文件发送到后端,或者直接发送到前端的 Watson API。

用于节点的 Watson API Cloud 库具有以下功能:

      var SpeechToTextV1 = require('watson-developer-cloud/speech-to-text/v1');
      var fs = require('fs');

      var speech_to_text = new SpeechToTextV1({
      username: '<username>',
      password: '<password>'
      });

        var params = {
        // From file
        audio: fs.createReadStream('./resources/speech.wav'),
        content_type: 'audio/l16; rate=44100'
         };

       speech_to_text.recognize(params, function(err, res) {
       if (err)
       console.log(err);
       else
      console.log(JSON.stringify(res, null, 2));
       });

不幸的是,我无法在前端访问“fs”来创建 Streams。该文件保存在客户端前端的隐藏文件夹中(我也有路径)

最终我想以某种方式创建一个流,这样我就可以发送音频,以便自动转换为文本并降低速度。

像这样:

   fs.createReadStream('./resources/speech.wav')
   .pipe(speech_to_text.createRecognizeStream({ content_type:       'audio/l16; rate=44100' }))
  .pipe(fs.createWriteStream('./transcription.txt'));

知道如何在前端使用录制的音频的路径来完成所有这些工作。有什么解决办法吗?谢谢!

4

2 回答 2

2

React Native 支持开箱即用的 websocket:https ://facebook.github.io/react-native/docs/network.html

Watson API 支持 websockets 作为其 Speech to Text API 的一部分:https ://www.ibm.com/watson/developercloud/doc/speech-to-text/websockets.shtml (请参阅“发送音频和接收识别结果”部分websocket.send(blob)

这似乎是一个合理的解决方案。

于 2017-01-28T16:39:05.737 回答
1

我已经组装了一个使用 watson-developer-cloud/swift-sdk 的本机模块,并实现了语音到文本。

https://github.com/pwcremin/react-native-watson

您可以参考我的代码以获取如何实现它的示例,或者只使用该模块。

react-native-watson 模块使用麦克风并为您处理流媒体:

import {SpeechToText} from 'react-native-watson';

SpeechToText.initialize("username", "password")

// will transcribe microphone audio
SpeechToText.startStreaming((error, text) =>
        {
            console.log(text)
        })

SpeechToText.stopStreaming()
于 2017-11-24T21:21:33.947 回答