Используя небольшой узел express сервер, я пытаюсь прочитать, а затем отправить поток mp3 в aws транскрибировать. Поскольку это удаленный URL, я использую http.get, однако получаю следующую ошибку:
Error [ERR_STREAM_CANNOT_PIPE]: Cannot pipe, not readable at ServerResponse.pipe (_http_outgoing.js:821:22)
Что я делаю не так с потоковым каналом? Без добавления .pipe(transcribeStream);
я могу воспроизводить аудиопоток, но конечной целью является воспроизведение аудиопотока и его передача для транскрибирования потока.
Я пытаюсь использовать следующее: репо
Ниже приведен мой пример файла сценария
file: stream-from-microphone.ts
import { AwsTranscribe, StreamingClient } from "../index"
const fs = require('fs');
const path = require('path');
const client = new AwsTranscribe({
// if these aren't provided, they will be taken from the environment
accessKeyId: "", //omitted
secretAccessKey: "", //omitted
})
const transcribeStream = client
.createStreamingClient({
region: "us-east-1",
sampleRate: 8000,
languageCode: "en-US",
})
// enums for returning the event names which the stream will emit
.on(StreamingClient.EVENTS.OPEN, () => console.log(`transcribe connection opened`))
.on(StreamingClient.EVENTS.ERROR, console.error)
.on(StreamingClient.EVENTS.CLOSE, () => console.log(`transcribe connection closed`))
.on(StreamingClient.EVENTS.DATA, (data) => {
const results = data.Transcript.Results
if (!results || results.length === 0) {
return
}
const result = results[0]
const final = !result.IsPartial
const prefix = final ? "recognized" : "recognizing"
const text = result.Alternatives[0].Transcript
console.log(`${prefix} text: ${text}`)
})
var _ = require('underscore'),
https = require('https'),
express = require('express'),
app = express();
app.get('/audioFile.mp3', function(req, res) {
https.get('https://previewpod.com/snippets/breakdown.mp3', function(audioFile) {
res.set(_.extend(_.pick(audioFile.headers, 'accept-ranges', 'content-type', 'content-length'), { 'Access-Control-Allow-Origin': '*' }));
audioFile.pipe(res).pipe(transcribeStream);
}).on('error', function(err) {
console.error(err);
})
});
var server = app.listen(3000, function () {
console.log('app listening on port %s', server.address().port);
});