Вы можете использовать .NET lib ( System.Speech.Synthesis ).
Согласно Microsoft :
В пространстве имен System.Speech.Synthesis содержатся классы, которые позволяют вам инициализировать и настроить механизм синтеза речи, создавать подсказки, генерировать речь, отвечать на события и изменять характеристики голоса. Синтез речи часто упоминается как текст-речь или TTS.
blockquote>Синтезатор речи принимает текст как входной сигнал и создает аудиопоток в качестве вывода. Синтез речи также упоминается как текст-речь (TTS).
Синтезатор должен выполнять существенный анализ и обработку, чтобы точно преобразовать строку символов в аудиопоток, который звучит так же, как и слова говорят. Самый простой способ представить, как это работает, - это изображение переднего и заднего конца двухкомпонентной системы.
Текстовый анализ
Передняя часть специализируется на анализе текста с использованием правила естественного языка. Он анализирует строку символов, чтобы определить, где слова (что легко сделать на английском, но не так просто на таких языках, как китайский и японский). Этот передний конец также определяет грамматические детали, такие как функции и части речи. Например, какие слова являются правильными существительными, числами и т. Д. где предложения начинаются и заканчиваются; является ли фраза вопросом или заявлением; и будет ли утверждение прошлое, настоящее или будущее.
Все эти элементы имеют решающее значение для выбора подходящих произношений и интонаций для слов, фраз и предложений. Подумайте, что на английском языке вопрос обычно заканчивается повышающимся шагом или что слово «читать» произносится очень по-разному в зависимости от его времени. Ясно, что понимание того, как используется слово или фраза, является критическим аспектом интерпретации текста в звуке. Для дальнейшего усложнения вопросов правила для каждого языка несколько отличаются. Итак, как вы можете себе представить, передняя часть должна провести очень сложный анализ.
Звуковое поколение
У задней части есть совсем другая задача. Это делает анализ, выполненный передним концом, и посредством некоторого нетривиального анализа генерирует соответствующие звуки для входного текста. Старые синтезаторы (и современные синтезаторы с наименьшими отпечатками) генерируют отдельные звуки алгоритмически, что приводит к очень роботизированному звучанию. Современные синтезаторы, такие как Windows Vista и Windows 7, используют базу данных звуковых сегментов, построенных из часов и часов записанной речи. Эффективность заднего конца зависит от того, насколько хорошо он выбирает соответствующие сегменты звука для любого заданного входа и плавно сплачивает их вместе.
Готов к использованию
Текстово- речевые возможности, описанные выше, встроены в операционные системы Windows Vista и Windows 7, что позволяет приложениям легко использовать эту технологию. Это устраняет необходимость создания собственных речевых движков. Вы можете вызвать всю эту обработку с помощью одного вызова функции. См. «Обсуждение содержимого строки».
попробуйте этот код:
using System.Speech.Synthesis; namespace ConsoleApplication5 { class Program { static void Main(string[] args) { SpeechSynthesizer synthesizer = new SpeechSynthesizer(); synthesizer.Volume = 100; // 0...100 synthesizer.Rate = -2; // -10...10 // Synchronous synthesizer.Speak("Hello World"); // Asynchronous synthesizer.SpeakAsync("Hello World"); } } }
Я не могу проверить это в данный момент, чтобы быть уверенным, но я думаю, что вы можете зарегистрироваться как фильтр намерений SEND, используя код ниже, и тогда вы должны появиться как поставщик.
<intent-filter android:label="@string/app_name">
<action android:name="android.intent.action.SEND" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="text/plain" />
</intent-filter>
А затем получить текст из дополнительных функций...
Intent callingIntent = getIntent();
String url = callingIntent.getStringExtra(Intent.EXTRA_TEXT);
Я бы также предложил посмотреть документацию по ACTION_SEND, чтобы увидеть поддерживаемые миметипы и дополнительные пары ключ-значение.
Из документации ACTION_SEND:
Ввод: getType() - MIME-тип отправляемых данных. get*Extra может иметь поле EXTRA_TEXT или EXTRA_STREAM, содержащее отправляемые данные. Если используется EXTRA_TEXT, MIME-тип должен быть "text/plain"; в противном случае это должен быть MIME-тип данных в EXTRA_STREAM. Используйте /, если тип MIME неизвестен (это позволит использовать только те отправители, которые могут обрабатывать общие потоки данных).
Необязательными стандартными дополнениями, которые могут быть интерпретированы некоторыми получателями как соответствующие, являются: EXTRA_EMAIL, EXTRA_CC, EXTRA_BCC, EXTRA_SUBJECT.