function [] = StarWarsSpeech()

clearvars;
clc;

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%Speech Data%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

spData0  = [ 4 0 122 138 1 192 79 51 128 104 153 80 103 141 158 149 181 90 158 141 168 134 79 110 73 52 238 106 209 168 68 193 68 178 248 146 18 120 95 65 106 75 139 239 125 39 137 205 43 190 143 149 168 214 174 248 222 87 129 216 186 226 7 19 67 162 237 138 31 165 54 187 174 42 65 52 102 146 209 184 36 85 187 9 91 146 146 79 103 106 172 86 12 16 41 139 1 10 70 53 64 130 108 10 8 80 152 1 28 178 42 128 208 202 84 102 149 73 50 145 115 169 0 17 92 24 0 100 6 1 128 80 101 0 97 42 2 96 66 85 0 76 153 134 44 248 41 102 171 221 146 232 118 132 165 74 139 146 222 17 230 41 35 136 102 71 84 167 12 63 164 107 113 173 55 252 16 119 68 189 90 243 163 219 21 179 170 45 200 186 150 217 74 167 56 218 30 84 143 44 0 22 93 24 64 73 164 1 10 36 115 64 129 98 6 72 64 217 1 25 169 56 160 64 81 5 4 200 66 0 0 217 24 64 177 37 3 128 169 16 0 136 149 169 206 82 74 60 146 148 50 106 47 49 111 148 82 103 43 37 188 73 9 131 244 54 229 166 197 119 54 75 77 154 5 223 132 44 82 91 235 194 224 187 76 73 41 3 128 41 39 0 208 29 4 0 178 19 128 1 58 19 9 64 39 34 2 128 16 242 0 80 88 1 ];
spData1  = [ 4 0 162 130 1 56 171 48 128 101 178 208 165 161 236 97 105 82 151 138 186 177 183 114 125 80 161 18 153 214 53 142 123 68 122 154 80 57 225 145 97 137 87 81 93 186 136 77 62 121 179 25 42 62 250 228 205 85 26 217 164 147 53 155 105 44 147 90 150 140 25 107 84 45 153 215 230 234 25 183 100 206 90 136 70 179 146 59 235 46 26 237 82 97 188 155 170 183 13 149 51 225 162 209 100 20 217 102 8 219 236 85 22 147 161 108 183 87 85 108 186 146 95 89 85 113 21 74 62 101 213 197 151 43 231 148 209 228 16 41 50 85 70 155 125 132 72 151 41 109 170 166 22 109 53 52 49 186 105 118 148 7 42 234 198 ];
spData2  = [ 171 171 65 55 202 226 156 186 4 91 47 173 125 138 18 109 61 211 241 201 90 212 213 242 68 39 235 85 135 67 107 175 188 21 41 14 73 92 138 26 209 180 212 241 200 171 227 214 100 57 171 174 78 215 147 108 175 186 56 91 47 142 179 154 234 116 189 40 202 106 171 211 177 228 40 169 45 142 82 195 229 166 38 43 204 244 180 19 218 162 49 210 34 105 235 170 163 86 215 214 163 207 78 90 34 154 140 177 24 234 48 203 146 198 108 168 2 125 89 26 170 195 112 182 166 99 168 17 83 43 86 143 177 38 50 153 92 221 166 86 217 176 226 117 89 106 32 147 201 213 105 107 89 84 89 82 183 189 70 114 169 216 210 142 86 201 165 172 173 1 188 165 86 64 176 88 10 112 142 138 1 220 144 61 93 45 79 ];
spData3  = [ 4 0 210 140 0 64 132 17 0 88 103 1 8 237 166 0 233 189 4 96 21 187 2 188 100 23 128 54 162 2 208 90 53 53 89 106 177 71 234 210 121 25 43 105 142 90 107 77 174 84 184 106 173 113 185 86 234 170 117 193 219 176 241 166 214 165 26 67 100 137 123 103 128 12 197 12 80 32 115 25 139 52 73 245 180 109 206 90 220 197 91 143 117 199 84 83 149 234 128 33 129 19 48 37 81 2 166 67 41 192 140 44 5 152 65 41 1 203 18 42 32 80 50 2 72 140 73 0 64 197 12 80 2 120 0 90 96 28 177 207 30 170 158 116 68 102 90 72 164 187 149 68 171 43 193 105 79 158 140 173 58 117 62 109 81 186 94 152 231 172 85 235 198 64 210 181 21 109 235 5 73 198 94 149 173 53 201 46 91 50 62 198 164 36 237 69 99 70 184 228 180 23 141 145 21 146 195 94 53 120 101 153 118 123 230 28 147 46 81 0 204 69 42 64 115 45 3 4 197 29 250 238 89 85 53 13 3 176 148 110 123 115 228 230 222 182 237 213 162 123 123 219 178 103 201 53 229 73 4 96 160 134 0 60 100 49 64 23 160 2 224 222 212 149 94 69 153 104 218 148 39 45 229 170 141 83 85 12 186 171 201 77 77 49 232 236 225 206 13 69 176 184 85 18 179 85 206 162 158 73 30 0 68 21 ];
spData4  = [ 33 212 33 45 43 21 15 95 23 143 174 180 181 60 211 34 55 50 242 113 125 178 220 108 43 199 77 214 162 114 173 20 63 90 241 204 166 84 194 96 84 211 66 74 136 50 117 53 79 211 12 160 58 140 1 76 106 8 128 75 55 1 40 166 178 116 63 205 67 58 236 48 252 81 143 232 74 203 12 219 220 125 170 46 51 108 137 136 9 187 172 176 197 51 38 236 178 194 182 240 104 179 203 14 203 34 188 205 45 59 118 45 203 150 122 220 84 184 172 75 206 242 130 215 41 111 185 37 12 78 60 189 34 165 40 41 55 85 179 98 0 167 66 21 160 72 57 1 128 55 83 128 21 105 203 79 218 116 51 141 172 32 91 246 173 54 178 194 98 57 42 135 242 137 170 103 171 92 41 39 170 81 204 107 169 172 184 68 81 239 149 82 18 229 50 74 194 202 74 178 20 175 28 41 43 169 134 162 34 148 140 36 43 202 211 144 90 82 101 203 139 221 118 200 132 169 104 51 199 33 247 218 61 221 226 140 204 119 11 143 41 60 82 223 181 52 55 204 72 195 212 146 94 203 45 9 91 202 166 173 140 36 44 77 171 177 50 226 48 172 164 219 202 138 67 245 225 46 59 39 142 197 218 178 101 175 56 6 25 175 150 188 226 232 100 125 146 78 139 179 199 138 106 177 46 14 194 196 34 28 187 184 8 55 115 147 253 0 247 169 186 ];
spData5  = [ 4 160 101 50 184 73 185 69 182 69 3 96 153 33 0 75 52 20 16 161 186 0 12 243 102 0 241 149 4 64 169 35 120 49 168 122 186 147 230 196 138 149 154 141 150 19 19 119 251 36 62 110 138 148 149 231 40 4 209 114 68 164 72 19 26 217 225 225 148 25 0 141 39 2 60 19 65 64 36 162 8 72 148 149 0 149 169 12 199 207 112 183 172 178 92 127 35 77 171 202 242 195 211 176 156 36 43 12 215 75 98 226 172 40 108 79 243 142 179 226 176 172 165 198 206 74 66 247 145 108 219 43 139 217 70 115 108 175 60 102 27 235 182 189 138 144 116 180 199 118 170 162 231 114 201 90 41 241 209 204 221 99 181 56 100 205 212 138 52 98 95 165 45 198 74 75 188 181 72 246 198 37 178 170 188 217 170 164 80 186 204 80 143 28 98 175 67 221 204 137 2 124 102 46 110 112 37 158 86 105 184 182 172 121 233 152 225 217 85 234 225 115 135 103 119 184 89 46 105 174 217 233 97 81 103 184 254 170 122 100 147 229 196 206 145 157 137 151 147 162 164 78 36 92 118 78 20 89 105 229 56 181 144 214 148 149 227 214 76 22 211 118 142 95 35 89 204 216 57 97 43 204 81 43 251 196 53 179 102 173 237 149 214 66 86 53 138 87 94 10 75 229 200 30 101 54 65 19 109 165 21 137 187 149 182 236 146 7 145 214 154 114 66 22 84 152 185 217 126 128 53 166 ];
spData6  = [ 141 143 169 202 194 235 44 33 166 169 180 104 178 232 20 206 211 45 206 162 74 30 139 80 95 131 201 133 162 42 150 38 161 20 148 14 179 29 236 156 203 221 44 150 3 18 47 41 64 103 206 139 202 66 185 187 98 45 50 59 101 247 152 221 232 160 67 194 114 117 225 146 38 91 247 88 137 29 210 88 213 92 23 96 104 163 193 20 106 146 17 137 7 29 124 138 151 36 58 116 116 229 225 222 121 209 185 164 187 122 235 67 119 151 97 102 173 23 59 178 23 105 204 105 124 81 28 33 21 249 8 35 138 105 68 237 37 15 47 236 29 139 130 25 133 134 187 219 14 65 211 170 46 106 43 0 169 184 52 174 122 15 97 139 115 248 18 156 168 45 246 225 135 54 225 241 56 71 24 217 152 45 102 21 181 105 22 205 136 148 180 233 92 88 204 177 1 28 179 56 66 83 226 161 62 169 168 85 106 152 241 228 224 101 78 158 110 142 4 32 132 121 227 154 22 51 151 210 71 74 169 195 205 130 28 169 184 174 202 152 116 164 28 166 43 125 242 145 178 159 158 180 154 67 206 126 39 75 27 13 37 249 235 104 105 58 140 20 118 52 109 110 115 98 185 145 160 57 205 143 113 11 203 219 180 40 187 27 76 173 59 210 98 38 169 45 222 202 139 157 160 210 38 163 200 169 197 82 26 151 162 57 23 77 137 243 0 110 131 41 ];
spData7  = [ 78 31 28 147 188 35 13 101 90 77 240 138 114 196 90 66 112 181 245 226 154 171 196 163 166 133 206 187 157 135 179 14 178 164 8 43 222 118 136 174 124 116 36 245 34 154 152 169 22 103 11 111 114 166 138 221 13 188 137 217 12 113 63 136 38 102 43 196 249 32 154 172 93 227 164 139 28 198 226 156 167 4 32 234 50 1 112 221 10 9 72 82 61 1 69 167 39 178 138 202 64 113 92 136 34 173 77 36 237 192 115 232 49 161 185 11 111 46 186 138 199 30 124 134 76 29 41 123 136 17 103 184 44 201 34 235 190 214 208 58 139 170 109 91 138 235 44 186 214 41 41 74 210 196 54 194 52 185 165 51 106 81 146 144 212 208 128 78 137 18 208 165 120 19 166 22 182 136 216 135 30 125 18 60 173 28 122 228 52 158 136 119 168 225 205 173 180 237 161 70 243 76 181 178 132 238 197 156 172 162 18 186 105 138 242 54 243 0 139 174 226 ];
spData8  = [ 105 136 50 204 60 39 159 164 38 13 241 52 125 194 86 56 177 195 242 241 107 166 224 46 43 37 25 202 81 195 44 19 192 26 55 4 56 233 33 128 162 93 17 16 153 57 2 168 200 84 105 38 98 158 85 103 36 117 187 171 153 173 17 23 39 137 145 81 86 146 163 55 89 196 62 97 246 177 164 94 247 248 213 250 56 243 220 227 37 151 195 28 83 143 151 125 14 147 79 61 94 118 57 66 58 237 120 201 85 51 251 220 229 199 80 77 28 87 71 16 90 39 74 76 107 97 56 233 224 85 183 196 97 116 130 100 153 148 135 155 6 86 113 66 229 203 4 169 37 13 141 47 237 168 158 38 244 33 118 9 133 93 6 168 156 202 0 225 203 25 160 124 40 3 68 48 39 0 203 105 110 206 58 148 45 157 166 57 134 48 181 72 157 166 16 60 72 187 78 154 156 207 20 173 38 97 14 185 149 36 155 184 37 152 118 97 75 234 214 40 43 84 212 41 1 180 43 71 128 147 233 8 240 34 29 24 80 130 51 1 98 14 121 147 233 8 ];
spData9  = [ 4 104 204 154 1 157 104 51 160 97 107 5 116 164 45 128 196 235 20 80 104 140 2 26 149 86 64 227 210 10 40 164 70 1 149 216 24 160 82 91 7 52 42 99 128 70 180 13 144 89 172 1 26 145 50 64 103 220 6 104 200 90 1 21 229 24 160 81 105 5 20 86 107 128 66 107 20 80 72 142 1 26 181 81 64 165 54 10 168 212 86 1 153 231 42 160 208 24 1 116 108 45 128 206 164 4 80 105 52 3 26 241 102 64 161 53 12 168 52 134 1 141 105 49 160 49 201 7 84 148 99 ];
spData10 = [ 198 233 132 53 186 204 6 185 115 33 31 143 51 216 225 140 108 51 202 161 170 209 200 203 166 135 106 35 205 199 237 28 178 182 180 172 114 124 136 26 214 186 202 238 193 75 62 173 104 199 7 43 249 37 187 164 28 172 228 213 204 148 123 176 92 71 186 66 233 193 114 27 173 10 37 7 43 115 44 186 21 15 44 231 81 171 80 180 168 84 67 99 89 245 161 82 113 245 83 39 135 78 41 213 198 236 28 60 135 17 205 180 125 208 236 198 209 195 206 65 139 125 38 203 164 7 205 126 133 44 22 31 36 251 86 150 154 125 208 100 91 68 171 241 66 147 107 97 237 37 3 141 161 132 188 27 47 44 185 54 150 104 50 240 172 79 200 98 73 35 146 27 3 139 186 133 138 110 21 205 154 37 38 178 9 10 183 27 184 72 187 57 204 142 147 131 220 160 240 36 198 240 126 141 204 155 24 207 203 73 54 79 102 226 192 167 76 220 233 3 74 126 201 ];
spData11 = [ 109 173 70 167 92 237 140 117 86 238 88 137 50 150 30 120 163 56 241 90 122 148 245 145 198 99 105 129 215 203 18 183 165 121 222 104 117 216 230 158 121 60 195 102 155 71 213 146 204 152 109 233 195 18 35 19 149 181 87 9 204 170 85 182 94 216 165 43 70 219 91 160 244 78 83 108 111 89 92 58 45 154 173 22 110 221 178 120 150 86 53 181 179 225 25 90 209 146 141 90 167 235 69 83 198 102 157 190 87 9 25 89 60 134 22 185 180 37 98 27 91 162 228 240 136 109 236 145 66 60 34 181 126 4 116 28 175 220 250 17 200 96 252 118 235 154 35 133 139 198 165 77 134 220 87 146 148 54 9 46 91 113 83 186 160 120 162 197 107 233 178 130 14 11 55 161 175 26 170 42 108 143 190 5 112 202 72 116 198 222 168 164 213 212 90 170 231 181 209 80 99 171 65 71 75 43 183 163 56 189 28 170 212 206 226 125 189 185 241 184 154 147 137 165 216 237 202 54 46 18 19 151 171 26 219 28 100 93 238 225 168 226 80 109 184 187 164 139 20 53 233 206 220 214 69 213 166 187 114 222 54 81 20 238 194 249 74 213 145 189 31 224 245 178 ];
spData12 = [ 174 143 212 71 205 156 38 75 198 73 138 78 221 212 96 167 40 218 241 80 130 237 224 172 40 70 137 172 42 220 18 43 37 210 172 80 183 109 128 82 88 135 222 86 8 107 56 57 94 17 226 233 69 185 4 137 176 89 148 21 48 126 162 162 158 37 53 5 205 43 139 70 156 225 39 45 174 53 50 79 80 148 132 214 40 92 97 166 234 169 45 105 69 131 27 179 68 146 17 46 101 44 146 137 71 184 220 184 145 216 14 192 20 204 1 152 156 56 1 71 57 21 96 72 147 165 84 101 174 158 138 143 156 108 186 102 42 58 114 54 94 226 102 243 136 213 197 72 154 237 35 52 23 77 41 178 15 219 157 23 167 59 57 116 247 17 52 30 251 208 173 154 75 119 236 67 247 100 38 217 173 14 219 173 152 93 199 58 194 112 162 216 105 107 152 139 39 179 85 173 229 111 110 76 20 137 87 180 168 178 74 196 62 65 87 98 202 233 232 68 77 113 114 150 205 21 103 161 73 222 182 24 192 180 151 2 168 141 56 105 245 106 212 237 240 228 205 73 232 180 205 83 148 194 30 91 178 78 222 170 137 86 57 60 101 177 22 145 99 37 228 85 155 89 132 104 6 72 229 73 0 41 35 16 32 113 152 0 10 103 49 64 49 106 43 108 65 141 116 29 158 168 121 51 246 141 121 226 22 212 164 38 225 73 123 49 195 234 88 39 235 73 13 187 108 173 188 39 22 173 146 56 202 17 72 61 67 82 170 154 65 247 114 139 161 169 154 204 210 147 48 64 72 27 215 117 35 42 230 118 8 192 101 212 3 134 52 41 ];
spData13 = [ 4 136 152 132 0 153 32 17 160 113 98 6 52 193 204 128 46 88 16 144 24 9 2 60 82 35 128 229 30 173 109 69 141 60 59 173 182 77 111 16 90 179 218 54 57 161 226 205 169 219 224 132 206 53 163 106 141 2 39 191 172 188 15 10 152 92 181 242 126 52 33 100 245 74 123 69 199 171 77 43 233 13 29 55 55 142 184 119 116 220 92 88 226 86 32 101 187 81 73 154 135 180 171 150 173 239 157 3 202 23 141 190 15 77 40 187 53 250 54 53 161 124 86 25 74 0 151 46 219 165 175 17 146 179 18 175 190 21 42 108 175 189 198 222 169 177 188 77 10 171 199 214 234 198 97 44 14 61 172 34 17 192 24 75 2 104 237 97 128 100 40 74 85 2 143 101 198 58 101 9 220 186 22 251 84 173 243 72 121 235 147 247 197 197 173 77 90 94 19 21 79 90 74 121 205 146 146 225 152 1 210 73 18 192 43 13 2 120 101 70 128 96 93 5 144 34 187 2 138 161 16 64 214 236 12 72 138 35 68 209 72 86 69 172 144 219 208 157 110 182 75 97 66 173 7 101 41 185 73 117 17 236 165 229 206 229 121 114 234 210 6 43 147 174 142 75 87 2 166 120 216 26 67 137 20 156 90 59 0 201 66 181 190 45 113 104 111 149 178 94 200 161 178 85 218 123 87 7 137 52 14 104 9 221 0 45 144 41 32 73 170 80 53 11 97 17 142 221 90 20 120 70 69 14 107 22 232 25 21 217 109 137 81 181 187 237 176 101 198 94 17 142 221 94 152 152 71 216 54 123 38 162 158 25 199 28 157 139 136 133 221 7 255 255 255 ];
spData14 = [ 4 48 58 188 45 209 23 171 110 145 178 7 149 162 30 73 20 96 148 171 2 178 55 51 64 74 101 6 96 91 124 245 126 153 104 118 229 53 248 30 78 82 147 215 224 91 58 75 76 89 163 175 233 172 49 101 205 97 68 144 214 148 181 197 224 77 92 149 199 80 197 186 168 197 78 192 2 150 9 152 36 43 0 85 84 41 32 139 82 1 36 94 90 26 231 91 197 170 118 155 67 244 96 174 198 109 9 201 19 185 27 151 213 103 55 150 170 93 86 205 43 210 44 113 216 61 139 204 240 36 109 10 94 220 42 107 143 53 56 78 175 172 213 86 31 57 188 170 86 89 125 176 80 141 70 105 55 46 204 197 26 151 213 103 51 149 108 220 22 159 37 52 171 246 88 99 162 176 154 200 99 11 145 173 98 172 148 195 235 208 136 178 157 214 44 66 60 44 78 249 130 8 139 44 219 10 128 53 179 252 222 74 116 165 37 3 208 98 93 94 19 60 51 42 82 250 188 13 119 207 132 225 15 202 221 213 91 49 64 69 19 6 152 226 66 0 163 195 224 1 0 0 0 ];
spData15 = [ 64 128 140 50 8 16 108 6 3 124 42 105 83 8 221 44 82 167 173 126 86 176 120 163 182 250 149 206 26 179 218 234 71 36 107 214 110 123 104 25 168 222 184 29 33 248 48 69 235 116 248 16 105 104 141 211 225 77 135 171 39 22 0 106 41 229 243 161 92 213 91 27 128 38 235 246 167 40 166 154 33 21 192 179 149 2 104 181 20 128 47 90 2 240 33 194 0 149 186 40 96 0 51 1 28 36 46 128 139 37 24 144 161 59 5 48 240 0 159 15 229 ];
spData16 = [ 13 172 201 203 194 227 29 168 196 104 171 76 121 176 150 171 37 45 217 193 71 175 172 176 56 71 236 173 82 203 146 44 169 181 24 109 139 235 128 58 124 4 16 2 56 1 0 85 37 0 64 106 8 0 80 140 0 0 137 43 192 106 145 5 204 214 211 192 56 99 93 186 85 1 163 229 203 140 152 133 140 204 117 91 147 58 222 163 117 233 176 235 36 79 38 36 211 174 147 60 25 151 44 171 74 140 202 201 58 237 58 224 98 196 0 172 183 199 128 246 253 11 184 251 214 253 219 110 96 58 222 110 59 167 128 209 201 101 120 164 130 39 197 250 105 73 202 30 208 132 116 196 9 185 35 235 82 97 39 228 158 140 75 134 93 35 25 49 110 25 118 3 176 25 98 8 247 187 235 127 219 14 232 63 46 128 241 167 219 110 28 3 250 95 165 50 107 66 231 127 149 115 174 205 93 234 252 207 50 169 53 161 243 191 202 57 215 166 206 255 74 227 90 27 58 255 171 140 107 109 234 252 239 116 206 181 169 243 191 210 165 214 166 206 255 74 147 90 251 0 235 36 79 ];
spData17 = [ 12 48 125 74 1 182 84 25 192 181 172 132 71 99 29 201 114 2 17 108 100 154 40 77 120 50 146 165 234 58 225 217 168 140 185 157 130 7 227 85 108 78 27 30 148 103 133 91 109 120 210 90 169 110 55 1 58 250 52 60 232 136 42 147 155 0 83 35 19 96 114 84 35 162 214 74 119 41 1 16 37 42 0 174 123 55 50 25 247 74 19 155 0 59 50 2 224 162 103 0 108 240 44 100 54 170 21 97 185 145 201 106 116 152 212 0 184 232 157 0 147 163 26 153 148 71 132 219 9 128 41 17 133 140 58 188 220 228 20 50 25 143 10 149 210 200 100 195 167 84 110 33 163 74 143 84 59 1 48 53 42 0 46 69 6 192 198 242 66 39 19 153 19 244 28 224 99 100 161 178 246 136 50 57 1 48 37 50 0 166 68 57 192 150 202 0 184 82 229 0 159 171 10 21 124 214 76 218 113 128 153 209 14 48 187 202 1 250 70 27 64 94 79 5 232 23 41 0 181 35 4 32 103 184 0 228 240 16 128 174 30 2 208 53 157 1 166 149 51 192 212 116 2 152 152 206 0 22 203 25 32 83 58 1 76 200 32 0 75 229 4 16 161 130 0 42 150 19 32 184 8 4 136 216 65 0 101 43 30 0 135 89 ];
spData18 = [ 197 72 91 83 179 108 47 45 79 45 27 151 189 212 90 37 120 213 78 82 124 52 211 140 200 73 246 193 204 202 45 54 53 7 172 104 145 53 228 226 176 50 85 209 16 179 229 246 36 197 131 143 94 214 77 20 31 54 57 157 218 96 116 232 100 101 182 67 107 227 179 165 234 107 197 206 72 90 34 50 36 185 32 105 205 10 179 196 0 23 162 138 144 42 133 121 89 30 66 116 218 118 225 56 232 65 74 166 135 44 231 102 101 102 145 150 140 150 164 71 165 217 10 188 115 217 102 33 105 177 41 89 104 173 237 197 166 22 69 157 114 23 159 158 89 71 200 89 124 122 230 89 237 100 9 49 71 121 55 147 96 4 107 206 25 178 157 155 162 139 168 218 38 64 140 166 4 8 218 189 176 49 74 87 182 152 197 166 32 21 211 76 15 151 130 215 120 210 57 124 137 50 181 229 232 8 37 106 199 166 219 35 150 164 149 149 106 142 156 83 76 118 50 61 82 246 54 209 174 102 176 41 106 233 186 235 197 166 110 233 213 178 23 19 119 186 69 75 25 76 120 158 154 37 101 208 241 105 68 100 148 65 199 46 45 62 78 27 27 11 78 197 36 14 82 8 166 30 106 155 1 113 138 41 32 197 136 66 123 171 217 174 74 27 235 173 182 101 82 105 156 11 97 105 101 182 240 214 103 132 148 209 38 6 43 21 153 180 157 156 181 178 121 218 97 64 208 234 12 136 74 61 137 73 83 117 135 226 193 39 69 213 105 138 7 91 13 102 101 136 77 140 45 230 102 21 57 208 102 150 169 185 173 66 251 171 150 213 86 23 211 140 117 108 186 110 116 47 226 124 145 168 49 221 137 120 150 237 194 54 206 149 94 98 26 223 29 120 103 73 74 106 214 216 165 38 57 105 81 115 54 155 236 38 212 128 89 53 146 138 144 13 231 100 139 114 178 14 85 229 34 219 25 78 123 100 136 236 38 212 72 230 189 150 7 31 157 76 118 199 41 130 153 30 150 19 59 9 102 149 171 68 218 32 201 219 41 94 118 155 226 187 132 77 217 109 90 46 28 158 37 199 249 81 133 155 155 173 98 228 40 170 81 138 135 85 156 186 237 58 105 193 200 145 16 227 56 132 61 154 114 141 226 7 ];
spData19 = [ 195 173 201 207 188 210 28 191 6 175 208 73 178 130 62 101 210 164 170 1 106 149 114 64 174 214 67 171 46 250 212 147 46 53 7 91 211 76 182 228 52 114 84 167 205 145 82 238 74 169 185 71 170 193 86 181 210 46 185 248 172 182 76 18 128 102 202 4 144 212 154 1 166 117 62 82 201 145 101 22 246 168 165 121 116 177 187 163 149 233 190 73 205 150 158 79 218 132 180 29 106 125 17 25 22 23 160 0 163 181 31 190 247 201 49 78 114 152 182 166 87 105 202 98 70 207 40 214 58 141 25 77 179 69 235 14 174 6 239 49 74 90 164 236 171 147 165 113 242 82 200 117 214 168 12 240 181 130 1 190 76 18 32 184 12 2 4 19 138 128 128 68 30 224 203 36 ];
spData20 = [ 137 106 228 60 205 221 4 165 72 247 16 167 19 152 80 220 45 68 105 34 67 103 245 52 167 3 75 235 194 76 148 14 172 174 40 111 173 189 208 149 186 185 180 202 66 87 26 119 10 203 11 159 49 208 44 235 22 106 69 71 13 173 19 164 105 21 221 173 142 211 103 76 53 54 41 14 40 80 52 0 147 18 39 96 74 165 65 118 149 42 154 177 15 81 125 134 180 167 89 68 77 233 25 150 118 81 197 119 86 213 146 65 151 148 229 157 107 6 219 98 102 102 212 109 92 235 21 106 81 219 113 45 87 152 105 105 6 96 161 134 0 164 68 65 1 9 178 20 113 135 242 52 143 178 168 225 213 32 51 201 161 70 53 21 79 199 131 105 94 194 186 147 14 182 69 13 177 75 18 164 22 52 200 42 86 80 170 19 85 43 203 65 174 214 84 37 19 45 38 57 179 158 73 114 152 150 211 180 42 234 97 154 27 247 178 166 139 45 118 211 146 211 38 46 217 140 8 107 226 132 166 204 178 180 117 98 43 247 117 231 54 141 205 102 147 220 222 52 190 139 118 103 109 92 244 107 77 220 205 118 147 10 119 139 100 207 133 207 154 106 82 101 55 54 41 157 238 12 211 232 40 107 186 84 234 160 147 239 9 167 164 131 202 109 146 83 23 55 186 38 25 113 247 178 168 22 181 52 188 233 162 107 177 148 212 37 141 174 53 130 92 234 20 166 91 76 73 107 117 152 30 53 41 211 203 98 187 113 151 137 57 133 43 218 221 154 147 38 190 88 246 12 173 157 248 22 73 178 169 225 226 134 180 144 246 165 139 171 38 76 58 231 44 190 41 43 117 159 55 132 102 180 85 252 206 18 171 246 224 140 39 67 233 86 76 51 230 54 101 102 119 50 29 221 180 17 85 169 178 242 178 122 18 229 204 186 203 109 73 204 50 107 143 160 68 142 136 138 93 194 28 197 82 187 118 136 138 35 15 143 52 33 170 158 220 220 157 185 40 9 141 140 140 245 0 165 58 81 ];
spData21 = [ 195 77 193 106 188 152 36 47 73 215 181 148 2 16 128 102 213 6 147 12 183 153 43 62 100 141 212 86 97 107 145 61 82 165 103 162 67 52 167 233 57 9 15 94 157 166 79 57 60 120 13 154 182 101 185 145 53 82 112 187 45 37 120 225 21 145 180 141 61 149 73 168 56 113 64 163 30 14 24 68 216 1 131 139 22 170 75 145 20 111 187 240 28 208 219 202 237 193 83 112 187 108 169 7 203 81 115 115 220 29 180 4 237 232 78 189 208 226 100 39 215 206 66 230 36 31 15 155 3 29 25 181 50 51 5 178 8 174 242 180 108 196 204 212 219 195 22 3 34 117 77 92 146 156 153 41 171 137 217 81 197 180 226 102 213 198 166 185 138 139 159 2 165 95 59 113 113 84 102 230 149 218 100 153 155 186 103 98 155 17 128 218 114 4 112 153 245 0 203 9 192 ];
spData22 = [ 97 200 202 66 40 155 148 174 88 105 208 106 210 234 20 53 88 204 237 202 155 147 33 225 197 39 205 218 91 132 158 142 36 25 31 38 190 219 50 239 51 73 124 110 168 35 207 84 229 216 238 40 220 210 72 92 19 128 133 46 4 24 158 165 128 212 82 21 144 183 10 1 82 21 36 64 180 38 4 72 94 25 1 158 133 35 64 83 115 4 120 98 193 128 234 149 13 208 130 155 1 106 116 43 89 169 28 42 218 230 164 185 104 113 234 162 147 228 20 69 233 181 79 156 115 4 167 71 94 73 83 97 166 22 121 167 6 184 210 220 0 91 152 43 96 27 21 80 64 115 26 224 218 202 205 204 204 110 233 179 149 48 181 216 171 207 73 93 34 66 175 161 86 113 170 52 211 150 154 200 172 66 74 219 90 36 231 74 57 101 235 141 66 59 164 164 173 37 177 72 151 138 128 144 98 16 16 82 246 3 3 180 224 ];
spPAUSE1 = [ 0 0 0 0 255 15 ];

