Tra le tante possibilità di PowerShell vi è anche quella del System.Speech, cioè possiamo far parlare il computer e leggere il contenuto di un file di testo TXT. Facciamo un paio di esempi pratici di applicazione di questa funzione. E’ arrivata quella lunghissima relazione del vostro capo, che non avete nessuna voglia di leggere, ma con poche righe di codice possiamo utilizzare PowerShell che la legga al nostro posto e noi l’ascoltiamo facendo altro. Il far parlare il computer, tramite PowerShell, lo possiamo usare per fare uno scherzo a qualcuno, oppure per dare un messaggio di benvenuto all’accensione del computer o in determinati orari. [continua..]
È un mio sogno trovare la "killer application" perfetta (meglio se open source e multipiattaforma) che purtroppo non esiste ancora!
Un'applicazione che consenta di trasformare:
- la voce in testo;
- il testo in voce;
- il testo in traduzione scritta in un'altra lingua;
- il testo in traduzione audio in un'altra lingua;
- la voce in traduzione scritta in un'altra lingua;
- la voce in traduzione audio in un'altra lingua.
La sto aspettando da una vita, ormai.
I trucchi per fare ciascuna di queste operazione sono parecchi (Telegram, siti specifici, eccetera) ma nessuno che proponga un programma del genere!
Non li ho mai utilizzati, ma so che ci sono diversi progetti per assistenti vocali in Python, quindi open source e multipiattaforma, solitamente chiamati "Jarvis" o in modo simile (con riferimento all'assistente AI di Iron Man) che possono, fra le altre potenzialità, anche leggere, tradurre, etc.
Un modo vergognosamente rudimentale per passare altri tipi di file a Narrator, potrebbe essere automatizzare con Powershell le operazioni per aprire il file con la sua applicazione predefinita, selezionare tutto il testo con ctrl+a, copiarlo con ctrl+c, chiudere l'applicazione con alt+F4, inviare il testo copiato alla shell e farlo leggere al Narrator.
Uno script, che usa le impostazioni predefinite del Narrator, potrebbe essere qualcosa tipo questo:
Lo sleep di 15 secondi serve per dar tempo all'apertura del file, ma chi ha PC performanti può anche ridurlo. Da considerare che tutto il testo viene selezionato, come detto, con la combinazione ctrl+a che, nelle vecchie versioni di MS Office (ad esempio la 2007), invece allinea il testo al centro, non seleziona tutto; in tal caso o in casi simili quindi lo script fallirà. Da ricordare che se il file ha un nome con uno o più spazi non bisogna includerlo, come solitamente si usa, fra virgolette, altrimenti lo script non funzionerà. Per interrompere la lettura è sufficiente chiudere la finestra di Powershell.
Zigul ha scritto: ↑lun ott 09, 2023 4:09 pm
Un modo vergognosamente rudimentale per passare altri tipi di file a Narrator,
Grazie, lo proverò sicuramente appena riesco.
Update: Provato ma con un file doc di office 2019 non funziona, non mi sembra prelevi nessun dato perché nella clipboard non sembra esserci nulla.
Ottengo un errore con questa riga "& $text"
InvalidOperation: The expression after '&' in a pipeline element produced an object that was not valid. It must result in a command name, a script block, or a CommandInfo object.
Inoltre dopo la prima riga si ferma e premo Invio per farlo proseguire.
“Se tutti i documenti raccontavano la stessa favola, ecco che la menzogna diventava un fatto storico, quindi vera.”
Il messaggio di errore che hai avuto è replicabile inserendo una pipe ("|") prima di "& $text", tuttavia nello script postato la pipe non c'è. Ho provato a fare copia e incolla dal post a un file "blocco note", cambiato l'estensione in .ps1, eseguito e sembra funzionare tutto correttamente.
Dopo aver inserito il percorso con il file devi premere invio per confermare, non prosegue in automatico, così da avere la possibilità di rimuovere le eventuali virgolette o correggere possibili errori di battitura.
Zigul ha scritto: ↑gio ott 12, 2023 4:06 pm@crazy.cat
Hai avuto modo di riprovare lo script? Funziona o hai ricevuto altri errori?
Non riesco a farlo funzionare, ho provato qualche variante nello script, con il pipe ottengo un errore e non legge nulla
PowerShell 7.3.8
PS C:\Users\crazy.cat> d:\test.ps1
InvalidOperation: D:\test.ps1:2
Line |
2 | | & $text
| ~~~~~
| The expression after '&' in a pipeline element produced an object that was not valid. It must result in a
| command name, a script block, or a CommandInfo object.
PS C:\Users\crazy.cat> d:\test.ps1
InvalidOperation: D:\test.ps1:2
Line |
2 | | &$text
| ~~~~~
| The expression after '&' in a pipeline element produced an object that was not valid. It must result in a
| command name, a script block, or a CommandInfo object.
Senza il pipe appare la richiesta di premere invio, ritorna l'errore di prima, dopo i 15 secondi inizia a dire qualcosa ma non è certo il contenuto del file doc o docx che gli avevo fatto aprire.
PowerShell 7.3.8
PS C:\Users\crazy.cat> d:\test.ps1
d:\test.doc:
InvalidOperation: D:\test.ps1:2
Line |
2 | & $text
| ~~~~~
| The expression after '&' in a pipeline element produced an object that was not valid. It must result in a
| command name, a script block, or a CommandInfo object.
Ho corretto il tuo script più sopra, è scritto giusto ora?
Dal messaggio d'errore mi sembra di capire che non gli piace $text messo in quella posizione.
“Se tutti i documenti raccontavano la stessa favola, ecco che la menzogna diventava un fatto storico, quindi vera.”
Lo script originale funziona se togli la pipe prima di "& $text"; non so come ci sia andata a finire, ma non deve esserci. Funziona sia con Word che Pdf.
L'ho provato su altre macchine, anche sulla Sandbox di Windows, anche usando Powershell 7, ma sembra funzionare comunque. Se vuoi, mandami un messaggio in privato con gli errori che ti dà, così provo a risolvere (e magari imparo qualcosa di nuovo).
Zigul ha scritto: ↑dom ott 15, 2023 11:11 am
Se vuoi, mandami un messaggio in privato con gli errori che ti dà, così provo a risolvere (e magari imparo qualcosa di nuovo).
Messaggio inviato.
“Se tutti i documenti raccontavano la stessa favola, ecco che la menzogna diventava un fatto storico, quindi vera.”
Zigul ha scritto: ↑dom ott 15, 2023 11:11 am
L'ho provato su altre macchine, anche sulla Sandbox di Windows, anche usando Powershell 7, ma sembra funzionare comunque. Se vuoi, mandami un messaggio in privato con gli errori che ti dà, così provo a risolvere (e magari imparo qualcosa di nuovo).
Mi sono arreso, quando ti ho scritto funzionava, il giorno dopo non leggeva più.
Non so cosa dire.
“Se tutti i documenti raccontavano la stessa favola, ecco che la menzogna diventava un fatto storico, quindi vera.”
Così a naso, posso solo ricordarti di non usare le virgolette nel percorso del file, aumentare lo sleep di 15 se il file è lento ad aprirsi, accertarti che il programma che apre il file usi la combinazone ctrl+a per selezionare tutto, e infine di non cliccare in giro mentre lo script è in funzione altrimenti non riesce a gestire le finestre.
Inserendo un messaggio, dichiari di aver letto e accettato il regolamento di partecipazione.
Nello specifico, sei consapevole che ti stai assumendo personalmente la totale responsabilità delle tue affermazioni, anche in sede civile e/o penale,
manlevando i gestori di questo sito da ogni coinvolgimento e/o pretesa di rivalsa.
Dichiari inoltre di essere consapevole che il messaggio sarà visibile pubblicamente, accetti di diffonderlo con licenza
CC BY-NC-SA 3.0 (con attribuzione a "TurboLab.it") e rinunci ad ogni forma di compensazione (economica o altro).
Rinunci inoltre esplicitamente a qualsiasi pretesa di cancellazione del messaggio.