Mikrofon AIS i PlayStation Eye - brak sygnału "bip"

Po naciśnięciu i przytrzymaniu przycisku mikrofonu na pilocie od bramki AIS nie słychać dźwięku “bip” przed wypowiedzeniem komendy. Pilot działa prawidłowo i rozpoznaje komendy głosowe. Jednak brakuje mi tego dźwięku (poza istniejącą czerwoną diodą) abym wiedział w którym momencie mogę wydać komendę. Do bramki mam podłączony przewód HDMI do amplitunera oraz głośnik zewnętrzny bluetooth przez który słyszę wszystkie komunikaty. Do tylnego USB podłączony jest pendrive do zbierania historii a do bocznych USB podłączony jest klucz do pilota i kamera PlayStation Eye, która wykorzystywana jest również jako mikrofon. W przypadku gdy jest ona uaktywniania również chciałbym najpierw usłyszeć dźwięk “bip” przed wypowiedzeniem komendy.

Cyfrowe audio (po hdmi albo spdif) może powodować taki efekt, bo one oszczędzają energię i są wyciszane/wyłączane (włączają się dopiero po chwili a po chwili po tym, jak dostaną audio, bip trwa tylko chwilę, więc leci, zanim cyfrowe wejście się włączy).

To Twój odbiornik się wyłącza/wycisza (wzmacniacz czy tv), żeby się nie wyłączał, musielibyśmy puszczać mu cały czas jakiś dźwięk z bramki.

Zobacz czy na analogowym wyjściu jest bip.
Zobacz czy jak leci jakieś radio, w tle z bramki to jest bip.

Trochę potestowalem i dźwięk “bip” słychać w kolumnach podłączonych do amplitunera do którego jest podłączona bramka przez HDMI oraz na głośniku podłączonym przez wyjście AV z bramki. Jednak przy podłączonym głośniku przez AV (sprawdzałem kilka modeli, podłączonych do różnych zasilaczy jak i pracujących tylko na baterii) za każdym razem gdy wyłączam amplituner lub przełączam się na źródło z bramki AIS słyszę ok. 1 sekundowy dźwięk buczenia i nie wiem jak to wyeliminować.
Jak mam podłączony głośnik po bluetooth (posiadam bramkę AIS z bluetooth) to nie słyszę tego buczenia ale za to głośnik uaktywnia się z opóźnieniem i w momencie gdy jest generowany sygnał “bip” głośnik jeszcze tego nie odtwarza. Sprawdziłem to na usłudze “say_it”. Jak wpisałem aby Jolka powiedziała “A co powiesz na to” to usłyszałem tylko “Co powiesz na to”.

Co mogę zrobić aby w głośniku podłączonym przez bluetooth słyszany był cały tekst ?

W jaki sposób wyeliminować ww. buczenie przy podłączonym przewodowo głośniku przez wyjście AV ?

Czy jest możliwość zwiększenia głośności samego dźwięku “bip” ?

Też mam ten problem bo mam podłączony głośnik Bluetooth bo po AV strasznie buczało.
Po bluetooth głośnik jest wyciszony i obcina pierwszą sylabę każdego tekstu zanim się wybudzi.

Jak podaję do odtworzenia zdanie przez odtwarzacz w zakładce Audio: “Co dzisiaj robimy?” to słychać jedynie “O dzisiaj robimy” a czasem “dzisiaj robimy”

OK, dzięki za test i info - czyli potwierdzamy, że to ucinanie, nie dzieje się na bramce tylko na podłączonym głośniku po BT.

Tego nie da się ulepszyć od strony bramki. Jedyne co można próbować robić to hack typu ciągłe puszczanie jakiegoś dźwięku z bramki do głośnika (żeby się nie wyciszał), ale nie będziemy tego robić, bo to “straszny drut” by był.
Nie byłoby to też zgodne z prawnymi regulacjami. Regulacje (unijne itd.) wymuszają na producentach oszczędzanie energii i stąd bierze się wyłączanie głośników BT, które nie odtwarzają audio i ich wyciszanie, żeby oszczędzić energię-żeby urządzenia, które nic nie robią (na stand by), zużywały mało prądu.