a = [say(spData0)  say(spPAUSE1) say(spData1)  say(spPAUSE1) ...
     say(spData2)  say(spPAUSE1) say(spData3)  say(spPAUSE1) ...
     say(spData4)  say(spPAUSE1) say(spData5)  say(spPAUSE1) ...
     say(spData6)  say(spPAUSE1) say(spData7)  say(spPAUSE1) ...
     say(spData8)  say(spPAUSE1) say(spData9)  say(spPAUSE1) ...
     say(spData10) say(spPAUSE1) say(spData11) say(spPAUSE1) ...
     say(spData12) say(spPAUSE1) say(spData13) say(spPAUSE1) ...
     say(spData14) say(spPAUSE1) say(spData15) say(spPAUSE1) ...
     say(spData16) say(spPAUSE1) say(spData17) say(spPAUSE1) ...
     say(spData18) say(spPAUSE1) say(spData19) say(spPAUSE1) ...
     say(spData20) say(spPAUSE1) say(spData21) say(spPAUSE1) ...
     say(spData22)
     ];
 
a = double(a);
soundsc(a, 8000);

end

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%Function: say%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

function [A] = say(array)

Energy = [0 1 2 3 4 6 8 11 16 23 33 47 63 85 114 0];
      
Period = [0   15   16   17   18   19   20   21  ...
          22  23   24   25   26   27   28   29  ...
          30  31   32   33   34   35   36   37  ...
          38  39   40   41   42   44   46   48  ...
          50  52   53   56   68   60   62   65  ...
          68  70   72   76   78   80   84   86  ...
          91  94   98   101  105  109  114  118 ...
          122 127  132  137  142  148  153  159];
          
