Я не вижу очевидного способа программного переключения ввода, хотя первый абзац руководства «Речь» в разделе «Распознавание речи», по-видимому, подразумевает использование других входов. Я думаю, что это должно быть установлено через Системные настройки, хотя. Я предполагаю, что он использует основное устройство ввода звука, выбранное там.
Я подозреваю, однако, что вы ищете открытое распознавание речи, а не NSSpeechRecognizer. Если вы хотите преобразовать любой предварительно записанный звук в текст (т.е. сделать запись записи), вам совершенно не повезло с NSSpeechRecognizer, так как вы должны дать ему массив «команд» для прослушивания.
Теоретически, вы могли бы подать в него весь словарь, но я не думаю, что это сработало бы, поскольку вы обычно должны давать ему четкие, четкие команды. Я думаю, его производительность пострадает, если вы дадите ему кучу материала для анализа (в реальном времени).
Лучше всего взглянуть на сторонние решения с открытым исходным кодом. Есть несколько обобщенных пакетов (ни одного специально для Cocoa / Objective-C), но это ставит другой вопрос: какое признание вы ищете? Две основные формы распознавания речи («обученный» является более точным, но менее гибким для разных голосов и среды записи, тогда как «открытый», как правило, гораздо менее точен).
Вероятно, было бы лучше, если бы вы точно указали, чего пытаетесь достичь.