Как заставить аудиовход (микрофон) работать на Android с помощью python/kivyPython

Программы на Python
Ответить
Anonymous
 Как заставить аудиовход (микрофон) работать на Android с помощью python/kivy

Сообщение Anonymous »

РЕДАКТИРОВАНИЕ от посетителя: текущий консенсус в отношении этой ситуации, по-видимому, заключается в том, что Kivy в настоящее время не поддерживает микрофон, и мы просим людей помочь перенести надстройку «аудиопоток», чтобы это могло работать. снова. Любая крошечная работа, которая поможет этому, очень ценится. Более подробная информация ниже.
Я пытаюсь заставить микрофон работать на Android, я использую в основном kivy и buildozer.
У меня работает аудиовыход с помощью audiostream, однако этот модуль настолько устарел, что не будет работать больше, если использовать ввод «запись». Проблема с GITHub. Ну, мне не удалось заставить запись работать на ПК, потому что он говорит «не поддерживается», как только я использую функции записи, в документах упоминаются только мобильные устройства, так что это нормально. на этих платформах его в любом случае можно заменить на pyaudio.
Я пытался найти другие варианты, которые я могу использовать, поэтому наткнулся на pyjnius и MediaRecorder, я очень новичок в Java,( и пытаюсь изучить банкомат Python, так что там тоже новичок), поэтому мне не удалось заставить его работать.
Проблема в том, что мне нужно записать все данные микрофона в байты, с pyaudio это легко сделать, и это работает. причина, почему я здесь, это Android, где pyaudio не работает (по крайней мере, я еще не пробовал скомпилировать библиотеки для Android, я знаю, что это возможно, но много работы..)
Вот код что мне нужно попробовать, чтобы это заработало:

Код: Выделить всё

            MediaRecorder = autoclass('android.media.MediaRecorder')
AudioSource = autoclass('android.media.MediaRecorder$AudioSource')
OutputFormat = autoclass('android.media.MediaRecorder$OutputFormat')
AudioEncoder = autoclass('android.media.MediaRecorder$AudioEncoder')
FileOutputStream = autoclass('java.io.FileOutputStream')
gaindata = io.BytesIO()

mRecorder = MediaRecorder()
mRecorder.setAudioSource(AudioSource.MIC)
mRecorder.setOutputFormat(OutputFormat.THREE_GPP)

mRecorder.setOutputFile(gaindata.getBytes())
mRecorder.setAudioEncoder(AudioEncoder.AMR_NB)
mRecorder.prepare()
Я знаю, что есть что-то в FileDescriptor, есть несколько примеров, но во всех них есть пробелы в строках, поэтому я понятия не имею, как преобразовать их в Python. Все, что мне нужно, это setOutputFile - > Gaindata
Если есть другой вариант, было бы неплохо, мне нужны данные bytesIO с микрофона (предпочитаю 8000, моно, raw wav без заголовка ИЛИ GSM6.10), и я конвертирую их с помощью звуковой файл (да, я скомпилировал libsndfile.so для активации) в gsm6.10 и поместил его в сокет, это приложение VoIP.

Подробнее здесь: https://stackoverflow.com/questions/598 ... ython-kivy
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»