K1 =  [-0.9785156   -0.97265625  -0.9707031   -0.9667969   -0.9628906   ...
       -0.9589844   -0.953125    -0.94140625  -0.93359375  -0.92578125  ...
       -0.9160156   -0.90625     -0.8964844   -0.8828125   -0.8691406   ...
       -0.8535156   -0.8046875   -0.7421875   -0.6621094   -0.5625      ...
       -0.44335938  -0.30859375  -0.15820312  -0.001953125  0.15625     ...
        0.30664062   0.44140625   0.5605469    0.6582031    0.7402344   ...
        0.8027344    0.8515625];
   
K2 =  [-0.640625    -0.5917969   -0.53515625  -0.4765625   -0.41210938  ...
       -0.34179688  -0.26953125  -0.19335938  -0.115234375 -0.03515625  ...
        0.046875     0.125        0.20507812   0.27929688   0.3515625   ...
        0.41992188   0.484375     0.54296875   0.59765625   0.6464844   ...
        0.69140625   0.73046875   0.765625     0.796875     0.82421875  ...
        0.8496094    0.8691406    0.8886719    0.9042969    0.91796875  ...
        0.9296875    0.98828125];
   
K3 =  [-0.8613281   -0.7558594   -0.6503906   -0.5449219   -0.43945312  ...
       -0.33398438  -0.22851562  -0.123046875 -0.017578125  0.087890625 ...
        0.19140625   0.296875     0.40234375   0.5078125    0.61328125  ...
        0.71875];
   
K4 =  [-0.640625    -0.5332031   -0.42382812  -0.31445312  -0.20703125  ...
       -0.09765625   0.009765625  0.119140625  0.2265625    0.3359375   ...
        0.4453125    0.5527344    0.6621094    0.76953125   0.87890625  ...
        0.98828125];
   
K5 =  [-0.640625    -0.55078125  -0.45898438  -0.36914062  -0.27734375  ...
       -0.1875      -0.09765625  -0.005859375  0.083984375  0.17578125  ...
        0.265625     0.35546875   0.44726562   0.5371094    0.62890625  ...
        0.71875];
   
K6 =  [-0.5         -0.4140625   -0.328125    -0.24023438  -0.15429688  ...
       -0.068359375  0.01953125   0.10546875   0.19140625   0.27929688  ...
        0.36523438   0.453125     0.5390625    0.625        0.7128906   ...
        0.7988281];

K7 =  [-0.6015625   -0.5078125   -0.4140625   -0.3203125   -0.22851562  ...
       -0.13476562  -0.041015625  0.052734375  0.14648438   0.23828125  ...
        0.33203125   0.42578125   0.51953125   0.61328125   0.7050781   ...
        0.7988281];

K8 =  [-0.5         -0.31445312  -0.12890625   0.056640625  0.2421875   ...
        0.42773438   0.61328125   0.7988281];

