Member 4764082 Ответов: 1

Asp.net MVC text to speech на клиенте


У меня есть ASP.Net приложение MVC, которое использует SignalR для передачи данных всем подключенным клиентам. Мне нужно зачитать эти данные, полученные от клиента на английском и арабском языках. Клиентский браузер может быть на iOS, Android или Windows PC. Как я могу решить эту проблему?

1.Is есть ли правильный способ конвертировать текст в речь с сервера и передавать выходной звук клиенту в последовательности
2.или объедините звуковые фрагменты и воспроизведите их на клиенте

Есть еще какое-нибудь лучшее решение?

Что я уже пробовал:

I tried Jquery speech synthesis.But it does not support Arabic in Android and iOS.My application will be Offline.So using third party API from Google or Amazon is out of scope.

1 Ответов

Рейтинг:
1

Richard Deeming

Javascript speech synthesis API работает во всех современных браузерах:
SpeechSynthesis - веб-API | MDN[^]

Поддерживаемые языки будут варьироваться в зависимости от браузера. Например, на моем ПК Firefox поддерживает только английский язык, но Chrome (и, соответственно, другие браузеры на базе Chromium) поддерживает еще много языков.
Использование Web Speech API для многоязычных переводов | CSS-трюки[^]

Если вы предпочитаете генерировать аудиофайл на сервере, вы должны иметь возможность комбинировать аудио API[^] с URL-адрес большого двоичного объекта[^] для воспроизведения файла. Например:
Воспроизведение аудио через запрос fetch POST - Jignesh Kakadiya - Medium[^]

async function speak(text, language) {
    const url = "/text-to-speech/";
    
    const requestOptions = {
        method: "POST",
        headers: { "Content-Type": "application/json" },
        body: JSON.stringify({ text: text, language: language })
    };
    
    let response = await fetch(url, requestOptions);
    if (!response.ok) {
        throw new Error(`${response.status}: ${response.statusText}`);
    }
    
    var reader = response.body.getReader();
    var result = await reader.read();
    
    var blob = new Blob([result.value], { type: 'audio/mp3' });
    var url = window.URL.createObjectURL(blob);
    window.audio = new Audio();
    window.audio.src = url;
    window.audio.play();
}