The speaking processor

Drömmen om den talande maskinen ] [ the 64 allophones of english ] [ SP0256 opcodes to PIC-code ]

Programmera I2C-minne med PICKit 2 ]

Bara på skoj! - Nördvarning.

Det gamla talsynteschippet SP0256 återuppstår i ny skepnad med PIC16F690 + 24LC512

På 1980-talet gjorde företaget General Instruments (det som sedan blev PIC-processorernas Microchip) ett talsynteschip SP0256 för användning i dåtidens arkadspel.
Det chippet har slutat tillverkas sedan länge (och den som hört det "prata" förstår nog varför), men om Du är road så återuppstår det nu i form av ett serieminne med de "inspelade" syntesljuden och en PIC16F690 som talsyntetisator!
( Bara på kul ... )

 
Talsyntes med PICKit 2 Starterkit-kortet, ett minikopplingsdäck, och ett serieminne 24LC512 med förinspelade talljud. Rätt samplingsfrekvens kräver en yttre 14,7456 MHz kristall.

Chip Configuration ]

Talet kan återges med en kristallörfon ( Piezoelectric Earphone, Ceramic Earphone, Crystal Earpiece ). Crystal Earphone.

"We speak not only to be heard but to be understood"

Och det ska den PIC-processorn säga ...

Det kan låta bättre om man stavar lite fel:
hello student welkome to our pik course

 hello_talk.c


Hur fungerar det?

Någon med ett SP0256 chip har spelat in alla allophoner med samplingsfrekvensen 7200 Hz. Mätvärdena från detta finns nu lagrade i en följd som 8 bitarstal i vårt EEPROM serieminne. Alla mätvärden "0" har rensats bort, och ersatts med "1". Därför kan "0" i stället användas till att markera var ett allofon tar slut och nästa tar vid i serieminnet.

I PIC-processorn finns en tabell över de olika allophonernas "startadresser". För att uttala ett allophon läser PIC-processorn från startadressen och framåt tills den träffar på talet "0".

PIC-processors TIMER2 används för "servoupdate". Efter var åttonde PWM-puls genereras ett avbrott. Avbrottsrutinen hämtar ett mätvärde från serieminnet och laddar PWM-enheten med detta. PWM-signalen utjämnas med ett lågpassfilter så att den liknar det ursprungliga tal-ljudet.


© William Sandqvist    william@kth.se