Możesz poszukać głośnika BT, który się nie wycisza, ale nie wiem, czy coś takiego istnieje.

W przypadku bramki BT, żeby nie buczało, trzeba dobrać odpowiednią przejściówkę.

Temat był aktualny kilkanaście miesięcy temu, jak jeszcze sprzedawaliśmy BT, wszyscy użytkownicy BT otrzymali informacje na email, jak odpowiednio wyprowadzić audio z tego gniazda.
Sprawdźcie jeszcze raz swoje e-maile, w których pisaliśmy w tym temacie. Jeżeli coś jest niezrozumiałe w instrukcji / nie działa tak jak opisaliśmy, to odpiszcie proszę na tego emaila, z informacją co dokładnie robicie (jaką przejściówkę używacie) i jaki jest efekt.

Dzwięk bip jest “wbudowany w system Android”. Możliwe, że leci on na innym kanale niż audio (na kanale z dźwiękami systemowymi).
Zapisałem sobie w TODO, żeby to sprawdzić, jak będę wiedział jak - to umieszczę tu instrukcję jak wykonać automatyzację zwiększającą VOL na kanale dźwięków systemowych.

Robimy już automatyczne ściszanie kanału audio po wykryciu uruchomienia mikrofonu, może da się też pogłośnić kanał systemowy… zobaczymy.

1polubienie

Mam nadzieję że się uda. Czekam z niecierpliwością.

Przetestowałem swoją przejściówkę i buczenie ustało w momencie jak przewód od głośnika podłączyłem pod wejście czerwone oznaczone mikrofonem. Dotychczas cały czas testowałem mając podłączony przewód pod gniazdo zielone oznaczone jako słuchawki. Nie wiem czy tak powinno być ale objaw buczenia ustąpił. Pojawia się tylko na chwilę przy restarcie bramki.
@Belamy, sprawdź u siebie ten sposób i daj znać czy pomogło.

Moje aktualne podłączenie:

sprawdziłem i bip leci na kanale do muzyki -> STREAM_MUSIC
więc nie da się go podgłośnić niezależnie od muzyki

Ale załóżmy, że chcemy pogłośnić na maksa ten stream po jakimś zdarzeniu w systemie (np. po wciśnięciu przycisku mikrofon).
Opisze jak to zrobić krok po kroku bez podawania samego rozwiązania, bo może to się przyda komuś do robienia innych rzeczy w systemie.

API Android

Android udostępnia nam swoje usługi systemowe i API do nich.
Dostępne usługi możemy wylisotować komendą:

su -c "services list"

Usług mamy 111, nas w tym przypadku insteresuje usługa audio

Status usługi audio

Aktualny status usługi możemy sprawdzić komendą dumpsys

su -c "dumpsys audio"

:information_source: Tu widzimy, że stream music ma maksymalnie wartość 15 a pbecnie wartość 2

Komendy serwisu audio

Każdy serwis Androida ma komendy które można wywołać, wywołuje się je poprzez wywołanie serwisu z parametrem call oraz podaniem numeru komendy i wartości do parametrów przyjmowanych przez komendę.
Kod serwisu audio jest dostępny w repozytorium Androida w github:

Oczywiście w każdej wersji Androida serwis ten dizała trochę inaczej, dlatego żeby było łatwiej wyciągnołem z dokmentacji Google i wersji serwisu który mamy na bramce wszystkie komendy i ich parametry które przyjmuje serwis audio, to jest cała lista:

