Я пытаюсь сделать приложение, которое позволяет пользователю записывать предложение и преобразовать его в текст. Запуск медиареатического и речевого режизализатора одновременно не работает, поэтому я решил сначала сделать запись, а затем передать этот файл в речевое определение, используя Extra_audio_source Extra в распознавательнице. < /P>
Тем не менее, речевое определение, похоже, не функционирует как предполагаемое. Он не читается из файла, и вместо этого открывает микрофон, чтобы прослушать его. Я обнаружил это, говоря очень быстро после того, как нажимаю кнопку «Остановить запись». Речикзогнизатор поймал последние несколько слов и дал мне правильный результат. Вот фрагмент моего кода. Я вырезал неважные материалы пользовательского интерфейса. < /P>
private var recorder: MediaRecorder? = null
private var recognizer: SpeechRecognizer? = null
private val mediaFormat = MediaRecorder.OutputFormat.MPEG_4
private val audioEncoding = MediaRecorder.AudioEncoder.DEFAULT
private var currentRecordingFile: String = "recording_0.3gp"
private var recordingParcel: ParcelFileDescriptor? = null
// [ {"text": "speech to text result", "file": "path to clip recording"}, "time": "datetime" ]
private var translations = mutableStateListOf()
private fun startTalking () {
startRecording()
}
private fun stopTalking () {
stopRecording()
startRecognizing()
}
private fun startRecording () {
val num = translations.count()
currentRecordingFile = "$externalCacheDir/recording_$num.3gp"
recorder = MediaRecorder(this).apply {
setAudioSource(MediaRecorder.AudioSource.MIC)
setOutputFormat(mediaFormat)
setAudioEncoder(audioEncoding)
setAudioChannels(1)
setAudioSamplingRate(16000)
setAudioEncodingBitRate(64000)
setOutputFile(currentRecordingFile)
try {
prepare()
} catch (e: IOException) {
Log.e("startRecording", e.toString())
}
start()
}
}
private fun stopRecording () {
recorder?.apply {
stop()
release()
}
recorder = null
}
private fun startRecognizing () {
val file = File(currentRecordingFile)
recordingParcel = ParcelFileDescriptor.open(file, ParcelFileDescriptor.MODE_READ_ONLY)
val intent = Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH)
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, "in-ID")
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_PREFERENCE, "in-ID")
intent.putExtra(RecognizerIntent.EXTRA_AUDIO_SOURCE, recordingParcel)
intent.putExtra(RecognizerIntent.EXTRA_AUDIO_SOURCE_ENCODING, audioEncoding)
intent.putExtra(RecognizerIntent.EXTRA_AUDIO_SOURCE_CHANNEL_COUNT, 1)
intent.putExtra(RecognizerIntent.EXTRA_AUDIO_SOURCE_SAMPLING_RATE, 16000)
try {
recognizer = SpeechRecognizer.createSpeechRecognizer(this)
recognizer?.setRecognitionListener(this)
recognizer?.startListening(intent)
} catch (e: Exception) {
Log.e("SpeechRecognizer", e.message.toString())
}
}
private fun stopRecognizing () {
recordingParcel?.close()
recognizer?.stopListening()
recognizer?.destroy()
recognizer = null
}
override fun onError(error: Int) {
Log.e("Speech onError", error.toString())
stopRecognizing()
}
override fun onResults(results: Bundle){
val words: ArrayList? = results.getStringArrayList(SpeechRecognizer.RESULTS_RECOGNITION)
if (words != null) {
val sentence = words.joinToString(separator = " ")
val translation = mapOf("text" to sentence, "file" to currentRecordingFile)
translations.add(translation)
Log.e("CURR RESULT", sentence)
}
stopRecognizing()
}
< /code>
Я подозреваю, что это потому, что я неправильно использую parcelfiledescriptor? Как примечание, функция GetStatsize посылки возвращает ненулевой размер файла, и я могу воспроизводить запись с помощью медиаплеера, поэтому сама запись в порядке. < /P>
Другая причина может быть из-за Следующая строка из документации. «Если это дополнительное не установлено или распознаватель не поддерживает эту функцию , распознаватель откроет микрофон для звука и закроет его, когда распознавание будет закончено». Я не знаю, как проверить список поддержки, но я тестирую это на Android 13.
Спасибо за чтение.
Подробнее здесь: https://stackoverflow.com/questions/775 ... e-mic-inst
Android's Speechcognizer с Extra_Audio_source по -прежнему слушает микрофон, а не из файла ⇐ Android
Форум для тех, кто программирует под Android
1739120025
Anonymous
Я пытаюсь сделать приложение, которое позволяет пользователю записывать предложение и преобразовать его в текст. Запуск медиареатического и речевого режизализатора одновременно не работает, поэтому я решил сначала сделать запись, а затем передать этот файл в речевое определение, используя Extra_audio_source Extra в распознавательнице. < /P>
Тем не менее, речевое определение, похоже, не функционирует как предполагаемое. Он не читается из файла, и вместо этого открывает микрофон, чтобы прослушать его. Я обнаружил это, говоря очень быстро после того, как нажимаю кнопку «Остановить запись». Речикзогнизатор поймал последние несколько слов и дал мне правильный результат. Вот фрагмент моего кода. Я вырезал неважные материалы пользовательского интерфейса. < /P>
private var recorder: MediaRecorder? = null
private var recognizer: SpeechRecognizer? = null
private val mediaFormat = MediaRecorder.OutputFormat.MPEG_4
private val audioEncoding = MediaRecorder.AudioEncoder.DEFAULT
private var currentRecordingFile: String = "recording_0.3gp"
private var recordingParcel: ParcelFileDescriptor? = null
// [ {"text": "speech to text result", "file": "path to clip recording"}, "time": "datetime" ]
private var translations = mutableStateListOf()
private fun startTalking () {
startRecording()
}
private fun stopTalking () {
stopRecording()
startRecognizing()
}
private fun startRecording () {
val num = translations.count()
currentRecordingFile = "$externalCacheDir/recording_$num.3gp"
recorder = MediaRecorder(this).apply {
setAudioSource(MediaRecorder.AudioSource.MIC)
setOutputFormat(mediaFormat)
setAudioEncoder(audioEncoding)
setAudioChannels(1)
setAudioSamplingRate(16000)
setAudioEncodingBitRate(64000)
setOutputFile(currentRecordingFile)
try {
prepare()
} catch (e: IOException) {
Log.e("startRecording", e.toString())
}
start()
}
}
private fun stopRecording () {
recorder?.apply {
stop()
release()
}
recorder = null
}
private fun startRecognizing () {
val file = File(currentRecordingFile)
recordingParcel = ParcelFileDescriptor.open(file, ParcelFileDescriptor.MODE_READ_ONLY)
val intent = Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH)
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, "in-ID")
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_PREFERENCE, "in-ID")
intent.putExtra(RecognizerIntent.EXTRA_AUDIO_SOURCE, recordingParcel)
intent.putExtra(RecognizerIntent.EXTRA_AUDIO_SOURCE_ENCODING, audioEncoding)
intent.putExtra(RecognizerIntent.EXTRA_AUDIO_SOURCE_CHANNEL_COUNT, 1)
intent.putExtra(RecognizerIntent.EXTRA_AUDIO_SOURCE_SAMPLING_RATE, 16000)
try {
recognizer = SpeechRecognizer.createSpeechRecognizer(this)
recognizer?.setRecognitionListener(this)
recognizer?.startListening(intent)
} catch (e: Exception) {
Log.e("SpeechRecognizer", e.message.toString())
}
}
private fun stopRecognizing () {
recordingParcel?.close()
recognizer?.stopListening()
recognizer?.destroy()
recognizer = null
}
override fun onError(error: Int) {
Log.e("Speech onError", error.toString())
stopRecognizing()
}
override fun onResults(results: Bundle){
val words: ArrayList? = results.getStringArrayList(SpeechRecognizer.RESULTS_RECOGNITION)
if (words != null) {
val sentence = words.joinToString(separator = " ")
val translation = mapOf("text" to sentence, "file" to currentRecordingFile)
translations.add(translation)
Log.e("CURR RESULT", sentence)
}
stopRecognizing()
}
< /code>
Я подозреваю, что это потому, что я неправильно использую parcelfiledescriptor? Как примечание, функция GetStatsize посылки возвращает ненулевой размер файла, и я могу воспроизводить запись с помощью медиаплеера, поэтому сама запись в порядке. < /P>
Другая причина может быть из-за Следующая строка из документации. «Если это дополнительное не установлено [b] или распознаватель не поддерживает эту функцию [/b], распознаватель откроет микрофон для звука и закроет его, когда распознавание будет закончено». Я не знаю, как проверить список поддержки, но я тестирую это на Android 13.
Спасибо за чтение.
Подробнее здесь: [url]https://stackoverflow.com/questions/77542540/androids-speechrecognizer-with-extra-audio-source-still-listens-to-the-mic-inst[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия