Jump to content

MIDIbox SAM


imaginarion
 Share

Recommended Posts

Hello,

SAM, Software Automatic Mouth, is an old "text-to-speech" program. It was released in 1982 and worked on most computers of the era.
It was recently adapted to C by Sebastian Macke as a very tiny code. Source code Github.

Here a web version of SAM, and a another one with parameters here.

I've got two Texas Instrument speech device, one "Speak and Spell" and a "Math and Spell" but they are waiting since a long time now to be modified... Too much time :/
So when I read the @imaginarionthread
I couldn't help but go and look at the code.


And obviously I tried to do something with it :decayed:

First thing to understand is this program is not realtime, after converting the text to phoneme, each of this phoneme are converted to formants, then each sample is pushed in a buffer.
When finished the samples buffer is written to a wave file or sent to an audio output using SDL.
But it's 22KHz 8bit sound then depending on the duration this buffer can be too much big for our small Core.  But ok let's try...

For us(MIDIboxer/musician) the purpose is to play it from MIDI, the perfect thing should be to get a text, a sentence or a word associated to midi note, like a "speech kit" or one text pitched along the midi note range, but that will be for another time ;)
First thing to try is to adapt the code to MIOS32, put something in and check what it can output.
The best and easiest way for a test, is to implement SAM as a module, write some code to input text from MIOS Studio terminal then write the wave file to the SD card

This is what I did:
So I imported the github flies and put it in a new software module named "sam".
Added a sam.mk file in it to include the necessary .c and .h files.

# defines additional rules for integrating the random module

# enhance include path
C_INCLUDE += -I $(MIOS32_PATH)/modules/sam/src


# add modules to thumb sources (TODO: provide makefile option to add code to ARM sources)
THUMB_SOURCE += \
  $(MIOS32_PATH)/modules/sam/src/sam.c \
  $(MIOS32_PATH)/modules/sam/src/debug.c \
  $(MIOS32_PATH)/modules/sam/src/render.c \
  $(MIOS32_PATH)/modules/sam/src/processframes.c \
  $(MIOS32_PATH)/modules/sam/src/createtransitions.c \
  $(MIOS32_PATH)/modules/sam/src/reciter.c


# directories and files that should be part of the distribution (release) package
DIST += $(MIOS32_PATH)/modules/sam/src

Then I took the inspiration from the non included main.c file to create a MIOS32 project and write a terminal.c file

Some modification were done in the SAM's files.

  • all printf function were replaced by MIOS32_MIDI_SendDebugMessage
  • the buffer memory allocation malloc was removed and size was reduced until no more "FAULT" error ;)
  • the 8 bits samples were reduced to 4bits to meet the original SID resolution, I put it back to 8. This can be done easily after if necessary depending on our future audio output device.
     

After a couple of hours, it was working.
Command and text are send to SAM thru the terminal, the result is written on the SD Card
Here the menu and usage then the debug verbose:
 

[28337.121] SD Card status 1
[28339.122] SD Card status 3
[28339.122] SD Card CONNECTED

[28342.433] help

[28342.435] Welcome to the HAARP Terminal!
[28342.435] Following commands are available:
[28342.435]   sam_usage:                         SAM Usage
[28342.435]   sam:                               SAM
[28342.435]   reset:                             resets the MIDIbox (!)
[28342.435]   help:                              this page

[28345.225] sam_usage

