The phones contain two chips labeled “VW” - which we assume means “Voiceware”.

The boards feature a NEC D7759GC “ADPCM SPEECH SYNTHESIZER LSI”, which has two EEPROMS, U16 and U26, where the prompts are stored in ADPCM-format. The chip is configured to run in host mode, where due to the way the ROM is indexed (the address of a clip is referenced by a two byte value multiplied by two), only 1 MBit of space can be addressed at a time. To get around this restriction, the board employs bank switching.

The ADPCM decoder is based on the NEC uPD7720. Introduced in 1980, this was one of the world's first single chip DSPs.

You can load the dumps of those ROMs directly into your favorite player (play -t vox U16.BIN or File > Import > Raw Audio > VOX ADPCM in Audacity ; (Note, that VOX is something completely different - it just happens to make parts of the data audible)) - but even with the correct bitrate (8000 Hz), it still sounds wrong. This is because the ADPCM algorithm used in the chip works somewhat differently from conventional ones. The algorithm expands on the traditional ADPCM step table by changing the table based on one of sixteen states the chip can be in, making it somewhat more adaptive. Combined with the rather weak compression ratio (32 kbps for ADPCM to 72 kbps for 9-bit PCM at 8 khz, giving it a 2.25:1 ratio), you might think there would would be minimal companding hiss from the algorithm. Sadly, you would be wrong. From investigating many of the unrelated prompts for the chip from unrelated applications, it's clear however that a noise shaping algorithm exists that makes the companding hiss much more acceptable.

sinetek kindly provided a small programm, which will extract the voiceprompts from the ROMs and switch the nibble-order as needed. At this point, it's not 100% right yet - for example prompt 9 in U16 is not divided yet into 2 prompts and a lot of other prompts aren't extracted from the file at all. This is due to the way the chip looks for an end of a prompt; a byte with the value 0x53 is included every 128 bytes to indicate the chip should continue playing the ADPCM stream at 8khz in most instances (0x59 for 6khz and 0x5F for 5khz for the terminally curious). However, 0x93 followed by the number of remaining bytes plus one divided by two will tell the chip to look for an opcode. When it sees 0x00 in that context, it'll halt playback. The program the decoder was derive from, however, currently uses another way to search for the end of a prompt.

Many of the unplayable prompts in the ROM - for example, the synthesized dialtone, are looped 8-bit PCM samples instead of ADPCM. A single byte in the header determines the length; for single frequency tones, this can be as small as 19 bytes, but reasonably large if necessary. Proper playback of some of the tone files properly relies on a value of 0x50 being added to the final PCM byte. Why this is done is not clear, but it results in clean samples being sent to/from the chip. There's also clips consisting simply of encoded silence (the largest being 100 milliseconds) that are currently ignored by the decoder. This silence encoding method is also used extensively by some prompts - particularly the Spanish language ones.

Opcodes:

