Jump to content

Leaderboard

Popular Content

Showing content with the highest reputation on 03/20/2021 in all areas

  1. 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 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... ;)
    1 point
×
×
  • Create New...