Come implementare l'opzione per restituire Blob, ArrayBuffer o AudioBuffer dalla chiamata a window.speechSynthesis.speak ()

4

Nota, attualmente non hai esperienza nel comporre o modificare il codice C ++, in cui è scritto il codice che dovrà comporre o modificare.

In particolare, window.speechSynthesis.speak() non fornisce attualmente un'opzione per restituire l'audio generato dalla chiamata di funzione come Blob , ArrayBuffer o AudioBuffer su Chromium o Firefox , dove hanno presentato richiesta di funzionalità per lo stesso Numero 733051 , Bug 1377893 .

La soluzione alternativa che è stata composta in SpeechSynthesisRecorder.js consiste nell'utilizzare navigator.mediaDevices.getUserMedia() e MediaRecorder() per registrare l'output audio di .speak() chiamata da Monitor of Built-in Audio Analog Stereo , che produce risultati attesi su Chromium, anche se riproduzione di audio incoerente su Firefox . Tuttavia, perché dovremmo usare navigator.mediaDevices.getUserMedia() e MediaRecorder() per creare una copia dell'audio generato, invece di fornire un parametro a .speak() che indica che l'audio generato non deve essere riprodotto, ma piuttosto restituito come Blob , ArrayBuffer , AudioBuffer o altro tipo di dati?

La

meSpeak.js libreria offre un'opzione rawdata

  • rawdata: Do not play, return data only. The type of the returned data is derived from the value (case-insensitive) of 'rawdata':
    • 'base64': returns a base64-encoded string.
    • 'mime': returns a base64-encoded data-url (including the MIME-header). (synonyms: 'data-url', 'data-uri', 'dataurl', 'datauri')
    • 'array': returns a plain Array object with uint 8 bit data.
    • default (any other value): returns the generated wav-file as an ArrayBuffer (8-bit unsigned).

C'è stata una discussione precedente sull'incorporazione dell'API Web Speech con l'API Web Audio, ad esempio su RE: Interagire con WebRTC, l'API Web Audio e altre fonti esterne

2) Storing and processing text-to-speech fragments.

Rather than mandating immediate output of the synthesized audio stream, it should be considered to introduce an "outputStream" property on a TextToSpeech object which provides a MediaStream object. This allows the synthesized stream to be played through the element, processed through the Web Audio API or even to be stored locally for caching, in case the user is using a device which is not always connected to the internet (and when no local recognizer is available). Furthermore, this would allow websites to store the synthesized audio to a wave file and save this on the server, allowing it to be re-used for user agents or other clients which do not provide an implementation.

citato in API Web Speech possibile in combinazione con l'API Web Audio

I actually asked about adding this on the Web Speech mailing list, and was basically told "no". To be fair to people on that mailing list, I was unable to think of more than one or two specific use cases when prompted.

So unless they've changed something in the past month or so, it sounds like this isn't a planned feature.

e più recentemente da questo utente su MediaStream, ArrayBuffer, risultato audio Blob da speak () per la registrazione?

Domande:

1) A questo punto dello sviluppo di questo progetto o ricerca, è più possibile tentare di imparare il C ++ e la metodologia di inviare una patch ai manutentori del browser per l'implementazione descritta; cioè, per fare le modifiche richieste al codice sorgente del browser da solo?

2) Continuare a chiedere aiuto dagli autori delle API di Web Speech ai browser e, o agli sviluppatori in generale, verso il completamento dell'implementazione descritta?

3) Entrambi 1) e 2)?

    
posta guest271314 03.07.2017 - 18:12
fonte

1 risposta

1

At this point in the development of this project or pursuit, is it more feasible to attempt to learn C++ and the methodology of submitting a patch to browser maintainers for the described implementation; that is, to make required changes at browser source code myself?

Dipende davvero dal tuo impegno in questa funzione. La specifica è ancora in bozza e potresti prova a inviare feedback, tuttavia il feedback più recenti è stato presumibilmente da te, e tu hai non è stata ancora data risposta. Probabilmente ci sarà più discussione su come la funzione è descritta nelle specifiche, e qualcuno dovrà apportare le modifiche (se si decide di apportare le modifiche suggerite). Come hai sottolineato altri presumibilmente hanno chiesto per questa funzione e sono stati rifiutati .

Non penso che i browser accetteranno un PR se non aderisce alla versione corrente della bozza delle specifiche, quindi penso che la specifica sia il primo passo per ottenere il supporto del browser.

Anche quando lo si ottiene nella bozza delle specifiche, potrebbe essere necessario un po 'di tempo prima che i browser esaminino un PR da parte tua, può essere molto difficile per te contribuire perché non conosci C ++ e browser sono software molto complicati. Se entra nelle specifiche, potrebbe essere più semplice aspettare che i manutentori del browser implementino le nuove funzionalità, ma se sei determinato a vederlo, allora contribuisci con il PR! Dovresti decidere da solo se l'apprendimento di C ++ e la comprensione del codice del browser valgono un PR che potenzialmente non sarà mai unito.

Continue to ask for help from authors of Web Speech API at browsers and, or developers at large, towards completion of the described implementation?

Sembra che tu abbia già fatto tutto il possibile per chiedere che questo sia implementato. Puoi lasciarlo andare, oppure puoi continuare a cercare di includere la tua funzionalità nelle specifiche. Ciò potrebbe comportare il contatto diretto con i redattori ("perché il mio messaggio sulla mailing list non è stato risposto?" / "Il discorso è morto?") - aiuterà a dimostrare che gli altri vogliono la stessa funzione. Mentre sono d'accordo sul fatto che la funzione sembra una buona idea, i redattori della bozza possono avere motivi per cui non è una buona idea. Ho trovato il messaggio di Kevin Ennis alla mailing list , sembrava irrisolto per me, ma l'intera mailing list sembra fondamentalmente morta dal momento che non hanno risposto al tuo messaggio di un mese fa. La bozza non si trova sulla traccia W3 per la standardizzazione. È davvero alla tua determinazione quello che fai, ma il # 2 è sicuramente il primo passo.

    
risposta data 04.07.2017 - 03:18
fonte

Leggi altre domande sui tag