Hangi Ses Kaynağını Kullanmalısınız: MIC, VOICE_RECOGNITION, VOICE_COMMUNICATION ve Diğerleri
Kısa cevap: Normal ses kaydı için — VOICE_RECOGNITION (daha iyi gürültü azaltma), VoIP için — VOICE_COMMUNICATION (AEC/NS ve düşük gecikme), video çekimi için — CAMCORDER, basit ses kayıt cihazları için — MIC; VOICE_CALL yalnızca sistem uygulamaları tarafından kullanılabilir.
Temel AudioSource'ların Kısa Özeti
- MIC — standart mikrofon, uyumludur ancak arka plan seslerine duyarlıdır. Sessiz ortamlarda ses kayıt cihazları ve podcast'ler için uygundur.
- VOICE_RECOGNITION — önceden yapılandırılmış gürültü ve yankı azaltma özellikli mikrofon, konuşma tanıma ve asistanlar için optimize edilmiştir.
- VOICE_COMMUNICATION — VoIP için: minimum gecikme, desteklenen cihazlarda AEC/NS'i otomatik olarak etkinleştirir.
- CAMCORDER — sesin video ile birlikte kaydedilmesi için dengelenmiştir, senkronizasyon kaybını azaltır.
- VOICE_CALL — yalnızca sistem/önyüklenmiş uygulamalar için mevcuttur; güvenlik kısıtlamaları nedeniyle çoğu üçüncü taraf uygulama tarafından kullanılamaz.
- DEFAULT, REMOTE_SUBMIX, FM_RADIO vb. — ya genel ya da eski; normal uygulamalarda REMOTE_SUBMIX ve FM_RADIO'dan kaçının.
Gerçek cihazlarda ve farklı mikrofonlarla (dahili, kulaklık, USB) test edin. Emülatör gerçek akustiği yansıtmaz.
Kaynak Seçimi Nasıl Yapılır — Pratik Talimatlar
- Görevi belirleyin: konuşma tanıma, arama, video kaydı veya basit kayıt.
- Önerilen kaynakla başlayın:
- Konuşma tanıma ve sesli asistanlar — VOICE_RECOGNITION.
- VoIP/konferanslar — VOICE_COMMUNICATION.
- Kamera ile senkronize kayıt — CAMCORDER.
- Evrensel basit kayıt — MIC.
- Cihaz desteğini kontrol edin:
- AudioManager.getDevices() ve AudioRecord.getActiveRecordingConfigurations() kullanın.
- Android sürümüne dikkat edin: VOICE_CALL ve bazı düşük seviyeli kaynaklar Android 9/10+ ile kısıtlanmıştır.
- Parametre ayarları:
- Konuşma için 16 kHz yeterlidir; müzik için 44.1/48 kHz kullanın.
- Konuşma için PCM_16BIT formatı ve CHANNEL_IN_MONO — pil tasarrufu ve alışılmış standart.
- İşleme:
- Cihazda mevcut ise AcousticEchoCanceler ve NoiseSuppressor'u etkinleştirin.
- Arka plan kayıtları için foreground service kullanın (Android 10+ kısıtlamaları).
VOICE_CALL ve REMOTE_SUBMIX genellikle üçüncü taraf uygulamalar için kullanılamaz. Bunlara güvenmeyin — bu, çoğu cihazda hatalara ve sessiz kayda neden olur.
Kod Örnekleri (Kotlin)
Konuşma tanıma için basit bir AudioRecord:
val audioSource = MediaRecorder.AudioSource.VOICE_RECOGNITION
val sampleRate = 16000
val channelConfig = AudioFormat.CHANNEL_IN_MONO
val audioFormat = AudioFormat.ENCODING_PCM_16BIT
val bufferSize = AudioRecord.getMinBufferSize(sampleRate, channelConfig, audioFormat)
val recorder = AudioRecord(audioSource, sampleRate, channelConfig, audioFormat, bufferSize)
Başlatmadan önce RECORD_AUDIO iznini istemeyi ve PackageManager.PERMISSION_GRANTED kontrolünü yapmayı unutmayın.
Sık Yapılan Hatalar
- Üçüncü taraf uygulama için VOICE_CALL seçimi — çoğu cihazda kayıt başlamaz.
- Gereksiz yere yüksek örnekleme hızı kullanımı — pil tüketir ve gecikmeyi artırır.
- Yalnızca emülatörde test etme — gerçek akustik ve mevcut efektler farklı olabilir.
- AcousticEchoCanceler/NoiseSuppressor varlığının kontrol edilmemesi — bunları kontrol etmeden etkinleştirmeye çalışmak hatalara neden olur.
SSS
-
Gürültü azaltmayı her zaman etkinleştirmek gerekir mi?
Evet, görev konuşma tanıma veya aramalar ise; ancak etkinleştirmeden önce efekti cihazda kontrol edin. -
Podcast için hangi AudioSource seçilmeli?
MIC veya EXTERNAL_MIC (varsa harici ekipman). Daha iyi kalite için harici mikrofonlar + sunucu/editör tarafında işleme uygulayın. -
Bazı cihazlarda kayıt sessiz gidiyorsa ne yapılmalı?
İzinleri, AudioSource'u (VOICE_CALL/REMOTE_SUBMIX genellikle kullanılamaz) kontrol edin ve aktif cihazları ve ses rollerini belirlemek için AudioManager kullanın.
Kaynağı belirli göreve göre seçin, hedef cihazlarda test edin ve güvenilir kayıt kalitesi için donanım efektlerini ve yazılım işlemesini birleştirin.