Просто в своем XML-файле установите гравитацию textview в центр:
<TextView
android:gravity="center" />
Я не думаю, что для этого есть инструмент командной строки, но кто-то написал его:
http://krolik.net/post/Say-exe-a-simple-command -line-text-to-speech-program-for-Windows.aspx
Здесь есть хорошая программа с открытым исходным кодом, которая делает то, что вы просите в Windows, под названием Peter's Text to Speech, доступная здесь: http://jampal.sourceforge.net/ptts.html
Он содержит двоичный файл с именем ptts.exe, который будет озвучивать текст со стандартного ввода, поэтому вы можете запустить его следующим образом:
echo hello there | ptts.exe
В качестве альтернативы вы можете использовать следующий трехстрочный сценарий VBS для получения аналогичного базового TTS:
'say.vbs
set s = CreateObject("SAPI.SpVoice")
s.Speak Wscript.Arguments(0), 3
s.WaitUntilDone(1000)
И вы можете вызвать это из командной строки следующим образом:
cscript say.vbs "hello there"
Если вы пойдете по сценарию, вы, вероятно, захотите найти более подробные примеры кода с переменным таймаутом и обработкой ошибок.
Надеюсь, это поможет.
If you can't find a command you can always wrap the System.Speech.Synthesis.SpeechSynthesizer from .Net 3.0 (Don't forget to reference "System.Speech")
using System.Speech.Synthesis;
namespace Talk
{
class Program
{
static void Main(string[] args)
{
using (var ss = new SpeechSynthesizer())
foreach (var toSay in args)
ss.Speak(toSay);
}
}
}
Лучше всего написать небольшую утилиту командной строки, которая сделает это за вас. Это не потребует больших усилий - просто прочтите текст и затем используйте библиотеку ms tts.
Другой альтернативой является использование Cepstral . Он поставляется с красивой утилитой командной строки и звучит на световые годы лучше, чем ms tts.