K9 =  [-0.5         -0.34375     -0.1875      -0.029296875  0.12695312  ...
        0.28515625   0.44140625   0.5996094];

K10 = [-0.40039062  -0.2578125   -0.115234375  0.02734375   0.16992188  ...
        0.3125       0.45703125   0.5996094];

chirp = [0      0.0600 0.3000 0.8000 1.5200 2.1600 2.2600 1.6000 0.7400 ...
         0.7600 1.5200 1.3600 0.5200 1.0000 1.1800 0.3800 1.1000 0.5200 ...
         0.7400 0.6200 0.5800 0      0      0      0      0      0      ...
         0      0      0      0      0      0      0      0      0      ...
         0      0      0      0      0      0      0      0      0      ...
         0      0      0      0      0      0      0];

synthPeriod = 0;
synthK1  = 0;
synthK2  = 0;
synthK3  = 0;
synthK4  = 0;
synthK5  = 0;
synthK6  = 0;
synthK7  = 0;
synthK8  = 0;
synthK9  = 0;
synthK10 = 0;

arIndex = 1;
bitIndex = 0;
energy = 0;

init = 0;
u = zeros(1,11);
x = zeros(1,10);
periodCounter = 0;
synthRand = 1;

while energy ~= 15
    [energy, arIndex, bitIndex] = getBits(4, array, arIndex, bitIndex);
    
    if energy == 0
        synthEnergy = 0;
                
    elseif energy == 15 %Energy = 15: stop frame. Silence the synthesiser.       
        synthEnergy = 0;
		synthK1 = 0;
		synthK2 = 0;
		synthK3 = 0;
		synthK4 = 0;
		synthK5 = 0;
		synthK6 = 0;
		synthK7 = 0;
		synthK8 = 0;
		synthK9 = 0;
		synthK10 = 0;
                
    else
        synthEnergy = Energy(energy+1);
                
        [repeat, arIndex, bitIndex] = getBits(1, array, arIndex, bitIndex);
                
        [synthPeriod, arIndex, bitIndex] = getBits(6, array, arIndex, bitIndex);
        synthPeriod = Period(synthPeriod+1);
                
        if repeat == 0
            [synthK1, arIndex, bitIndex] = getBits(5, array, arIndex, bitIndex);            
            [synthK2, arIndex, bitIndex] = getBits(5, array, arIndex, bitIndex);
            [synthK3, arIndex, bitIndex] = getBits(4, array, arIndex, bitIndex);
            [synthK4, arIndex, bitIndex] = getBits(4, array, arIndex, bitIndex);
            synthK1 = K1(synthK1+1);
            synthK2 = K2(synthK2+1);
            synthK3 = K3(synthK3+1);
            synthK4 = K4(synthK4+1);
                        
            if synthPeriod ~= 0
                [synthK5, arIndex, bitIndex]  = getBits(4, array, arIndex, bitIndex);
                [synthK6, arIndex, bitIndex]  = getBits(4, array, arIndex, bitIndex);
                [synthK7, arIndex, bitIndex]  = getBits(4, array, arIndex, bitIndex);
                [synthK8, arIndex, bitIndex]  = getBits(3, array, arIndex, bitIndex);
                [synthK9, arIndex, bitIndex]  = getBits(3, array, arIndex, bitIndex);
                [synthK10, arIndex, bitIndex] = getBits(3, array, arIndex, bitIndex);
                synthK5  = K5(synthK5+1);
                synthK6  = K6(synthK6+1);
                synthK7  = K7(synthK7+1);
                synthK8  = K8(synthK8+1);
                synthK9  = K9(synthK9+1);
                synthK10 = K10(synthK10+1);
            end        
        end        
    end
    
    for ii = 1:200    
        if synthPeriod ~= 0 %Voiced source
            if periodCounter < synthPeriod            
                periodCounter = periodCounter+1;               
            else            
                periodCounter = 0;
            end
        
            if periodCounter < length(chirp)
                u(11) = chirp(periodCounter+1)*synthEnergy;
            else
                u(11) = 0;
            end
            
        else %Unvoiced source               
            if bitand(synthRand, 1) ~= 0          
                LSFRVal = 47104;
            else            
                LSFRVal = 0;
            end
        
            synthRand = bitxor(bitshift(synthRand, -1), LSFRVal);
                       
            if bitand(synthRand, 1) ~= 0        
                u(11) = synthEnergy;        
            else        
                u(11) = -synthEnergy;
            end
        end
        
        %Lattice filter forward path
        u(10) = u(11) - synthK10*x(10);  
        u(9)  = u(10) - synthK9*x(9);
        u(8)  = u(9)  - synthK8*x(8);    
        u(7)  = u(8)  - synthK7*x(7);
        u(6)  = u(7)  - synthK6*x(6);
        u(5)  = u(6)  - synthK5*x(5);
        u(4)  = u(5)  - synthK4*x(4);
        u(3)  = u(4)  - synthK3*x(3); 
        u(2)  = u(3)  - synthK2*x(2);
        u(1)  = u(2)  - synthK1*x(1);
          
        %Output clamp
        if u(1) > 512
            u(1) = 512;
        end
        if u(1) < -512
            u(1) = -512;
        end
  
        %Lattice filter reverse path
        x(10) = x(9) + synthK9*u(9);
        x(9)  = x(8) + synthK8*u(8);
        x(8)  = x(7) + synthK7*u(7);  
        x(7)  = x(6) + synthK6*u(6);
        x(6)  = x(5) + synthK5*u(5);
        x(5)  = x(4) + synthK4*u(4);
        x(4)  = x(3) + synthK3*u(3);
        x(3)  = x(2) + synthK2*u(2); 
        x(2)  = x(1) + synthK1*u(1);     
        x(1) = u(1);
        
        if init == 0 
            A = u(1);
            init = 1;
        else
            A = [A u(1)];
        end        
    end
end
end

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%Function: rev%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

function [val] = rev(a)

%The ROMs used with the TI speech were serial, not byte wide.
%Here's a handy routine to flip ROM data which is usually reversed.
val = uint8(a); %76543210

%Swap in groups of 4. 32107654.
val = bitor(bitshift(val,-4), bitshift(val,4));

%Swap in groups of 2. 10325476.
val = bitor(bitshift(bitand(val,204),-2), bitshift(bitand(val,51),2));

%Swap bit pairs. 01234567.
val = bitor(bitshift(bitand(val,170),-1), bitshift(bitand(val,85),1)); 
end

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%Function: getBits%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

function [val, arIndex, bitIndex] = getBits(bits, ar, arIndex, bitIndex)

data = bitshift(uint16(rev(ar(arIndex))),8);

if bitIndex+bits > 8
    data = bitor(data, uint16(rev(ar(arIndex+1))));
end

data = bitshift(data, bitIndex);
val = bitshift(data, -(16-bits));
bitIndex = bitIndex + bits;

if bitIndex >= 8
    bitIndex = bitIndex - 8;
    arIndex = arIndex + 1;
end
end