я преобразую речь веб-сайта на основе реакции в текст, и я могу получить аудио в консоли, но я не могу отобразить речь

#reactjs #jsx #speech-to-text #recordrtc

#reactjs #jsx #преобразование речи в текст #recordrtc

Вопрос:

Я могу получить аудио в консоли, но я не могу его отобразить, и я не могу остановить запись, я не знаю, что происходит, и я делаю что-то не так в сокете.IO может кто-нибудь, пожалуйста, помочь мне с этим. Я использую vs code для этого, я использую сокет React Js.Ввод-вывод и запись RTC

 useEffect(() => {
    if (!socket) return;

    socket.on("sttResponse", () => {
        setSocketConnected(socket.connected);
        subscribeToGetStream();
    });
    socket.on("disconnect", () => {
        setSocketConnected(socket.connected);
    });

    socket.on("getDate", (data) => {
        setDt(data.lang[1].network.code);
    });
}, [socket]);

// manage socket connection
const handleSocketConnection = () => {
    if (socketConnected) socket.disconnect();
    else {
        socket.connect();
    }
};

// subscribe to socket date event
const subscribeToGetStream = (stream = 1000) => {
    socket.emit("getStream", stream);
};
// start and stop function

const startRecording = (e) => {
    e.preventDefault();
    if (langCode) {
        setrecording(true);
        getUserMedia();
    } else {  
        return false;
    }
};

const stopRecording = (e) => {
    e.preventDefault();
    setrecording(false);
    socket.disconnect();
};

//record RTC
function getUserMedia() {
    // socket.setSocketConnected();
    navigator.mediaDevices
        .getUserMedia({
            video: false,
            audio: true,
        })
        .then(async function (stream) {
            var StereoAudioRecorder = RecordRTC.StereoAudioRecorder;
            recorder.current = new RecordRTC(stream, {
                recorderType: StereoAudioRecorder,
                type: "audio",
                mimeType: "audio/wav",
                sampleRate: 44100,
                bufferSize: 2048,
                desiredSampRate: 8000,
                numberOfAudioChannels: 1,
                timeSlice: 400,
                ondataavailable: function (blob) {
                    console.log(blob);
                    // self.audioStream.next(blob);
                    // var streamObj = { "audioStream": blob, "lang": setlangInfo };
                },
            });

            recorder.current.startRecording();
        });
}

return (
    <div>
        <ReactBootStrap.Navbar bg='light' variant='light'>
            <ReactBootStrap.Navbar.Brand href='#home'>
                <img
                    alt=''
                    src='https://dev.kwantics.ai/apps/angularApps/rtd-app/assets/images/logo.png'
                    width='150'
                    height='38'
                    className='d-inline-block align-top'
                />{" "}
                <a className={Styles.navbarHeader}>Real Time Speech Decoder</a>
            </ReactBootStrap.Navbar.Brand>
        </ReactBootStrap.Navbar>

        <section className='container-fluids'>
            <section className='col-12 col-sm-6 col-md-3'>
                <form className='form-container'>
                    <div className='mb-3'>
                        <div id='text-field' className='form-text'>
                            SPEECH - TO - TEXT
          </div>
                    </div>
                    <div>
                        <Dropdown onSelect={handleSelect}>
                            <Dropdown.Toggle variant='success' id='dropdown-basic'>
                                Select Language
            </Dropdown.Toggle>

                            <Dropdown.Menu>
                                {langInfo
                                    ? Object.entries(langInfo).map((lang) => {
                                        return (
                                            <Dropdown.Item
                                                key={lang[0]}
                                                eventKey={lang[1].network.port}
                                            >
                                                {lang[1].general.name}
                                            </Dropdown.Item>
                                        );
                                    })
                                    : null}
                            </Dropdown.Menu>
                        </Dropdown>
                    </div>

                    {/* <button type="submit" className="btn btn-primary  ">Create audio</button> */}
                    <button onClick={(e) => startRecording(e)}
                        disabled={disabled}
                        type='submit'>
                        <img
                            type='submit'
                            alt='record'
                            src='https://img.icons8.com/ios/452/microphone.png'
                            width='40'
                        />
                    </button>
                    <div>
                        <button onClick={(e) => stopRecording(e)}
                            disabled={disabled}>

                            <img
                                type='image'
                                alt='stop'
                                src='https://www.freeiconspng.com/uploads/-button-stop-stop-playing-video-player-icon-29.png'
                                width='40'
                            />
                        </button>
                        {/* <img src="https://wpamelia.com/wp-content/uploads/2018/11/ezgif-2-6d0b072c3d3f.gif" width="150" alt='loading' /> */}
                    </div>
                </form>
            </section>
        </section>
    </div>
);
 

}

экспортировать SocketRecordRtc по умолчанию;

Комментарии:

1. Где вы вызываете свои функции? stopRecording например?

2. я вызываю это в части jsx

3. Пожалуйста, опубликуйте весь соответствующий код. Например, если вы говорите, что не можете это остановить, мы должны посмотреть, где именно вы пытаетесь это остановить.

4. я опубликовал весь код, можете ли вы мне помочь