spanish online library gratis español html ios text-to-speech

online - ¿Es posible hacer "HTML a voz" igual que "Texto a voz"?



text to speech library javascript (4)

Como he trabajado con el análisis de HTML y text2speech aquí, puede ir con 2 pasos 1.get La cadena de atributo del archivo HTML con el código siguiente funciona en iOS7+

Según la perspectiva de su cliente : si hay alguna API en el mercado para HTML2Speech puede ser su pago o usted depende de esa API si usa alguna. Mientras que el marco nativo ayudará a lo mismo que usted / cliente quiere.

Paso 1:

[[NSAttributedString alloc] initWithData:[htmlString dataUsingEncoding:NSUTF8StringEncoding] options:@{NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType, NSCharacterEncodingDocumentAttribute: @(NSUTF8StringEncoding)} documentAttributes:nil error:nil];

Luego puede pasar esta cadena atribuida en AVSpeechUtterance

Paso 2: usa el método de abajo para obtener HTML2String:

/** * "ConvertHTMLtoStrAndPlay" : This method will convert the HTML to String synthesizer. * * @param aURLHtmlFilePath : "object of html file path" */ -(void)ConvertHTMLtoStrAndPlay:(UIButton*)aBtnPlayPause isSpeechPaused:(BOOL)speechPaused stringWithHTMLAttributes:(NSAttributedString*)aStrWithHTMLAttributes { if (synthesizer.speaking == NO && speechPaused == NO) { AVSpeechUtterance *utterance = [[AVSpeechUtterance alloc] initWithString:aStrWithHTMLAttributes.string]; //utterance.rate = AVSpeechUtteranceMinimumSpeechRate; if (IS_ARABIC) { utterance.voice = [AVSpeechSynthesisVoice voiceWithLanguage:@"ar-au"]; }else{ utterance.voice = [AVSpeechSynthesisVoice voiceWithLanguage:@"en-au"]; } [synthesizer speakUtterance:utterance]; } else{ [synthesizer pauseSpeakingAtBoundary:AVSpeechBoundaryImmediate]; } if (speechPaused == NO) { [synthesizer continueSpeaking]; } else { [synthesizer pauseSpeakingAtBoundary:AVSpeechBoundaryImmediate]; } }

y como siempre, debe dejar de usar el siguiente código para detener el habla.

/** * "StopPlayWithAVSpeechSynthesizer" : this method will stop the playing of audio on the application. */ -(void)StopPlayWithAVSpeechSynthesizer{ // Do any additional setup after loading the view, typically from a nib. [synthesizer stopSpeakingAtBoundary:AVSpeechBoundaryImmediate]; }

Espero Esto te ayudará a obtener la característica HTML2Speech.

Tengo un requisito alámbrico de que en mi aplicación Text2Speech tengo Text2Speech y para eso he usado AVSpeechSynthesizer para pronunciar texto, pero ahora el requisito de mi cliente quiere hablar el archivo HTML ya que tiene muchos archivos HTML en su base de DB .

Mi sugerencia :

use el análisis de HTML y obtenga todo el texto de HTML y use el mismo marco para Text2Speech.

Pero el cliente no quiere ese tipo de análisis y quiere cualquier API o marco que proporcione directamente la característica HTML2Speech .

Cualquier sugerencia o ayuda será altamente apreciada.


De una forma u otra, siempre se analizará HTML con otra cosa si no desea leer archivos. Si el cliente desea una solución HTML2Speech directa, puede proporcionar un método que tome un archivo html como argumento y lo lea. Lo que está sucediendo con este archivo debajo del capó no debería molestar al cliente, siempre y cuando esté limpio y no cause problemas.

¿Qué sucede cuando el cliente le pedirá Markdown2Speech o XML2Speech ? Por lo que veo en su descripción es mejor tenerlo por ahora en un marco con dos métodos públicos, Text2Speech y HTML2Speech que tomarán como enlace de argumento a archivo o NSString.

Entonces, como @rickster sugiere que puede ser NSAttributedString o NSString . Hay una gran cantidad de analizadores, o si desea una solución propia, puede eliminar todo lo que hay dentro < y > y cambiar la codificación.


El método más seguro será extraer el texto y utilizar la API text2speech existente.

Aunque si está seguro de que el navegador será Chrome, la API de síntesis de voz puede ser útil. Pero esta API aún no está completamente adoptada por todos los navegadores; Será una solución arriesgada.

Puede encontrar la información necesaria sobre esta API en

No hay una API directa para HTML a voz, excepto la API de síntesis de voz mencionada anteriormente. Aunque puedes probar http://responsivevoice.org/ . Pero creo que este también se basa en la síntesis de voz o la generación de voz del servidor en el servidor. Así que para usar este, tendrías que extraer texto y pasar el texto a la API para obtener el discurso


Hay dos partes para una solución aquí ...

  1. Es de suponer que no le importa el formato en el HTML; después de todo, para cuando llegue al sintetizador de voz, este texto se pronunciará, no se verá. AVSpeechSynthesizer toma texto sin formato, por lo que solo necesita deshacerse del formato HTML. Una forma fácil de hacerlo es crear una NSAttributedString partir del HTML , luego pedir a esa cadena atribuida su string texto simple subyacente para pasar el texto al sintetizador.

  2. En iOS 10, ni siquiera tiene que extraer la cadena de una cadena atribuida, puede pasar una cadena atribuida directamente a AVSpeechUtterance .