In one of my applications, I have an activity in which speech is synthesized by alphanumeric reference lines, a letter / number by letter / number, for example, "ABC123" sounds like "Ay, bee, sea, one two three." Since this is a limited set of sounds, I thought it would be nice to let the TTS engine work without an Internet connection by playing pre-recorded .wav numbers and letters using the playEarcon method.
I placed all 36 wav files in the res / raw folder and matched resource identifiers with letters when initializing the TTS engine. This works well, however .apk is now much larger as wav files are stored uncompressed in apk. I would like to reduce apk size.
The answer to another question says that wav files are excluded from compression. (I donβt understand why, since they usually fade to about 40% of the original). Checking the internal elements of apk, this seems to be true.
Since the resource file extension is not mentioned in the code, I tried to rename wavs, differently .waw, .abc, .spc. All of them are compressed, but, unfortunately, the playEarcon method does not cause sound when called if the extension is not equal to .wav.
In short, I would like to force the TTS engine to play files without the wav extension, or to convince it to compress WAV files.
All offers will be gratefully received. For what it's worth, I'm posting the smallest example demo code below. My work files are called gb_a.wav, gb_b.wav, etc. If the extension is changed, they stop sounding.
public class WavSpeakerActivity extends Activity implements RadioGroup.OnCheckedChangeListener, TextToSpeech.OnInitListener { static final int mGBLetterResIds[] = { R.raw.gb_a, R.raw.gb_b, R.raw.gb_c, R.raw.gb_d, R.raw.gb_e, R.raw.gb_f, R.raw.gb_g, R.raw.gb_h, R.raw.gb_i, R.raw.gb_j, R.raw.gb_k, R.raw.gb_l, R.raw.gb_m, R.raw.gb_n, R.raw.gb_o, R.raw.gb_p, R.raw.gb_q, R.raw.gb_r, R.raw.gb_s, R.raw.gb_t, R.raw.gb_u, R.raw.gb_v, R.raw.gb_w, R.raw.gb_x, R.raw.gb_y, R.raw.gb_z }; static final int mGBNumberResIds[] = { R.raw.gb_zero, R.raw.gb_one, R.raw.gb_two, R.raw.gb_three, R.raw.gb_four, R.raw.gb_five, R.raw.gb_six, R.raw.gb_seven, R.raw.gb_eight, R.raw.gb_nine }; static final String mGbStr = "GB"; static final String mAlphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; static final String mNumbers = "0123456789"; private String mPpackageName = null; private String mTextToSpeak = null; private RadioGroup mRadioGroup = null;
. .