本土语音到文本
我正在尝试使用Watson Speech to Text API在反应原生应用程序中录制音频,然后将音频转换为文本。
我很难解决这个问题,任何帮助真的不胜感激。
我可以获取录制的音频,但我无法确定如何将文件发送到后端或直接发送到前端的Watson API。
用于节点的Watson API云库具有以下功能:
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'));
任何想法如何在录制音频路径的前端做到这一切。 任何解决方法? 谢谢!
React Native支持开箱即用的websockets:https://facebook.github.io/react-native/docs/network.html
Watson API支持将Websocket作为其Speech to Text API的一部分:https://www.ibm.com/watson/developercloud/doc/speech-to-text/websockets.shtml(请参见“发送音频并接收识别结果” websocket.send(blob)
这似乎是一个合理的解决方案。
我已经组建了一个使用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()
链接地址: http://www.djcxy.com/p/5881.html