[28345.227] usage: sam [options] Word1 Word2 ....
[28345.227] options
[28345.227]   -phonetic     enters phonetic mode. (see below)
[28345.227]   -pitch number    set pitch value (default=64)
[28345.227]   -speed number    set speed value (default=72)
[28345.227]   -throat number    set throat value (default=128)
[28345.227]   -mouth number    set mouth value (default=128)
[28345.227]   -wav filename    output to wav instead of libsdl
[28345.228]   -sing      special treatment of pitch
[28345.228]   -debug      print additional debug messages
[28345.228] 
[28345.228]      VOWELS                            VOICED CONSONANTS  
[28345.228] IY           f(ee)t                    R        red    
[28345.228] IH           p(i)n                     L        allow    
[28345.228] EH           beg                       W        away    
[28345.228] AE           Sam                       W        whale    
[28345.228] AA           pot                       Y        you    
[28345.228] AH           b(u)dget                  M        Sam    
[28345.228] AO           t(al)k                    N        man    
[28345.229] OH           cone                      NX       so(ng)    
[28345.229] UH           book                      B        bad    
[28345.229] UX           l(oo)t                    D        dog    
[28345.229] ER           bird                      G        again    
[28345.229] AX           gall(o)n                  J        judge    
[28345.229] IX           dig(i)t                   Z        zoo    
[28345.229]                ZH       plea(s)ure  
[28345.229]    DIPHTHONGS                          V        seven    
[28345.229] EY           m(a)de                    DH       (th)en    
[28345.230] AY           h(igh)            
[28345.230] OY           boy            
[28345.230] AW           h(ow)                     UNVOICED CONSONANTS  
[28345.230] OW           slow                      S         Sam    
[28345.230] UW           crew                      Sh        fish    
[28345.230]                                        F         fish    
[28345.230]                                        TH        thin    
[28345.230]  SPECIAL PHONEMES                      P         poke    
[28345.230] UL           sett(le) (=AXL)           T         talk    
[28345.230] UM           astron(omy) (=AXM)        K         cake    
[28345.231] UN           functi(on) (=AXN)         CH        speech    
[28345.232] Q            kitt-en (glottal stop)    /H        a(h)ead  

[28359.145] sam -debug -pitch 64 -speed 128 -mouth 128 -wav TEST_OK midibox sam is great!

