you're still not following the documentation. this is what you need to do:
Dim javavoice As JavaObject
javavoice = tts
Dim speechfile As JavaObject
Dim rp As RuntimePermissions
speechfile.InitializeNewInstance("java.io.File", Array(rp.GetSafeDirDefaultExternal(""),"talk.wav"))
Dim success As Int = javavoice.RunMethod( "synthesizeToFile",Array(text, Null, speechfile, "1"))
the method takes 4 parameters; you're only using 3. you're missing an id (which, i think, can be null)
the method doesn't take a string as the 3rd parameter; it takes a "file"
look at the example closely. from an old app. i tried it again this morning to make sure it works. it works.
and as
@JohnC mentions, the file has to be .wav. android doesn't create .mp3's (it's not open source, and google won't pay the licensing fee. android is open source.)
also, technically, the method is async, so you could use a wait for, otherwise you could easily assume the file has been saved successfully when it hasn't