SERVICE_PACKAGE=android.media.IAudioService
1	     oneway void adjustSuggestedStreamVolume(int direction, int suggestedStreamType, int flags,             String callingPackage, String caller)
2	     void adjustStreamVolume(int streamType, int direction, int flags, String callingPackage)
3	     void setStreamVolume(int streamType, int index, int flags, String callingPackage)
4	     boolean isStreamMute(int streamType)
5	     void forceRemoteSubmixFullVolume(boolean startForcing, IBinder cb)
6	     boolean isMasterMute()
7	     void setMasterMute(boolean mute, int flags, String callingPackage, int userId)
8	     int getStreamVolume(int streamType)
9	     int getStreamMinVolume(int streamType)
10     int getStreamMaxVolume(int streamType)
11     int getLastAudibleStreamVolume(int streamType)
12     void setMicrophoneMute(boolean on, String callingPackage, int userId)
13     void setRingerModeExternal(int ringerMode, String caller)
14     void setRingerModeInternal(int ringerMode, String caller)
15     int getRingerModeExternal()
16     int getRingerModeInternal()
17     boolean isValidRingerMode(int ringerMode)
18     void setVibrateSetting(int vibrateType, int vibrateSetting)
19     int getVibrateSetting(int vibrateType)
20     boolean shouldVibrate(int vibrateType)
21     void setMode(int mode, IBinder cb, String callingPackage)
22     int getMode()
23     oneway void playSoundEffect(int effectType)
24     oneway void playSoundEffectVolume(int effectType, float volume)
25     boolean loadSoundEffects()
26     oneway void unloadSoundEffects()
27     oneway void reloadAudioSettings()
28     oneway void avrcpSupportsAbsoluteVolume(String address, boolean support)
29     void setSpeakerphoneOn(boolean on)
30     boolean isSpeakerphoneOn()
31     void setBluetoothScoOn(boolean on)
32     boolean isBluetoothScoOn()
33     void setBluetoothA2dpOn(boolean on)
34     boolean isBluetoothA2dpOn()
35     int requestAudioFocus(in AudioAttributes aa, int durationHint, IBinder cb,             IAudioFocusDispatcher fd, String clientId, String callingPackageName, int flags,             IAudioPolicyCallback pcb)
36     int abandonAudioFocus(IAudioFocusDispatcher fd, String clientId, in AudioAttributes aa)
37     void unregisterAudioFocusClient(String clientId)
38     int getCurrentAudioFocus()
39     void startBluetoothSco(IBinder cb, int targetSdkVersion)
40     void startBluetoothScoVirtualCall(IBinder cb)
41     void stopBluetoothSco(IBinder cb)
42     void forceVolumeControlStream(int streamType, IBinder cb)
43     void setRingtonePlayer(IRingtonePlayer player)
44     IRingtonePlayer getRingtonePlayer()
45     int getUiSoundsStreamType()
46     void setWiredDeviceConnectionState(int type, int state, String address, String name,             String caller)
47     int setBluetoothA2dpDeviceConnectionState(in BluetoothDevice device, int state, int profile)
48     AudioRoutesInfo startWatchingRoutes(in IAudioRoutesObserver observer)
49     boolean isCameraSoundForced()
50     void setVolumeController(in IVolumeController controller)
51     void notifyVolumeControllerVisible(in IVolumeController controller, boolean visible)
52     boolean isStreamAffectedByRingerMode(int streamType)
53     boolean isStreamAffectedByMute(int streamType)
54     void disableSafeMediaVolume(String callingPackage)
55     int setHdmiSystemAudioSupported(boolean on)
56     boolean isHdmiSystemAudioSupported()
57     String registerAudioPolicy(in AudioPolicyConfig policyConfig,             in IAudioPolicyCallback pcb, boolean hasFocusListener)
58     oneway void unregisterAudioPolicyAsync(in IAudioPolicyCallback pcb)
59     int setFocusPropertiesForPolicy(int duckingBehavior, in IAudioPolicyCallback pcb)
60     void setVolumePolicy(in VolumePolicy policy)
61     void registerRecordingCallback(in IRecordingConfigDispatcher rcdb)
62     oneway void unregisterRecordingCallback(in IRecordingConfigDispatcher rcdb)
63     List<AudioRecordingConfiguration> getActiveRecordingConfigurations()