[28359.147] text input: MIDIBOX SAM IS GREAT! 
[28359.147] Applying rule: 
[28359.147] (
[28359.147] M
[28359.147] )
[28359.147]  -> 
[28359.147] M
[28359.147] 
[28359.147] Applying rule: 
[28359.147] (
[28359.147] I
[28359.147] )
[28359.147] ^
[28359.148] +
[28359.148] :
[28359.148] #
[28359.148]  -> 
[28359.148] I
[28359.148] H
[28359.148] 
[28359.148] Applying rule: 
[28359.148] (
[28359.148] D
[28359.148] )
[28359.148]  -> 
[28359.148] D
[28359.148] 
[28359.148] Applying rule: 
[28359.148] I
[28359.148] ^
[28359.148] (
[28359.148] I
[28359.148] )
[28359.148] ^
[28359.148] #
[28359.148]  -> 
[28359.148] I
[28359.148] H
[28359.148] 
[28359.148] Applying rule: 
[28359.148] (
[28359.148] B
[28359.148] )
[28359.148]  -> 
[28359.148] B
[28359.148] 
[28359.148] Applying rule: 
[28359.148] (
[28359.148] O
[28359.148] )
[28359.148]  -> 
[28359.148] A
[28359.148] A
[28359.148] 
[28359.149] Applying rule: 
[28359.149] (
[28359.149] X
[28359.149] )
[28359.149]  -> 
[28359.149] K
[28359.149] S
[28359.149] 
[28359.149] Applying rule: 
[28359.149] (
[28359.149] S
[28359.149] )
[28359.149]  -> 
[28359.149] S
[28359.149] 
[28359.149] Applying rule: 
[28359.149] (
[28359.149] A
[28359.149] )
[28359.149]  -> 
[28359.149] A
[28359.149] E
[28359.149] 
[28359.149] Applying rule: 
[28359.149] (
[28359.149] M
[28359.149] )
[28359.149]  -> 
[28359.149] M
[28359.149] 
[28359.149] Applying rule: 
[28359.149] (
[28359.149] I
[28359.149] )
[28359.149]  -> 
[28359.149] I
[28359.149] H
[28359.149] 
[28359.149] Applying rule: 
[28359.149]  
[28359.149] :
[28359.149] #
[28359.149] (
[28359.149] S
[28359.150] )
[28359.150]  
[28359.150]  -> 
[28359.150] Z
[28359.150] 
[28359.150] Applying rule: 
[28359.150] (
[28359.150] G
[28359.150] R
[28359.150] E
[28359.150] A
[28359.150] T
[28359.150] )
[28359.150]  -> 
[28359.150] G
[28359.150] R
[28359.150] E
[28359.150] Y
[28359.150] 4
[28359.150] T
[28359.150] 
[28359.150] Applying rule: 
[28359.150] (
[28359.150] !
[28359.150] )
[28359.150]  -> 
[28359.150] .
[28359.150] 
[28359.150] phonetic input:  MIHDIHBAAKS SAEM IHZ GREY4T. �
[28359.150] ===========================================
[28359.150] Internal Phoneme presentation:
[28359.150]  idx    phoneme  length  stress
[28359.150] ------------------------------
[28359.151]    0       *        0       0
[28359.151]   27      M*        0       0
[28359.151]    6      IH        0       0
[28359.151]   57      D*        0       0
[28359.151]    6      IH        0       0
[28359.151]   54      B*        0       0
[28359.151]    9      AA        0       0
[28359.151]   72      K*        0       0
[28359.151]   32      S*        0       0
[28359.151]    0       *        0       0
[28359.151]   32      S*        0       0
[28359.151]    8      AE        0       0
[28359.151]   27      M*        0       0
[28359.151]    0       *        0       0
[28359.151]    6      IH        0       0
[28359.152]   38      Z*        0       0
[28359.152]    0       *        0       0
[28359.152]   60      G*        0       0
[28359.152]   23      R*        0       0
[28359.152]   48      EY        0       4
[28359.152]   69      T*        0       0
[28359.152]    1      .*        0       0
[28359.152]    0       *        0       0
[28359.154] ===========================================
[28359.154] 
[28359.154] Parser2
[28359.154] 0:  *
[28359.154] 1: M*
[28359.154] 2: IH
[28359.154] 3: D*
[28359.154] RULE: Soften T or D following vowel or ER and preceding a pause -> DX
[28359.154] 4: IH
[28359.154] 5: B*
[28359.154] 6: AA
[28359.154] 7: K*
[28359.154] RULE: K <VOWEL OR DIPTHONG NOT ENDING WITH IY> -> KX <VOWEL OR DIPTHONG NOT ENDING WITH IY>
[28359.154] 8: S*
[28359.154] 9:  *
[28359.154] 10: S*
[28359.154] 11: AE
[28359.154] 12: M*
[28359.154] 13:  *
[28359.154] 14: IH
[28359.154] 15: Z*
[28359.154] 16:  *
[28359.154] 17: G*
[28359.154] RULE: G <VOWEL OR DIPTHONG NOT ENDING WITH IY> -> GX <VOWEL OR DIPTHONG NOT ENDING WITH IY>
[28359.154] 18: R*
[28359.154] 19: EY
[28359.154] RULE: insert YX following dipthong ending in IY sound
[28359.154] 20: YX
[28359.154] 21: T*
[28359.154] 22: .*
[28359.154] 23:  *
[28359.154] RULE: Lengthen <FRICATIVE> or <VOICED> between <VOWEL> and <PUNCTUATION> by 1.5
[28359.154] PRE
[28359.154] phoneme 20 (YX) length 8
[28359.154] POST
[28359.154] phoneme 20 (YX) length 13
[28359.154] RULE: Lengthen <FRICATIVE> or <VOICED> between <VOWEL> and <PUNCTUATION> by 1.5
[28359.154] PRE
[28359.154] phoneme 21 (T*) length 4
[28359.154] POST
[28359.154] phoneme 21 (T*) length 7
[28359.154] RULE: <VOWEL> <VOICED CONSONANT> - increase vowel by 1/2 + 1
[28359.154] PRE
[28359.154] phoneme 3 (DX) length 2
[28359.154] POST
[28359.154] phoneme 4 (IH) length 11
[28359.154] RULE: <VOWEL> <UNVOICED PLOSIVE> - decrease vowel by 1/8th
[28359.155] PRE
[28359.155] phoneme 6 (AA) length 11
[28359.155] POST
[28359.155] phoneme 6 (AA) length 10
[28359.155] RULE: <VOWEL> <VOICED CONSONANT> - increase vowel by 1/2 + 1
[28359.155] PRE
[28359.155] phoneme 10 (S*) length 2
[28359.155] POST
[28359.155] phoneme 11 (AE) length 11
[28359.155] RULE: <VOWEL> <VOICED CONSONANT> - increase vowel by 1/2 + 1
[28359.155] PRE
[28359.155] phoneme 13 ( *) length 0
[28359.155] POST
[28359.155] phoneme 14 (IH) length 11
[28359.155] RULE: <LIQUID CONSONANT> <DIPTHONG> - decrease by 2
[28359.155] PRE
[28359.155] phoneme 18 (R*) length 10
[28359.155] POST
[28359.155] phoneme 18 (R*) length 8
[28359.156] RULE: <VOWEL> <UNVOICED PLOSIVE> - decrease vowel by 1/8th
[28359.156] PRE
[28359.156] phoneme 20 (YX) length 13
[28359.156] POST
[28359.156] phoneme 20 (YX) length 12
[28359.156] ===========================================
[28359.156] Internal Phoneme presentation:
[28359.156]  idx    phoneme  length  stress
[28359.156] ------------------------------
[28359.156]    0       *        0       0
[28359.156]   27      M*        7       0
[28359.156]    6      IH        8       0
[28359.156]   30      DX        2       0
[28359.156]    6      IH       11       0
[28359.156]   54      B*        6       0
[28359.157]   55      **        1       0
[28359.157]   56      **        2       0
[28359.157]    9      AA       10       0
[28359.157]   75      KX        6       0
[28359.157]   76      **        1       0
[28359.157]   77      **        4       0
[28359.157]   32      S*        2       0
[28359.157]    0       *        0       0
[28359.157]   32      S*        2       0
[28359.157]    8      AE       11       0
[28359.157]   27      M*        7       0
[28359.157]    0       *        0       0
[28359.157]    6      IH       11       0
[28359.157]   38      Z*        6       0
[28359.157]    0       *        0       0
[28359.158]   63      GX        6       0
[28359.158]   64      **        1       0
[28359.158]   65      **        2       0
[28359.158]   23      R*        8       5
[28359.158]   48      EY       14       4
[28359.158]   21      YX       12       4
[28359.158]   69      T*        7       0
[28359.158]   70      **        2       0
[28359.158]   71      **        2       0
[28359.158]    1      .*       18       0
[28359.158]  254      ??             0
[28359.158]    0       *        0       0
[28359.158] ===========================================
[28359.158] 
[28359.159] ===========================================
[28359.159] Final data for speech output:
[28359.159]  flags ampl1 freq1 ampl2 freq2 ampl3 freq3 pitch
[28359.159] ------------------------------------------------
[28359.159]     0     9     6     2    46     0    81    61
[28359.159]     0     9     6     2    46     0    81    61
[28359.159]     0     9     6     2    46     0    81    61
[28359.159]     0     9     6     2    46     0    81    61
[28359.159]     0     9     6     2    46     0    81    61
[28359.159]     0     9     6     2    46     0    81    61
[28359.160]     0     9     6     2    46     0    81    61
[28359.160]     0     9    10     4    59     2    87    59
[28359.160]     0    11    14     8    72     4    93    57
[28359.160]     0    11    14     8    72     4    93    57
[28359.160]     0    11    14     8    72     4    93    57
[28359.160]     0    11    14     8    72     4    93    57
[28359.160]     0    11    14     8    72     4    93    57
[28359.160]     0    11    14     8    72     4    93    57
[28359.160]     0    23    96    23   151    29   102    16
[28359.160]     0    44   179     6   230     6   111   231
[28359.161]     0     0     6     0    54     0   121    61
[28359.161]     0     2     8     2    60     2   197    60
[28359.161]     0     4    11     4    66     2    17    59
[28359.161]     0    11    14     8    72     4    93    57
[28359.161]     0    11    14     8    72     4    93    57
[28359.161]     0    11    14     8    72     4    93    57
[28359.161]     0    11    14     8    72     4    93    57
[28359.162]     0    11    14     8    72     4    93    57
[28359.162]     0    11    14     8    72     4    93    57
[28359.162]     0    11    14     8    72     4    93    57
[28359.162]     0    11    14     8    72     4    93    57
[28359.162]     0    26    76    29   124     2   154    26
[28359.162]     0     9   138    14   177     6   215   251
[28359.162]     0    36   200    30   229    36    20   220
[28359.162]     0     2     6     0    26     0    81    61
[28359.162]     0     2     6     0    26     0    81    61
[28359.162]     0     2     6     0    26     0    81    61
[28359.162]     0     2     6     0    26     0    81    61
[28359.162]     0     2     6     1    26     0    81    61
[28359.162]     0     0     6     0    26     0    81    61
[28359.162]     0     0     6     0    26     0    81    61
[28359.163]     0     3    12     2    30     0    83    58
[28359.163]     0     6    19     4    35     0    86    55
[28359.163]     0    15    26    11    40     1    89    51
[28359.163]     0    15    26    11    40     1    89    51
[28359.163]     0    15    26    11    40     1    89    51
[28359.163]     0    15    26    11    40     1    89    51
[28359.163]     0    15    26    11    40     1    89    51
[28359.163]     0    15    26    11    40     1    89    51
[28359.163]     0    20    65    30    47     8    89    32
[28359.164]     0    23   104    23    54    23    90    12
[28359.164]     0     9   144    16    62    17    91   248
[28359.164]     0    44   183    44    69    10    92   229
[28359.164]     0    51   222    51    76    73    93   209
[28359.164]     0     0     6     0    84     0    94    61
[28359.164]     0     0     6     0    84     0    94    61
[28359.164]     0     0     6     0    84     0    94    61
[28359.164]     0     0     6     6    84     3    94    61
[28359.164]     0     0     6     0    84     0    94    61
[28359.165]     0     0     6     0    84     0    94    61
[28359.165]     0     0     6     0    84     0    94    61
[28359.165]     0     0     6     0   133     0    95    61
[28359.165]   241     0     6     0   182     0    96    61
[28359.165]   241     0     6     0   231     0    97    61
[28359.165]   241     0     6     0    24     0    98    61
[28359.165]   241     0     6     0    73     0    99    61
[28359.166]     0     2    10     2   134     2   160    59
[28359.166]     0     4    15     4   195     2   221    57
[28359.166]     0     8    19     6     0     3    26    55
[28359.166]     0    15    24    13    62     4    88    52
[28359.166]     0    15    24    13    62     4    88    52
[28359.166]     0    15    24    13    62     4    88    52
[28359.166]     0    15    24    13    62     4    88    52
[28359.166]     0    15    24    13    62     4    88    52
[28359.166]     0    15    24    13    62     4    88    52
[28359.166]     0    15    24    13    62     4    88    52
[28359.167]     0    15    24    13    62     4    88    52
[28359.167]     0     6   143    10   182     6   212   249
[28359.167]     0     9     6     2    46     0    81    61
[28359.167]     0     9     6     2    46     0    81    61
[28359.167]     0     9     6     2    46     0    81    61
[28359.167]     0     9     6     2    46     0    81    61
[28359.167]     0     9     6     2    46     0    81    61
[28359.168]     0     9     6     2    46     0    81    61
[28359.168]     0     9    10     4    59     2    87    59
[28359.168]     0    11    14     8    72     4    93    57
[28359.168]     0    11    14     8    72     4    93    57
[28359.168]     0    11    14     8    72     4    93    57
[28359.168]     0    11    14     8    72     4    93    57
[28359.168]     0    11    14     8    72     4    93    57
[28359.168]     0    11    14     8    72     4    93    57
[28359.168]     0    11    14     8    72     4    93    57
[28359.168]     0    11    14     8    72     4    93    57
[28359.168]     0    29    64    23   119    20    93    32
[28359.169]     0    18   114    20   166    26    93     7
[28359.169]     1     6   164     6   213     6    93   238
[28359.169]     1    66   214    73     4    86    93   213
[28359.169]     1     8     9     2    51     0    93    60
[28359.169]     1     8     9     2    51     0    93    60
[28359.169]     1     8     9     2    51     0    93    60
[28359.169]     1    29    72     2    59     0    93    28
[28359.169]     0    16   135     6    67     0    93   253
[28359.169]     0    50   198    48    75     0    93   221
[28359.169]     0     1     6     0    84     0    94    61
[28359.170]     0     1     6     0    84     0    94    61
[28359.170]     0     1     6     0    84     0    94    61
[28359.170]     0     1     6     0    84     0    94    61
[28359.170]     0     2     6     1    84     0    94    61
[28359.170]     0     0     6     0    84     0    94    61
[28359.170]     0     0     6     0    84     0    94    61
[28359.170]     0     2     9     2   139     1   149   109
[28359.170]     0     3    12     3   195     2   205   157
[28359.170]     0     5    15     4   250     2     4   206
[28359.170]     0     9    18     6    50     3    60   254
[28359.171]     0     9    18     6    50     3    60    48
[28359.171]     0     9    18     6    50     3    60    48
[28359.171]     0     9    18     6    50     3    60    48
[28359.171]     0     9    18     6    54     3    66    70
[28359.171]     0     9    18     8    58     3    72    93
[28359.171]     0    11    18     9    63     4    78   116
[28359.171]     0    11    18    11    67     4    84   139
[28359.171]     0    13    18    13    72     5    90   162
[28359.171]     0    13    18    13    72     5    90   184
[28359.171]     0    13    18    13    72     5    90   207
[28359.172]     0    13    18    13    72     5    90   230
[28359.172]     0    13    18    13    72     5    90   253
[28359.172]     0    13    18    13    72     5    90    20
[28359.172]     0    13    18    13    72     5    90    45
[28359.172]     0    13    18    13    72     5    90    46
[28359.172]     0    13    49     8   103    10    90    35
[28359.172]     0    13    81    26   135    29    90    24
[28359.172]     0    13   112    16   166    18    91    12
[28359.172]     0    13   144     6   198    10    91     1
[28359.172]     0    13   175     6   229     6    91   246
[28359.173]     0    13   207    46     5    24    92   235
[28359.173]     0    13   238    66    36    26    92   223
[28359.173]     0    13    14     9    68     4    93    84
[28359.173]     0    13    14     9    68     4    93    88
[28359.173]     0    13    14     9    68     4    93    93
[28359.173]     0    13    14     9    68     4    93    97
[28359.173]     0    13    14     9    68     4    93   102
[28359.173]     0    13    14     9    68     4    93    61
[28359.173]     0    13    14     9    68     4    93    62
[28359.173]     0    26    76    27   131     2   100    56
[28359.173]     0     9   138    16   195     6   107    51
[28359.174]     0    50   200    50     2    36   114    45
[28359.174]     0     0     6     0    66     0   121   168
[28359.174]     0     0     6     0    66     0   121   193
[28359.174]     0     0     6     0    66     0   121   219
[28359.174]     0     0     6     0    66     0   121   244
[28359.175]     0     0     6     0    66     0   121    14
[28359.175]    25     0     6     0    66     0   121    75
[28359.175]    25     0     6     0    66     0   121    76
[28359.175]     0     0     6     0    66     0   121    77
[28359.175]     0     0     9     0    66     0   177    99
[28359.176]     0     0    12     0    66     0   234   121
[28359.176]     0     0    15     0    66     0    34   144
[28359.176]     0     0    19     0    67     0    91   166
[28359.176]     0     0    19     0    67     0    91   190
[28359.176]     0     0    19     0    67     0    91   214
[28359.176]     0     0    19     0    67     0    91   238
[28359.176]     0     0    19     0    67     0    91     6
[28359.176]     0     0    19     0    67     0    91    30
[28359.176]     0     0    19     0    67     0    91    55
[28359.176]     0     0    19     0    67     0    91    55
[28359.176]     0     0    19     0    67     0    91    55
[28359.176]     0     0    19     0    67     0    91    55
[28359.176]     0     0    19     0    67     0    91    55
[28359.176]     0     0    19     0    67     0    91    55
[28359.176]     0     0    19     0    67     0    91    55
[28359.176]     0     0    19     0    67     0    91    55
[28359.176]     0     0    19     0    67     0    91    55
[28359.176]     0     0    19     0    67     0    91    55
[28359.176]     0     0     0     0     0     0     0     0
[28359.176]     0     0     0     0     0     0     0     0
[28359.176]     0     0     0     0     0     0     0     0
[28359.177]     0     0     0     0     0     0     0     0
[28359.177]     0     0     0     0     0     0     0     0
[28359.177]     0     0     0     0     0     0     0     0
[28359.177]     0     0     0     0     0     0     0     0
[28359.177]     0     0     0     0     0     0     0     0
[28359.177]     0     0     0     0     0     0     0     0
[28359.177]     0     0     0     0     0     0     0     0
[28359.177]     0     0     0     0     0     0     0     0
[28359.177]     0     0     0     0     0     0     0     0
[28359.177]     0     0     0     0     0     0     0     0
[28359.178]     0     0     0     0     0     0     0     0
[28359.178]     0     0     0     0     0     0     0     0
[28359.178]     0     0     0     0     0     0     0     0
[28359.178]     0     0     0     0     0     0     0     0
[28359.178]     0     0     0     0     0     0     0     0
[28359.178]     0     0     0     0     0     0     0     0
[28359.178]     0     0     0     0     0     0     0     0
[28359.178]     0     0     0     0     0     0     0     0
[28359.178]     0     0     0     0     0     0     0     0
[28359.178]     0     0     0     0     0     0     0     0
[28359.178]     0     0     0     0     0     0     0     0
[28359.179]     0     0     0     0     0     0     0     0
[28359.179]     0     0     0     0     0     0     0     0
[28359.179]     0     0     0     0     0     0     0     0
[28359.179]     0     0     0     0     0     0     0     0
[28359.179]     0     0     0     0     0     0     0     0
[28359.179]     0     0     0     0     0     0     0     0
[28359.179]     0     0     0     0     0     0     0     0
[28359.179]     0     0     0     0     0     0     0     0
[28359.179]     0     0     0     0     0     0     0     0
[28359.179]     0     0     0     0     0     0     0     0
[28359.180]     0     0     0     0     0     0     0     0
[28359.180]     0     0     0     0     0     0     0     0
[28359.180]     0     0     0     0     0     0     0     0
[28359.180]     0     0     0     0     0     0     0     0
[28359.180]     0     0     0     0     0     0     0     0
[28359.180]     0     0     0     0     0     0     0     0
[28359.180]     0     0     0     0     0     0     0     0
[28359.180]     0     0     0     0     0     0     0     0
[28359.180]     0     0     0     0     0     0     0     0
[28359.180]     0     0     0     0     0     0     0     0
[28359.180]     0     0     0     0     0     0     0     0
[28359.181]     0     0     0     0     0     0     0     0
[28359.181]     0     0     0     0     0     0     0     0
[28359.181]     0     0     0     0     0     0     0     0
[28359.181]     0     0     0     0     0     0     0     0
[28359.181]     0     0     0     0     0     0     0     0
[28359.181]     0     0     0     0     0     0     0     0
[28359.182]     0     0     0     0     0     0     0     0
[28359.182]     0     0     0     0     0     0     0     0
[28359.182]     0     0     0     0     0     0     0     0
[28359.182]     0     0     0     0     0     0     0     0
[28359.182]     0     0     0     0     0     0     0     0
[28359.182]     0     0     0     0     0     0     0     0
[28359.182]     0     0     0     0     0     0     0     0
[28359.182]     0     0     0     0     0     0     0     0
[28359.182]     0     0     0     0     0     0     0     0
[28359.182]     0     0     0     0     0     0     0     0
[28359.183]     0     0     0     0     0     0     0     0
[28359.183]     0     0     0     0     0     0     0     0
[28359.183]     0     0     0     0     0     0     0     0
[28359.183]     0     0     0     0     0     0     0     0
[28359.183]     0     0     0     0     0     0     0     0
[28359.183]     0     0     0     0     0     0     0     0
[28359.183]     0     0     0     0     0     0     0     0
[28359.183]     0     0     0     0     0     0     0     0
[28359.184]     0     0     0     0     0     0     0     0
[28359.184]     0     0     0     0     0     0     0     0
[28359.184]     0     0     0     0     0     0     0     0
[28359.184]     0     0     0     0     0     0     0     0
[28359.184]     0     0     0     0     0     0     0     0
[28359.184]     0     0     0     0     0     0     0     0
[28359.184]     0     0     0     0     0     0     0     0
[28359.184]     0     0     0     0     0     0     0     0
[28359.184]     0     0     0     0     0     0     0     0
[28359.184]     0     0     0     0     0     0     0     0
[28359.185]     0     0     0     0     0     0     0     0
[28359.185]     0     0     0     0     0     0     0     0
[28359.185]     0     0     0     0     0     0     0     0
[28359.185]     0     0     0     0     0     0     0     0
[28359.185]     0     0     0     0     0     0     0     0
[28359.185]     0     0     0     0     0     0     0     0
[28359.185]     0     0     0     0     0     0     0     0
[28359.185] ===========================================
[28359.526] TEST_OK.WAV saved


The outputted wave file:

 

Here is the SAM software module to add in the MIOS32 module and the project to play with.

sam.zip  sam_tester.zip

 

Next step is to make it real time.
One way is to render the text first to the SD card then add a sample reader from SD card. But pitch/speed/throat and mouth parameters will not be realtime, so SAM code must be deeply changed to achive a realtime process... TODO! ;)
But we can imagine a small CS to input different speeches and map them to midi events. CC for parameters etc... the dipcoreF4 has a second USB host port which supports HID keyboard, useful for fast text input.
Then it can be outputted with a DAC, a SID or a TIA...

But that is another story... ;)

 

Edited by Antichambre
some correctio of my poor english ;)
  • Like 1
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
 Share

×
×
  • Create New...