{"id":2343,"date":"2021-02-08T05:00:00","date_gmt":"2021-02-08T04:00:00","guid":{"rendered":"https:\/\/ellycode.com\/?p=2343"},"modified":"2021-02-02T16:27:36","modified_gmt":"2021-02-02T15:27:36","slug":"quattro-chiacchiere-con-la-nostra-applicazione","status":"publish","type":"post","link":"https:\/\/ellycode.com\/it\/blog\/quattro-chiacchiere-con-la-nostra-applicazione\/","title":{"rendered":"Quattro chiacchiere con la nostra applicazione"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Per lo sviluppo del nostro assistente virtuale la componente vocale ha avuto fin da subito un ruolo fondamentale. <strong>L\u2019interazione vocale, infatti, \u00e8 il primo elemento necessario a costruire una User eXperience pi\u00f9 naturale<\/strong>, che si compone principalmente di due elementi: la sintesi vocale (<em>text-to-speech<\/em>) con cui possiamo dire qualcosa al nostro interlocutore, ed il riconoscimento del parlato (<em>speech-to-text<\/em>) per ricavare il testo a partire dal parlato. Possibilmente cercando di fare qualcosa di meglio di questo:<\/p>\n\n\n\n<figure class=\"wp-block-embed aligncenter is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<span class=\"embed-youtube\" style=\"text-align:center; display: block;\"><iframe loading=\"lazy\" class=\"youtube-player\" width=\"1080\" height=\"608\" src=\"https:\/\/www.youtube.com\/embed\/uyV0IVItlM4?version=3&#038;rel=1&#038;showsearch=0&#038;showinfo=1&#038;iv_load_policy=1&#038;fs=1&#038;hl=it-IT&#038;autohide=2&#038;wmode=transparent\" allowfullscreen=\"true\" style=\"border:0;\" sandbox=\"allow-scripts allow-same-origin allow-popups allow-presentation allow-popups-to-escape-sandbox\"><\/iframe><\/span>\n<\/div><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Esistono gi\u00e0 da molto tempo algoritmi in grado di leggere lo schermo o trascrivere del testo. Ma oggi l\u2019intelligenza artificiale va a migliorare queste tecniche, aumentando la qualit\u00e0 del testo trascritto e consentendo la generazione di voci sempre pi\u00f9 <em>naturali<\/em>, che imitano intonazione e cadenza di quelle umane.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Sviluppare queste tecnologie da zero richiede uno sforzo notevole, ed \u00e8 per questo che <strong>i principali Cloud provider presenti sul mercato forniscono servizi vocali gi\u00e0 pronti all\u2019uso<\/strong>, eliminando la necessit\u00e0 di creare dei modelli che per essere affidabili richiederebbero molte ore di training.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Questi servizi, in gran parte simili tra loro, presentano alcune differenze in termini di costi, linguaggi supportati, velocit\u00e0 di esecuzione, e non solo. Ho pensato quindi che potesse essere interessante condividere con voi gli esperimenti fatti con i servizi <strong>Azure<\/strong>, <strong>Google Cloud<\/strong> e <strong>AWS<\/strong>, per darvi un\u2019 idea di quali sono i fattori da prendere in considerazione nella scelta.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-performance\">Performance<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Un aspetto fondamentale per l\u2019usabilit\u00e0 \u00e8 sicuramente la velocit\u00e0 di risposta di questi servizi, specialmente nel caso di analisi e sintetizzazione real-time come quella necessaria per un assistente vocale.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"683\" data-attachment-id=\"2503\" data-permalink=\"https:\/\/ellycode.com\/it\/blog\/quattro-chiacchiere-con-la-nostra-applicazione\/attachment\/performance-1\/\" data-orig-file=\"https:\/\/i0.wp.com\/ellycode.com\/wp-content\/uploads\/2021\/01\/performance-1.jpg?fit=1950%2C1300&amp;ssl=1\" data-orig-size=\"1950,1300\" data-comments-opened=\"0\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"performance-1\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/ellycode.com\/wp-content\/uploads\/2021\/01\/performance-1.jpg?fit=1024%2C683&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/ellycode.com\/wp-content\/uploads\/2021\/01\/performance-1.jpg?resize=1024%2C683&#038;ssl=1\" alt=\"\" class=\"wp-image-2503\" srcset=\"https:\/\/ellycode.com\/wp-content\/uploads\/2021\/01\/performance-1-980x653.jpg 980w, https:\/\/ellycode.com\/wp-content\/uploads\/2021\/01\/performance-1-480x320.jpg 480w\" sizes=\"auto, (min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1024px, 100vw\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Per quanto riguarda lo speech-to-text, ognuno dei servizi permette il riconoscimento in diversi formati audio per venire incontro ad ogni caso d\u2019uso. Il riconoscimento pu\u00f2 avvenire in due modalit\u00e0: quella <em>\u201cbatch\u201d<\/em>,&nbsp; adatta a file molto lunghi, oppure in modalit\u00e0 <em>\u201cstreaming\u201d<\/em>, per un&#8217;analisi in tempo reale del parlato.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Abbiamo fatto un test per verificare la velocit\u00e0 dei servizi, in cui otto frasi in italiano di lunghezza simile, sono state prima sintetizzate ed in seguito riconvertite in testo. E\u2019 stata calcolata poi una media del tempo impiegato per eseguire le operazioni. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ecco i risultati:<\/p>\n\n\n\n<figure class=\"wp-block-table is-style-stripes\"><table><thead><tr><th><strong>Sintesi (WAV)<\/strong><\/th><th class=\"has-text-align-center\" data-align=\"center\"><strong>Totale (s)<\/strong><\/th><th class=\"has-text-align-center\" data-align=\"center\"><strong>Media (s)<\/strong><\/th><\/tr><\/thead><tbody><tr><td>Amazon Polly<\/td><td class=\"has-text-align-center\" data-align=\"center\"><em>05.720<\/em><\/td><td class=\"has-text-align-center\" data-align=\"center\"><em>0.715<\/em><\/td><\/tr><tr><td>Azure Text-to-speech<\/td><td class=\"has-text-align-center\" data-align=\"center\"><em>34.039<\/em><\/td><td class=\"has-text-align-center\" data-align=\"center\"><em>4.254<\/em><\/td><\/tr><tr><td>Google Text-to-speech<\/td><td class=\"has-text-align-center\" data-align=\"center\"><em>08.753<\/em><\/td><td class=\"has-text-align-center\" data-align=\"center\"><em>1.094<\/em><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<figure class=\"wp-block-table is-style-stripes\"><table><thead><tr><th><strong>Sintesi (MP3)<\/strong><\/th><th class=\"has-text-align-center\" data-align=\"center\"><strong>Totale (s)<\/strong><\/th><th class=\"has-text-align-center\" data-align=\"center\"><strong>Media (s)<\/strong><\/th><\/tr><\/thead><tbody><tr><td>Amazon Polly<\/td><td class=\"has-text-align-center\" data-align=\"center\"><em>04.753<\/em><\/td><td class=\"has-text-align-center\" data-align=\"center\"><em>0.594<\/em><\/td><\/tr><tr><td>Azure Text-to-speech<\/td><td class=\"has-text-align-center\" data-align=\"center\"><em>29.988<\/em><\/td><td class=\"has-text-align-center\" data-align=\"center\"><em>3.748<\/em><\/td><\/tr><tr><td>Google Text-to-speech<\/td><td class=\"has-text-align-center\" data-align=\"center\"><em>07.312<\/em><\/td><td class=\"has-text-align-center\" data-align=\"center\"><em>0.914<\/em><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Per Amazon Transcribe \u00e8 stata implementata la funzione di trascrizione \u201cstreaming\u201d (in tempo reale) seguendo la documentazione. Negli SDK di Azure e Google invece \u00e8 gi\u00e0 inclusa.<\/p>\n\n\n\n<figure class=\"wp-block-table is-style-stripes\"><table class=\"has-fixed-layout\"><thead><tr><th><strong>Riconoscimento (WAV)<\/strong><\/th><th class=\"has-text-align-center\" data-align=\"center\"><strong>Totale (min)<\/strong><\/th><th class=\"has-text-align-center\" data-align=\"center\"><strong>Media (min)<\/strong><\/th><\/tr><\/thead><tbody><tr><td>Amazon Polly<\/td><td class=\"has-text-align-center\" data-align=\"center\"><em>3:08.516<\/em><\/td><td class=\"has-text-align-center\" data-align=\"center\"><em>0:23.560<\/em><\/td><\/tr><tr><td>Azure Text-to-speech<\/td><td class=\"has-text-align-center\" data-align=\"center\"><em>1:38.468<\/em><\/td><td class=\"has-text-align-center\" data-align=\"center\"><em>0:12.308<\/em><\/td><\/tr><tr><td>Google Text-to-speech<\/td><td class=\"has-text-align-center\" data-align=\"center\"><em>0:39.995<\/em><\/td><td class=\"has-text-align-center\" data-align=\"center\"><em>0:0<em>4.999<\/em><\/em><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<figure class=\"wp-block-table is-style-stripes\"><table class=\"has-fixed-layout\"><thead><tr><th><strong>Riconoscimento (MP3)<\/strong><\/th><th class=\"has-text-align-center\" data-align=\"center\"><strong>Totale (min)<\/strong><\/th><th class=\"has-text-align-center\" data-align=\"center\"><strong>Media (min)<\/strong><\/th><\/tr><\/thead><tbody><tr><td>Amazon Polly<\/td><td class=\"has-text-align-center\" data-align=\"center\"><em>&#8211;<\/em><\/td><td class=\"has-text-align-center\" data-align=\"center\"><em>&#8211;<\/em><\/td><\/tr><tr><td>Azure Text-to-speech<\/td><td class=\"has-text-align-center\" data-align=\"center\"><em>3:16.011<\/em><\/td><td class=\"has-text-align-center\" data-align=\"center\"><em>0:24.501<\/em><\/td><\/tr><tr><td>Google Text-to-speech<\/td><td class=\"has-text-align-center\" data-align=\"center\"><em>&#8211;<\/em><\/td><td class=\"has-text-align-center\" data-align=\"center\"><em>&#8211;<\/em><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em>Amazon Polly<\/em> \u00e8 stato il servizio pi\u00f9 veloce nella sintesi,<em> Google Text-to-Speech<\/em><strong> <\/strong>invece il pi\u00f9 veloce nel riconoscimento. Da notare per\u00f2 che solo l\u2019SDK Azure supporta il riconoscimento di file audio MP3, negli altri casi dovr\u00e0 essere quindi implementata la decodifica in WAV.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-supporto-alla-lingua\">Supporto alla lingua<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Uno dei fattori da prendere in considerazione \u00e8 sicuramente<strong> il numero di lingue supportate<\/strong>, che&nbsp;<strong> aiuta a raggiungere un pubblico pi\u00f9 vasto<\/strong>. <\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"699\" data-attachment-id=\"2505\" data-permalink=\"https:\/\/ellycode.com\/it\/blog\/quattro-chiacchiere-con-la-nostra-applicazione\/attachment\/multilanguage-1\/\" data-orig-file=\"https:\/\/i0.wp.com\/ellycode.com\/wp-content\/uploads\/2021\/01\/multilanguage-1.jpg?fit=1933%2C1319&amp;ssl=1\" data-orig-size=\"1933,1319\" data-comments-opened=\"0\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"multilanguage-1\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/ellycode.com\/wp-content\/uploads\/2021\/01\/multilanguage-1.jpg?fit=1024%2C699&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/ellycode.com\/wp-content\/uploads\/2021\/01\/multilanguage-1.jpg?resize=1024%2C699&#038;ssl=1\" alt=\"\" class=\"wp-image-2505\" srcset=\"https:\/\/ellycode.com\/wp-content\/uploads\/2021\/01\/multilanguage-1-980x669.jpg 980w, https:\/\/ellycode.com\/wp-content\/uploads\/2021\/01\/multilanguage-1-480x328.jpg 480w\" sizes=\"auto, (min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1024px, 100vw\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Sebbene l\u2019italiano sia supportato da tutti e tre i provider, fino ad oggi solo <strong>Microsoft e Google forniscono per l\u2019italiano delle <\/strong><em><strong>voci neurali<\/strong><\/em>, vale a dire <strong>generate con l\u2019intelligenza artificiale <\/strong>e <strong>che risultano pi\u00f9 naturali all\u2019ascoltatore<\/strong>. Google inoltre mette a disposizione diversi modelli per il riconoscimento del testo ottimizzate in base alla sorgente audio utilizzata, come conversazioni telefoniche o video.<\/p>\n\n\n\n<figure class=\"wp-block-table is-style-stripes\"><table class=\"has-fixed-layout\"><thead><tr><th>Servizio<\/th><th class=\"has-text-align-center\" data-align=\"center\"><strong>Lingue STT<\/strong><\/th><th class=\"has-text-align-center\" data-align=\"center\"><strong>Lingue TTS<\/strong><\/th><th class=\"has-text-align-center\" data-align=\"center\"><strong>Lingue NTTS<\/strong><\/th><\/tr><\/thead><tbody><tr><td>Amazon<\/td><td class=\"has-text-align-center\" data-align=\"center\">31 (11)*<\/td><td class=\"has-text-align-center\" data-align=\"center\">29<\/td><td class=\"has-text-align-center\" data-align=\"center\">5<\/td><\/tr><tr><td>Azure<\/td><td class=\"has-text-align-center\" data-align=\"center\">86<\/td><td class=\"has-text-align-center\" data-align=\"center\">49<\/td><td class=\"has-text-align-center\" data-align=\"center\">54<\/td><\/tr><tr><td>Google<\/td><td class=\"has-text-align-center\" data-align=\"center\">136<\/td><td class=\"has-text-align-center\" data-align=\"center\">40<\/td><td class=\"has-text-align-center\" data-align=\"center\">25<\/td><\/tr><\/tbody><\/table><figcaption>* Lingue che supportano il riconoscimento in streaming.<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Durante i nostri test, le voci neurali italiane di Azure ci sono sembrate le pi\u00f9 naturali. Tutti e tre mettono a disposizione un tool di prova con cui confrontarle, anche se per AWS \u00e8 necessaria la registrazione. Provare per credere:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/azure.microsoft.com\/it-it\/services\/cognitive-services\/text-to-speech\/\" target=\"_blank\" rel=\"noreferrer noopener\">Azure Cognitive Services<\/a><br><a href=\"https:\/\/cloud.google.com\/text-to-speech?hl=it#section-2\" target=\"_blank\" rel=\"noreferrer noopener\">Google Cloud Text-to-Speech<\/a><br><a href=\"https:\/\/eu-west-1.console.aws.amazon.com\/polly\/home\/SynthesizeSpeech\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">Amazon Polly<\/a><\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-costi\">Costi<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Il vantaggio di usare un servizio cloud-based \u00e8 sicuramente quello di pagare solo ci\u00f2 che si usa. Tutti i servizi visti finora seguono un modello di pagamento a consumo, basato sulla quantit\u00e0 di caratteri sintetizzati o dei secondi di audio analizzato. <\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"683\" data-attachment-id=\"2493\" data-permalink=\"https:\/\/ellycode.com\/it\/blog\/quattro-chiacchiere-con-la-nostra-applicazione\/attachment\/pricing-2\/\" data-orig-file=\"https:\/\/i0.wp.com\/ellycode.com\/wp-content\/uploads\/2021\/01\/pricing.jpg?fit=1950%2C1300&amp;ssl=1\" data-orig-size=\"1950,1300\" data-comments-opened=\"0\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"pricing\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/ellycode.com\/wp-content\/uploads\/2021\/01\/pricing.jpg?fit=1024%2C683&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/ellycode.com\/wp-content\/uploads\/2021\/01\/pricing.jpg?resize=1024%2C683&#038;ssl=1\" alt=\"\" class=\"wp-image-2493\" srcset=\"https:\/\/ellycode.com\/wp-content\/uploads\/2021\/01\/pricing-980x653.jpg 980w, https:\/\/ellycode.com\/wp-content\/uploads\/2021\/01\/pricing-480x320.jpg 480w\" sizes=\"auto, (min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1024px, 100vw\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Inoltre, <strong>entro una certa soglia \u00e8 possibile usufruire dei servizi gratuitamente<\/strong>, cosa sicuramente gradita durante le prime fasi dello sviluppo.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ecco una tabella riassuntiva dei prezzi per il riconoscimento:<\/p>\n\n\n\n<figure class=\"wp-block-table is-style-stripes\"><table class=\"has-fixed-layout\"><thead><tr><th>Servizio<\/th><th class=\"has-text-align-right\" data-align=\"right\">Costo<\/th><\/tr><\/thead><tbody><tr><td>Azure Speech-to-text<\/td><td class=\"has-text-align-right\" data-align=\"right\">$ 0,000277 al secondo<\/td><\/tr><tr><td>Google Cloud Speech-to-text<\/td><td class=\"has-text-align-right\" data-align=\"right\">$ 0,006\/15 secondi ($0,004 con logging)<\/td><\/tr><tr><td>Amazon Transcribe<\/td><td class=\"has-text-align-right\" data-align=\"right\">$ 0,0004 ogni 1s (min 15s)<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>I prezzi per la sintesi vocale sono gli stessi per i provider<\/strong>, che si differenziano solo per la quantit\u00e0 di caratteri gratuiti mensili:<\/p>\n\n\n\n<figure class=\"wp-block-table is-style-stripes\"><table class=\"has-fixed-layout\"><thead><tr><th>Tipologia<\/th><th class=\"has-text-align-right\" data-align=\"right\">Costo <br>(per 1 milione di caratteri)<\/th><\/tr><\/thead><tbody><tr><td>Voci TTS standard<\/td><td class=\"has-text-align-right\" data-align=\"right\">$ 4,00<\/td><\/tr><tr><td>Voci NTTS (neurali)<\/td><td class=\"has-text-align-right\" data-align=\"right\">$ 16,00<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<figure class=\"wp-block-table is-style-stripes\"><table class=\"has-fixed-layout\"><thead><tr><th>Servizio<\/th><th class=\"has-text-align-right\" data-align=\"right\">Voci standard<br>(caratteri)<\/th><th class=\"has-text-align-right\" data-align=\"right\">Voci neurali<br>(caratteri)<\/th><\/tr><\/thead><tbody><tr><td>Azure Text-to-Speech<\/td><td class=\"has-text-align-right\" data-align=\"right\">5 Milioni<\/td><td class=\"has-text-align-right\" data-align=\"right\">500.000<\/td><\/tr><tr><td>Google Cloud Text-to-Speech<\/td><td class=\"has-text-align-right\" data-align=\"right\">4 Milioni<\/td><td class=\"has-text-align-right\" data-align=\"right\">1 milione<\/td><\/tr><tr><td>Amazon Polly<\/td><td class=\"has-text-align-right\" data-align=\"right\">4 Milioni<\/td><td class=\"has-text-align-right\" data-align=\"right\">1 milione<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-ulteriori-considerazioni\">Ulteriori considerazioni<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Oltre alle caratteristiche gi\u00e0 discusse, ci sono altri aspetti da prendere in considerazione quando ci si approccia ad un servizio esterno, e questi non fanno eccezione. La disponibilit\u00e0 di librerie scritte nel linguaggio di programmazione di preferenza ad esempio.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"960\" height=\"640\" data-attachment-id=\"2498\" data-permalink=\"https:\/\/ellycode.com\/it\/blog\/quattro-chiacchiere-con-la-nostra-applicazione\/attachment\/programming-2\/\" data-orig-file=\"https:\/\/i0.wp.com\/ellycode.com\/wp-content\/uploads\/2021\/01\/programming.jpg?fit=960%2C640&amp;ssl=1\" data-orig-size=\"960,640\" data-comments-opened=\"0\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"programming\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/ellycode.com\/wp-content\/uploads\/2021\/01\/programming.jpg?fit=960%2C640&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/ellycode.com\/wp-content\/uploads\/2021\/01\/programming.jpg?resize=960%2C640&#038;ssl=1\" alt=\"\" class=\"wp-image-2498\" srcset=\"https:\/\/ellycode.com\/wp-content\/uploads\/2021\/01\/programming.jpg 960w, https:\/\/ellycode.com\/wp-content\/uploads\/2021\/01\/programming-480x320.jpg 480w\" sizes=\"auto, (min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) 960px, 100vw\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Per quanto riguarda Amazon Transcribe infatti, il servizio di riconoscimento in streaming \u00e8 disponibile solo nell\u2019SDK Java, ma lo si pu\u00f2 implementare in qualsiasi linguaggio di programmazione seguendo la documentazione.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Un altro aspetto importante \u00e8 la possibilit\u00e0 di utilizzare questi strumenti all\u2019interno della propria infrastruttura. <strong>Microsoft mette a disposizione un\u2019 immagine Docker (attualmente in preview) che fornisce tutte le funzionalit\u00e0 dei servizi vocali in Cloud<\/strong>. Con Google invece, \u00e8 possibile utilizzare solo lo speech-to-text facendo ricorso a sistemi come Anthos o GKE.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/docs.microsoft.com\/en-us\/azure\/cognitive-services\/speech-service\/speech-container-howto\" target=\"_blank\" rel=\"noreferrer noopener\">Azure Speech Container How-to<\/a><br><a href=\"https:\/\/cloud.google.com\/speech-to-text\/on-prem\" target=\"_blank\" rel=\"noreferrer noopener\">Google Cloud Speech-to-Text On-Prem<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">E\u2019 possibile trovare un\u2019 elenco aggiornato dei prezzi e funzioni supportate sulle pagine dei rispettivi provider:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/azure.microsoft.com\/it-it\/services\/cognitive-services\/speech-to-text\">Azure Cognitive Services S<\/a><a href=\"https:\/\/azure.microsoft.com\/it-it\/services\/cognitive-services\/speech-to-text\" target=\"_blank\" rel=\"noreferrer noopener\">p<\/a><a href=\"https:\/\/azure.microsoft.com\/it-it\/services\/cognitive-services\/speech-to-text\">eech-to-text<\/a><br><a href=\"https:\/\/azure.microsoft.com\/it-it\/services\/cognitive-services\/text-to-speech\/\" target=\"_blank\" rel=\"noreferrer noopener\">Azure Cognitive Services Text-to-speech<\/a><br><a href=\"https:\/\/cloud.google.com\/speech-to-text\" target=\"_blank\" rel=\"noreferrer noopener\">Google Speech-to-text<\/a><br><a href=\"https:\/\/cloud.google.com\/text-to-speech\" target=\"_blank\" rel=\"noreferrer noopener\">Google Text-to-speech<\/a><br><a href=\"https:\/\/aws.amazon.com\/it\/transcribe\/\" target=\"_blank\" rel=\"noreferrer noopener\">Amazon Transcribe<\/a><br><a href=\"https:\/\/aws.amazon.com\/it\/polly\/\" target=\"_blank\" rel=\"noreferrer noopener\">Amazon Polly<\/a><\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-conclusione\">Conclusione<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Abbiamo dato solo una rapida occhiata a ci\u00f2 che il mondo dei servizi dell\u2019intelligenza artificiale ci mette a disposizione. Questi strumenti, in continuo miglioramento, semplificano l\u2019utilizzo del parlato e creano numerose possibilit\u00e0, non resta che sfruttarle per costruire le applicazioni del futuro.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Se vi interessa sapere come le stiamo utilizzando noi, restate sintonizzati!<\/p>\n\n\n[et_pb_section global_module=\"1791\"][\/et_pb_section]\n","protected":false},"excerpt":{"rendered":"<p>Per lo sviluppo del nostro assistente virtuale la componente vocale ha avuto fin da subito un ruolo fondamentale. L\u2019interazione vocale, infatti, \u00e8 il primo elemento necessario a costruire una User eXperience pi\u00f9 naturale, che si compone principalmente di due elementi: la sintesi vocale (text-to-speech) con cui possiamo dire qualcosa al nostro interlocutore, ed il riconoscimento [&hellip;]<\/p>\n","protected":false},"author":195423238,"featured_media":2569,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_et_pb_use_builder":"","_et_pb_old_content":"","_et_gb_content_width":"","_coblocks_attr":"","_coblocks_dimensions":"","_coblocks_responsive_height":"","_coblocks_accordion_ie_support":"","_crdt_document":"","inline_featured_image":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_post_was_ever_published":false},"categories":[688637365],"tags":[],"class_list":["post-2343","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blog"],"jetpack_featured_media_url":"https:\/\/i0.wp.com\/ellycode.com\/wp-content\/uploads\/2021\/02\/1105x656_blog_Applicazione-B.png?fit=1105%2C656&ssl=1","jetpack_shortlink":"https:\/\/wp.me\/pcuDuD-BN","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/ellycode.com\/it\/wp-json\/wp\/v2\/posts\/2343","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ellycode.com\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ellycode.com\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ellycode.com\/it\/wp-json\/wp\/v2\/users\/195423238"}],"replies":[{"embeddable":true,"href":"https:\/\/ellycode.com\/it\/wp-json\/wp\/v2\/comments?post=2343"}],"version-history":[{"count":40,"href":"https:\/\/ellycode.com\/it\/wp-json\/wp\/v2\/posts\/2343\/revisions"}],"predecessor-version":[{"id":2534,"href":"https:\/\/ellycode.com\/it\/wp-json\/wp\/v2\/posts\/2343\/revisions\/2534"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/ellycode.com\/it\/wp-json\/wp\/v2\/media\/2569"}],"wp:attachment":[{"href":"https:\/\/ellycode.com\/it\/wp-json\/wp\/v2\/media?parent=2343"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ellycode.com\/it\/wp-json\/wp\/v2\/categories?post=2343"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ellycode.com\/it\/wp-json\/wp\/v2\/tags?post=2343"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}