:information_source: Nas interesuje komenda numer 3 -> setStreamVolume która przyjmuje między innymi parametr streamType

Z dokumentacji Android możemy też odczytać, że STREAM_MUSIC ma wartość 3

Wywołanie komendy w serwisie audio

Jak już to wszystko wiemy to możemy sterować głośnością muzyki z konsoli:

żeby uswaić głośność ma maksa wywołujemy komendę:

su -c "service call audio 3 i32 3 i32 15"

gdzie:

  • service call audio to wywołanie komendy w serwise audio
  • 3 - to numer komendy którą chcemy wywołać -> setStreamVolume
  • i32 - to informacja, że przekazujemy prametry w postaci int-ów
  • 3 - koljne 3 to STREAM_MUSIC
  • 15 - to wartość maksymalna do volume tego streama

analogicznie można wykonywać inne usługi systemu
Do wysłania komendy do systemu z poziomu Asystenta domowego służy usługa ais_shell_command.execute_command

możesz ją (jak każdą usługę) wykonać w automatyzacji

efekt - sterowanie głośnością w systemie

Jak to dopowiednio połączysz to mam nadzieję uda Ci się osiągnąć to co chcesz zrboić - podgłośnić bip :slight_smile:
Powodzenia

1polubienie

Mam pytanie z innej beczki czy po podłączeniu kamery od PlayStation do bramki bez pilota można też wydawać polecenia czy trzeba coś ustawić oraz jakie kamery są wspierane przez ais? bo mam w domu kamerkę eye toy namtai (szarą) od PlayStation 2 i zastanawiam się czy będę mógł ją wykorzystać jako mikrofon i zamienić bramkę w Smart głośnik typu google home czy Amazon echo

Od wersji 0.106 możesz wykorzystać kamerę Playstation eye, tu masz to opisane. Ja u siebie uruchamia nasłuch mikrofonu właśnie z tej kamery za pomocą przycisku aqara. Działa bez problemu.

Jak dodałeś aby nasłuchiwanie odbywało się po naciśnięciu przycisku ? Bo wpisałem w konsoli komendę (co jest w tym poście o rest api)

$ curl -v --header “Content-Type: application/json” --request POST --data ‘{“micOn”: true}’ http://192.168.1.11:8122/command

Z głośników podłączonych do bramki było słychać dźwięk aktywacji mikrofonu, mam cały czas napis “słucham cię” na bramce, a jak zapytałem o godzinę to gada że czegoś nie zrozumiała i nie wiem jak wydać kolejną komendę bo w konsoli mam takie cos po wpisaniu tej komendy

Note: Unnecessary use of -X or --request, POST is already inferred.

  • Trying 192.168.1.11:8122…
  • TCP_NODELAY set
  • Connected to 192.168.1.11 (192.168.1.11) port 8122 (#0)

POST /command HTTP/1.1
Host: 192.168.1.11:8122
User-Agent: curl/7.66.0
Accept: /
Content-Type: application/json
Content-Length: 15

  • upload completely sent off: 15 out of 15 bytes
  • Mark bundle as not supporting multiuse
    < HTTP/1.1 200 OK
    < Connection: Keep-Alive
    < Content-Length: 2
    < Content-Type: text/html; charset=utf-8
    <
  • Connection #0 to host 192.168.1.11 left intact
    ok$


zrobiłem automatyzacje i słyszę ten dźwięk “bip” ale jolka nie rozumie mnie wiec jak mogę sprawdzić czy jolka słyszy coś z tego mikrofonu z kamerki i jaka jest jakość dźwięku ? Jak dopisałem w poprzednim wpisie że słychać BIP a Jolka nie reaguje nawet na komendę gdy pytam o pogodę lub godzinę przez mikrofon w kamerce