There's little documentation on the available opcodes, but some trial and error seems to suggest the chip is capable of some basic echo and looping effects. Those'll be put here as they're discovered. If you'd like to hear it, try feeding the chip a clip consisting of all 0xFFs. As shown by the bong tone on the ROM (a # key in DTMF followed by a fading dialtone), it's also capable of producing basic fading effects. This appears to be done somewhat crudely, though; the same PCM bytes are given over and over again for a fade effect, but the header for each section simply specifies a lower amplitude level.

0x40 - Decode the following clip as looped 8-bit PCM instead of ADPCM. There's also a brief header to indicate amplitude, sample rate, clip length, among other things.

0x0F - Send 128 bytes of silence to the ADPCM decoder

Invalid opcodes are interpreted as ADPCM samples by the chip.

To compile:

clang++ u16_bin.cpp

To play the resulting sound-bites:

aplay -f S16_LE -r8000 <filename>

or File > Import > Raw Audio > signed 16-bit PCM, Little Endian, 8000 Hz in Audacity (or your favorite player).

The chip can address multiple sounds. To achieve this, each sample is prefixed with the following header:

nn 5A A5 69 55 xx yy

Quoting the OpenEmu Core plugin for UME: “The sample rom has a header at the beginning of the form nn 5a a5 69 55 where nn is the number of the last sample. This is then followed by a vector of 2-bytes msb-first values, one per sample. Multiplying them by two gives the sample start offset in the rom. A 0x00 marks the end of each sample.”

Contents of VW

U16

Blob 1

Sample Language Text Notes
pcm0 English Please insert and remove your card
pcm1 English Or dial the number you are calling
pcm2 English Please remove your card
pcm3 English Please dial the number
pcm4 English Try again
pcm5 English Insert face down, with the black strip to the left
pcm6 English Please completely insert your card
pcm7 English Please hang up and then start again
pcm8 English Please use a different card
pcm9 English Your card is not valid - there is problem reading your card Probably two prompts joined together
pcm10 English There is a problem reading your card
pcm11 English Please wait
pcm12 English Thank you
pcm13 English Please deposit
pcm14 English One dollar and
pcm15 English Dollars and
pcm16 English One Dollar
pcm17 English Dollars
pcm18 unknown Static noise
pcm19 unknown Static noise
pcm20 unknown Static noise
pcm21 unknown Static noise
pcm22 unknown Static noise
pcm23 unknown Static noise
pcm24 unknown Static noise
pcm25 unknown Static noise
pcm26 unknown Static noise
pcm27 English Please Static noise + cut off voice
pcm28 unknown Static noise
pcm29 unknown Static noise
pcm30 English Please Static noise + cut off voice
pcm31 unknown Static noise
pcm32 unknown Static noise
pcm33 unknown Static noise
pcm34 unknown Static noise
pcm35 English Please wait while your call Static noise / distortion
pcm36 unknown Static noise
pcm37 unknown Static noise
pcm38 unknown Static noise
pcm39 unknown Static noise
pcm40 unknown read/file error
pcm41 unknown read/file error
pcm42 unknown read/file error
pcm43 unknown read/file error
pcm44 unknown read/file error
pcm45 unknown read/file error
pcm46 unknown read/file error
pcm47 unknown read/file error
pcm48 unknown read/file error
pcm49 unknown Static noise
pcm50 English Please wait while your call Static noise / distortion
pcm51 unknown Static noise
pcm52 English Please Static noise + cut off voice
pcm53 English Please Static noise + cut off voice
pcm54 unknown Static noise
pcm55 unknown Static noise
pcm56 English Please Static noise + cut off voice
pcm57 unknown Static noise
pcm58 English Please wait while your call Static noise / distortion
pcm59 unknown Static noise
pcm60 unknown Static noise
pcm61 unknown Static noise
pcm62 English Please Static noise + cut off voice
pcm63 unknown Static noise + cut off voice
pcm64 English Please Static noise + cut off voice
pcm65 English Please wait while you caller deposits
pcm66 English Please enter your personal identification number

Blob 2

Sample Language Text Notes
pcm0 English Cents
pcm1 English For
pcm2 English Minutes - One Minute Probably two prompts joined together
pcm3 English One Minute
pcm4 English More
pcm5 English Credit or deposit Probably two prompts joined together
pcm6 English Or deposit
pcm7 English Two
pcm8 English Three
pcm9 English Four
pcm10 English Five
pcm11 English Six
pcm12 English Seven
pcm13 English Eight
pcm14 English Nine
pcm15 English Ten
pcm16 English Eleven
pcm17 English Twelve
pcm18 English Thirteen
pcm19 English Fourteen - Fif[teen] Probably two prompts joined together
pcm20 English Fifteen
pcm21 English Five
pcm22 English Ten
pcm23 English Fifteen
pcm24 English Twenty
pcm25 English Twenty-five
pcm26 English Thirty
pcm27 English Thirty-five
pcm28 English Forty
pcm29 English Forty-five
pcm30 English Fifty
pcm31 English Fifty-five
pcm32 English Sixty
pcm33 English Sixty-five - Seventy Probably two prompts joined together
pcm34 English Seventy
pcm35 English Seventy-five
pcm36 English Eighty
pcm37 English Eighty-five
pcm38 English Ninety
pcm39 English Ninety-five
pcm40 English To leave a message
pcm41 English Please look at the display
pcm42 English Sixteen
pcm43 English Seventeen
pcm44 English Eighteen
pcm45 English Nineteen
pcm46 English Twenty-one
pcm47 English Twenty-two
pcm48 Japanese :?: To be translated
pcm49 Japanese :?: To be translated

Blob 3

Sample Language Text Notes
pcm0 Spanish :?: To be translated
pcm1 Spanish :?: To be translated
pcm2 Spanish :?: To be translated
pcm3 Spanish :?: To be translated
pcm4 Spanish :?: To be translated
pcm5 Spanish :?: To be translated
pcm6 Spanish :?: To be translated
pcm7 Spanish :?: To be translated
pcm8 Spanish :?: To be translated
pcm9 Spanish :?: To be translated
pcm10 Spanish :?: To be translated
pcm11 Spanish :?: To be translated
pcm12 Spanish :?: To be translated
pcm13 Spanish :?: To be translated
pcm14 Spanish :?: To be translated
pcm15 Spanish :?: To be translated
pcm16 unknown read/file error
pcm17 Spanish :?: To be translated
pcm18 Spanish :?: To be translated

Blob 4

Sample Language Text Notes
pcm0 Spanish :?: To be translated
pcm1 Spanish :?: To be translated
pcm2 Spanish :?: To be translated
pcm3 Spanish :?: To be translated
pcm4 Spanish :?: To be translated
pcm5 Spanish :?: To be translated
pcm6 Spanish :?: To be translated
pcm7 Spanish :?: To be translated
pcm8 Spanish :?: To be translated
pcm9 Spanish :?: To be translated
pcm10 Spanish :?: To be translated
pcm11 Spanish :?: To be translated
pcm12 Spanish :?: To be translated
pcm13 Spanish :?: To be translated
pcm14 Spanish :?: To be translated
pcm15 Spanish :?: To be translated
pcm16 Spanish :?: To be translated
pcm17 Spanish :?: To be translated
pcm18 Spanish :?: To be translated
pcm19 Spanish :?: To be translated
pcm20 Spanish :?: To be translated
pcm21 Spanish :?: To be translated
pcm22 Spanish :?: To be translated
pcm23 Spanish :?: To be translated
pcm24 Spanish :?: To be translated
pcm25 Spanish :?: To be translated
pcm26 Spanish :?: To be translated
pcm27 Spanish :?: To be translated
pcm28 Spanish :?: To be translated
pcm29 Spanish :?: To be translated
pcm30 Spanish :?: To be translated
pcm31 Spanish :?: To be translated
pcm32 Spanish :?: To be translated
pcm33 Spanish :?: To be translated
pcm34 Spanish :?: To be translated
pcm35 Spanish :?: To be translated
pcm36 Spanish :?: To be translated
pcm37 Spanish :?: To be translated
pcm38 Spanish :?: To be translated
pcm39 Spanish :?: To be translated
pcm40 Spanish :?: To be translated
pcm41 Spanish :?: To be translated
pcm42 Spanish :?: To be translated
pcm43 Spanish :?: To be translated
pcm44 Spanish :?: To be translated
pcm45 Spanish :?: To be translated
pcm46 Spanish :?: To be translated
pcm47 Spanish :?: To be translated
pcm48 Spanish :?: To be translated
pcm49 Janapese :?: To be translated
pcm50 unknown :?: To be translated

Blob 5

Sample Language Text Notes
pcm0 French Veuillez introduire et retirer votre carte
pcm1 French Ou faire le numero que vous desirez obtenir
pcm2 French Veuillez retirer votre carte
pcm3 French Veuillez faire le numero
pcm4 French Veuillez recommencer
pcm5 French Verso vers le haut et bande noire vers la gauche
pcm6 French Enfoncer bien votre carte
pcm7 French Veuillez raccrocher puis recommencer
pcm8 French Vous devez vous servir d'un autre carte
pcm9 French La carte n'est pas valide
pcm10 French Le système ne reussi pas à lire votre carte
pcm11 French Veuillez patienter
pcm12 French Merci
pcm13 French Veuillez deposer
pcm14 French Un Dollar et
pcm15 French Veuillez entrer votre numero d'identification personnel
pcm16 unknown read/file error
pcm17 French Pour laisser un message
pcm18 French Veuillez maintenant suivre les directives à l'écran

Blob 6

Sample Language Text Notes
pcm0 French Dollar et
pcm1 French Un Dollar
pcm2 French Dollar
pcm3 French Cent
pcm4 French Pour obtenir
pcm5 French Minute
pcm6 French Une minute
pcm7 French Autre
pcm8 French Credit
pcm9 French Ou deposer
pcm10 French Deux
pcm11 French Trois
pcm12 French Quatre
pcm13 French Cinq
pcm14 French Six
pcm15 French Sept
pcm16 French Huit
pcm17 French Neuf
pcm18 French Dix
pcm19 French Onze
pcm20 French Douze
pcm21 French Treize
pcm22 French Quatorze
pcm23 French Quinze
pcm24 French Cinq
pcm25 French Dix
pcm26 French Quinze
pcm27 French Vingt
pcm28 French Vingt-cinq
pcm29 French Trente
pcm30 French Trente-cinq
pcm31 French Quarante
pcm32 French Quarante-cinq
pcm33 French Cinquante
pcm34 French Cinquante-cinq - Soixante Probably two prompts joined together
pcm35 French Soixante
pcm36 French Soixante-cinq
pcm37 French Soixante-dix
pcm38 French Soixante-quinze
pcm39 French Quatre-vingt
pcm40 French Quatre-vingt-cinq
pcm41 French Quatre-vingt-dix
pcm42 French Quatre-vingt-quinze
pcm43 French Seize
pcm44 French Dix-sept
pcm45 French Dix-huit
pcm46 French Dix-neuf
pcm47 French Vingt-et-un
pcm48 French Vingt-deux
pcm49 Japanese :?: To be translated
pcm50 Japanese :?: To be translated
pcm51 Japanese :?: To be translated
pcm52 Japanese :?: To be translated
pcm53 Japanese :?: To be translated
pcm54 Japanese :?: To be translated
pcm55 Japanese :?: To be translated

Blob 7

Sample Language Text Notes
pcm0 Japanese :?: To be translated
pcm1 Japanese :?: To be translated
pcm2 Japanese :?: To be translated
pcm3 Japanese :?: To be translated
pcm4 Japanese :?: To be translated
pcm5 Japanese :?: To be translated
pcm6 Japanese :?: To be translated
pcm7 Japanese :?: To be translated
pcm8 Japanese :?: To be translated
pcm9 Japanese :?: To be translated
pcm10 Japanese :?: To be translated
pcm11 Japanese :?: To be translated
pcm12 Japanese :?: To be translated
pcm13 Japanese :?: To be translated
pcm14 Japanese :?: To be translated
pcm15 Japanese :?: To be translated
pcm16 unknown read/file error
pcm17 unknown read/file error
pcm18 unknown read/file error

Blob 8

Sample Language Text Notes
pcm0 Japanese :?: To be translated
pcm1 Japanese :?: To be translated
pcm2 Japanese :?: To be translated
pcm3 Japanese :?: To be translated
pcm4 Japanese :?: To be translated
pcm5 Japanese :?: To be translated
pcm6 Japanese :?: To be translated
pcm7 Japanese :?: To be translated
pcm8 Japanese :?: To be translated
pcm9 Japanese :?: To be translated
pcm10 Japanese :?: To be translated
pcm11 Japanese :?: To be translated
pcm12 Japanese :?: To be translated
pcm13 Japanese :?: To be translated
pcm14 Japanese :?: To be translated
pcm15 Japanese :?: To be translated
pcm16 Japanese :?: To be translated
pcm17 Japanese :?: To be translated
pcm18 Japanese :?: To be translated
pcm19 Japanese :?: To be translated
pcm20 Japanese :?: To be translated
pcm21 Japanese :?: To be translated
pcm22 Japanese :?: To be translated
pcm23 Japanese :?: To be translated
pcm24 Japanese :?: To be translated
pcm25 Japanese :?: To be translated
pcm26 Japanese :?: To be translated
pcm27 Japanese :?: To be translated
pcm28 Japanese :?: To be translated
pcm29 Japanese :?: To be translated
pcm30 Japanese :?: To be translated
pcm31 Japanese :?: To be translated
pcm32 Japanese :?: To be translated
pcm33 Japanese :?: To be translated
pcm34 Japanese :?: To be translated
pcm35 Japanese :?: To be translated
pcm36 Japanese :?: To be translated
pcm37 Japanese :?: To be translated
pcm38 Japanese :?: To be translated
pcm39 Japanese :?: To be translated
pcm40 Japanese :?: To be translated
pcm41 Japanese :?: To be translated
pcm42 Japanese :?: To be translated
pcm43 Japanese :?: To be translated
pcm44 Japanese :?: To be translated
pcm45 Japanese :?: To be translated
pcm46 Japanese :?: To be translated
pcm47 Japanese :?: To be translated
pcm48 Japanese :?: To be translated
pcm49 Japanese :?: To be translated
pcm50 Japanese :?: To be translated
pcm51 Japanese :?: To be translated

U26

Blob 1

Sample Language Text Notes
pcm0 English GTE
pcm1 English US West Express
pcm2 English Long distance
pcm3 English Welcome to
pcm4 English Operator Services
pcm5 English Thank you for using
pcm6 English Please the calling-card number now
pcm7 English Press 1 1 for a collect call
pcm8 English Or press 0 for the operator
pcm9 English Coin service not available
pcm10 English Cardreader service not available
pcm11 English Hundred
pcm12 English No access
pcm13 English Percent
pcm14 English Seconds
pcm15 English Watch the display
pcm16 English For special offers
pcm17 English For special offers
pcm18 English During your call
pcm19 English During your call
pcm20 English Press
pcm21 English For valuable offers
pcm22 English For cool offers
pcm23 English Do not deposit coins
pcm24 English This is
pcm25 English Please
pcm26 English Deposit
pcm27 English Or
pcm28 English The
pcm29 English A

Blob 2

Sample Language Text Notes
pcm0 English Completely insert your card
pcm1 English Payphones
pcm2 English The star-button
pcm3 English The numbersign-button
pcm4 English For callcharges
pcm5 English Additional
pcm6 English Each
pcm7 English A maximum of
pcm8 English Minute
pcm9 English The next
pcm10 Spanish :?: To be translated
pcm11 Spanish :?: To be translated
pcm12 Spanish :?: To be translated
pcm13 Spanish :?: To be translated
pcm14 Spanish :?: To be translated
pcm15 Spanish :?: To be translated
pcm16 Spanish :?: To be translated
pcm17 Spanish :?: To be translated
pcm18 Spanish :?: To be translated
pcm19 Spanish :?: To be translated
pcm20 Spanish :?: To be translated
pcm21 Spanish :?: To be translated

Blob 3

Sample Language Text Notes
pcm0 Spanish :?: To be translated
pcm1 Spanish :?: To be translated
pcm2 Spanish :?: To be translated
pcm3 Spanish :?: To be translated
pcm4 Spanish :?: To be translated
pcm5 Spanish :?: To be translated
pcm6 Spanish :?: To be translated
pcm7 Spanish :?: To be translated
pcm8 Spanish :?: To be translated
pcm9 Spanish :?: To be translated
pcm10 Spanish :?: To be translated
pcm11 Spanish :?: To be translated
pcm12 Spanish :?: To be translated
pcm13 Spanish :?: To be translated
pcm14 Spanish :?: To be translated
pcm15 Spanish :?: To be translated
pcm16 Spanish :?: To be translated
pcm17 Spanish :?: To be translated
pcm18 Spanish :?: To be translated
pcm19 Spanish :?: To be translated
pcm20 Spanish :?: To be translated
pcm21 Spanish :?: To be translated
pcm22 Spanish :?: To be translated
pcm23 Spanish :?: To be translated
pcm24 Spanish :?: To be translated
pcm25 Spanish :?: To be translated
pcm26 Spanish :?: To be translated
pcm27 Spanish :?: To be translated
pcm28 Spanish :?: To be translated

Blob 4

Sample Language Text Notes
pcm0 Spanish :?: To be translated
pcm1 Spanish :?: To be translated
pcm2 Spanish :?: To be translated
pcm3 Spanish :?: To be translated
pcm4 Spanish :?: To be translated
pcm5 Spanish :?: To be translated
pcm6 Spanish :?: To be translated
pcm7 Spanish :?: To be translated
pcm8 Spanish :?: To be translated
pcm9 Spanish :?: To be translated
pcm10 Spanish :?: To be translated
pcm11 Spanish :?: To be translated
pcm12 Spanish :?: To be translated
pcm13 Spanish :?: To be translated
pcm14 Spanish :?: To be translated

Blob 5

Sample Language Text Notes
pcm0 Spanish :?: To be translated
pcm1 Spanish :?: To be translated
pcm2 Spanish :?: To be translated
pcm3 Spanish :?: To be translated
pcm4 Spanish :?: To be translated
pcm5 Spanish :?: To be translated
pcm6 Spanish :?: To be translated
pcm7 Spanish :?: To be translated
pcm8 Spanish :?: To be translated
pcm9 Spanish :?: To be translated
pcm10 Spanish :?: To be translated
pcm11 Spanish :?: To be translated
pcm12 Spanish :?: To be translated
pcm13 Spanish :?: To be translated
pcm14 Spanish :?: To be translated
pcm15 Spanish :?: To be translated
pcm16 Spanish :?: To be translated
pcm17 Spanish :?: To be translated
pcm18 French GTE
pcm19 French US West Express
pcm20 French Service interurbain
pcm21 French Service interurbain de
pcm22 French Bienvenue à
pcm23 French Bienvenue au
pcm24 French Service de telephoniste
pcm25 French Service de telephoniste de
pcm26 French Cent
pcm27 French Pourcent

Blob 6

Sample Language Text Notes
pcm0 French Merci d'avoir choisi
pcm1 French Merci d'avoir choisi le
pcm2 French Entre le numero de votre carte d'appel maintenant
pcm3 French Pour un appel a frais virées, appuyez sur 1 1
pcm4 French Ou faites le 0 pour demander l'aide du telephoniste
pcm5 French Vous ne pouvez obtenir ce numero
pcm6 French Les pieces de monnaie necessaires
pcm7 French Regardez l'afficheur
pcm8 French Regardez l'afficheur
pcm9 French Pour prendre connaissance des offres speciales
pcm10 French Pour prendre connaissance des offres speciales
pcm11 French Pendant l'appel
pcm12 French Pendant l'appel
pcm13 French Pour prendre connaissance des offres interessantes
pcm14 French Pour prendre connaissance des offres interessantes
pcm15 French Pour prendre connaissance des offres alléchantes

Blob 7

Sample Language Text Notes
pcm0 French Appuyez sur
pcm1 French Votre appel ne peut être achiminé, selon le numero composé
pcm2 French Ici le
pcm3 French Ici le
pcm4 French Veuillez
pcm5 French Deposer
pcm6 French Ou
pcm7 French La
pcm8 French Le
pcm9 French Les
pcm10 French Un
pcm11 French Une
pcm12 French Introduire votre carte completement
pcm13 French Introduire votre carte completement
pcm14 French Introduire completement votre carte
pcm15 French Introduire completement votre carte
pcm16 French Les telephones publiques
pcm17 French L'étoile
pcm18 French Le caré
pcm19 French Pour obtenir les frais d'appel
pcm20 French Additionel
pcm21 French Chaque
pcm22 French Un maximum de
pcm23 French Minute
pcm24 French Minute
pcm25 French Un
pcm26 French Une
pcm27 French Prochaine
pcm28 Japanese :?: To be translated
pcm29 Japanese :?: To be translated
pcm30 Japanese :?: To be translated
pcm31 Japanese :?: To be translated
pcm32 Japanese :?: To be translated

Blob 8

Sample Language Text Notes
pcm0 Japanese :?: To be translated
pcm1 Japanese :?: To be translated
pcm2 Japanese :?: To be translated
pcm3 Japanese :?: To be translated
pcm4 Japanese :?: To be translated
pcm5 Japanese :?: To be translated
pcm6 Japanese :?: To be translated
pcm7 Japanese :?: To be translated
pcm8 Japanese :?: To be translated
pcm9 Japanese :?: To be translated
pcm10 Japanese :?: To be translated
pcm11 Japanese :?: To be translated
pcm12 Japanese :?: To be translated
pcm13 Japanese :?: To be translated
pcm14 Japanese :?: To be translated
pcm15 Japanese :?: To be translated
pcm16 Japanese :?: To be translated
pcm17 Japanese :?: To be translated
pcm18 Japanese :?: To be translated
pcm19 Japanese :?: To be translated
pcm20 Japanese :?: To be translated
 
millennium/voiceware.txt · Last modified: 2017/12/16 11:13 by ::1