[zxspectrum] Re: ZX Ear-Mic to RS232

  • From: Luca Alimandi <luca.alimandi@xxxxxxxxxx>
  • To: zxspectrum@xxxxxxxxxxxxx
  • Date: Sun, 22 Mar 2015 22:20:49 +0100

Luca Alimandi ha scritto:
Bene! Ho fatto un primo passo: grazie ad EMG che ha ritrovato nei suoi dischetti il mio vecchio programma "Italian!" per DTP e me lo ha inviato, e al recente ritrovamento "archeologico" dei miei appunti e del listato in Assembler, sono riuscito a ricreare il funzionamento di "Italian!" come programma "stand alone" (cioè funziona senza la necessità di caricare DTP).

Inoltre, per poter programmare e testare più agevolmente, ho cambiato la porta di output dalla 251 (stampante Disciple / PlusD) a 223 (SpecDrum). In questo modo posso farla funzionare sugli emulatori che supportano la SpecDrum (ad es. Fuse).

Ebbene... FUNZIONA!
Non vi dico l'emozione nel sentire di nuovo la mia voce campionata uscire dallo Speccy (anche se emulato...)!!!

Certo, al confronto con la qualità ormai quasi perfetta delle attuali sintesi, fa un po' ridere! Ma considerati i limiti di velocità, memoria e periferiche, si difende bene!

Ora sono passato alla "fase 2", e cioè: creazione di nuovi campioni dei fonemi. Infatti quelli originali, anche se molto compatti (occupano solo 10300 byte!!!) sono a volte un po' poco intellegibili.
La cosa presenta ancora oggi qualche difficoltà, ma forse si può fare.
Però non so prevedere se, con dei campioni migliori, risulti migliore anche il risultato finale...
Vi farò sapere!


Purtroppo, dopo ore e ore di lavoro, ho avuto una cocente delusione!...
Il primo passo della "fase 2" era quello di provare a creare dei campioni migliori dei fonemi. Quelli che avevo realizzato all'epoca erano a 8 bit (e da qui non si scappa) e campionati ad una frequenza non ben definita tra gli 8 e i 10 KHz. Così pensavo di poter migliorare l'intelligibilità aumentando un po' la frequenza di campionamento. Ho pensato a 16KHz. Ma non era cosa facile, anche perchè purtroppo gli strumenti che sto usando (Audacity per la selzione dei singoli fonemi e l'ottimo SoX - Sound eXchange http://sourceforge.net/projects/sox/files/sox/14.4.0/ per la conversione in formato RAW 8bit Mono) non sono così raffinati da permettere una selezione millimetrica, come serve a questo scopo. Ho scoperto infatti uno strano comportamento di Audacity, per cui, selezionando porzioni molto piccole (dell'ordine di 400-700 campioni, ossia meno di un secondo) il programma non rende più correttamente la porzione selezionata. Addirittura sotto i 500 campioni non si sente nemmeno alcun suono. Questo l'ha reso inutilizzabile per la selezione dei singoli campioni.

Così sono tornato in parte al sistema che avevo usato all'epoca, e cioè ho usato lo stesso Spectrum (in emulazione) per ascoltare i campioni e lavorare di fino isolando man mano quello che mi serviva (proprio come facevo anni fa...).

Dopo molta fatica e tanto tempo, ho riassemblato il tutto, ho raccolto i campioni in un file, l'ho sostituito al blocco originale e poi, dopo aver adattato un po' il codice macchina, ho provato a sentire l'effeto finale.

DELUSIONE! Era addirittura peggio di quello con i campioni a 10KHz! soprattutto c'erano due problemi: un aumento del fruscio di fondo (forse dovuto ai vari passaggi) e il volume e la tonalità che non erano costanti tra un fonema e l'altro. Forse si potrebbe tentare di normalizzare i campioni, ma ormai ho l'imperssione che non si riesca a ottenere buoni risultati. L'unica cosa da fare potrebbe essere tornare a campionare direttamente con lo Spectrum, ma mi devo organizzare. Dovrei farlo con lo Spectrum fisico e con un convertitore A/D D/A che avevo costruito (e che usai all'epoca), ma non so se me la sento, almeno adesso...

Forse potrebbe essere utile realizzare prima un programma per lo Spectrum per gestire più comodamente i campioni e in generale i file audio in formato RAW. Una sorta di mini-Audacity che giri direttamente sullo Spectrum.
Non mi sembra di aver mai visto qualcosa del genere in giro.
Voi ne conoscete qualcuno? Ricordo che dovrebbe lavorare con campioni 8 bit mono o anche stereo (esistono anche interfaccine Covox stereo per lo spectrum, e RealSpectrum le emula!...), e dovrebbe lavorare in modo semi-grafico (cioè plottare l'onda del segnale permettendo operazioni tipo trim, taglia, copia e incolla, modifica dell'ampiezza, ecc... Qui potrebbero tornare utili le varie routine matematiche sviluppate da Enrico (a proposito, come vanno? Ti hanno soddisfatto alla fine?)
Vedremo cosa si potrà fare...

In compenso però ho apportato qualche miglioria (minima) al programma originale, in modo da modulare un pochino la frequenza, e quindi il tono della voce, alla fine di ogni parola e frase. In questo modo, anche se ancora non è soddisfacente, si riesce a rendere un po' meno monotona la voce durante la lettura di un testo un po' lungo.
Meglio che niente!

--

|_ /-\


Other related posts: