Temat: Odtwarzanie komunikatów głosowych przez głośnik USB

Poniżej tutorial stworzony przez sztuczną inteligencję.

Działa od strzała. Komunikaty się odtwarzają, mam tylko problem ze zmianą głośności:

https://chat.openai.com/share/1f42cdcf- … 1d8a04d361

Ale może to problem konstrukcyjny samych głośników na USB i głośności nie da się tutaj zmienić ?


Głośniki to:

# lsusb
Bus 001 Device 003: ID 4c4a:4155 Jieli Technology UACDemoV1.0
# aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: UACDemoV10 [UACDemoV1.0], device 0: USB Audio [USB Audio]
  Subdevices: 1/1
  Subdevice #0: subdevice #0

Próba zmiany głośności kończy się odpowiedzią:

# amixer -D plughw:0,0 sset Master 20%
ALSA lib control.c:1528:(snd_ctl_open_noupdate) Invalid CTL plughw:0,0
amixer: Mixer attach plughw:0,0 error: No such file or directory

2 (edytowany przez mesmariusz 2024-01-16 02:30:42)

Odp: Odtwarzanie komunikatów głosowych przez głośnik USB

Poniekąd się wyjaśniło.

Suma sumarum mogę co najwyżej ustawić głośnośc strzałkami w narzędziu alsamixer, a nie mogę tego dokonać z palca poleceniem amixer, bo nie udaje się znaleźć działającej kontrolki. Sztuczna inteligencja wysiadła na tym etapie. Macie jakieś pomysły?

Czy karta dźwiękowa zaimplementowana w głośnikach ID 4c4a:4155 Jieli Technology UACDemoV1.0 mogą może być przyczyną, że ca pomocą polecenia

amixer -D plughw:0,0 sset Master 20%
ALSA lib control.c:1528:(snd_ctl_open_noupdate) Invalid CTL plughw:0,0
amixer: Mixer attach plughw:0,0 error: No such file or directory

nie da się zmienić poziomu głośności ?

Numer karty i urządzenia mam ustawione poprawnie:

# aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: UACDemoV10 [UACDemoV1.0], device 0: USB Audio [USB Audio]
  Subdevices: 1/1
  Subdevice #0: subdevice #0

ChatGPT
Błąd, który widzisz, sugeruje, że nie udało się poprawnie otworzyć kontrolera dźwięku ALSA przy użyciu polecenia amixer. Problem może wynikać z niewłaściwego ustawienia parametrów urządzenia dźwiękowego w poleceniu lub z problemów z samym urządzeniem.

Spróbuj użyć poniższego polecenia, aby ustawić poziom głośności za pomocą amixer:

bash
Copy code
amixer -c 0 sset Master 20%

Opcja -c 0 wskazuje, że chcesz użyć karty dźwiękowej o numerze 0. Jeśli to nie zadziała, możesz spróbować również:

amixer -c UACDemoV1.0 sset Master 20%

Wprowadź to polecenie, a następnie sprawdź, czy poziom głośności został zmieniony. Jeśli to nadal nie działa, mogą występować problemy z obsługą ALSA dla tego konkretnego urządzenia. W takim przypadku warto sprawdzić dostępność aktualizacji sterowników lub poszukać w sieci informacji od innych użytkowników tego konkretnego modelu karty dźwiękowej.

User
Otrzymałem odpowiedź:

# amixer -c 0 sset Master 20%
amixer: Unable to find simple control 'Master',0"

ChatGPT
Otrzymując komunikat "Unable to find simple control 'Master',0", oznacza to, że kontrola o nazwie "Master" nie jest dostępna dla twojej karty dźwiękowej. W takim przypadku warto sprawdzić dostępne kontrolki dźwięku, aby ustawić głośność.

Aby to zrobić, możesz użyć poniższego polecenia, aby zobaczyć dostępne kontrolki dla twojej karty:

amixer -c 0 controls

Odpowiedź powinna zawierać listę dostępnych kontrolerów dźwięku. Sprawdź, czy wśród nich widnieje odpowiedni kontroler głośności, a następnie użyj go w poleceniu amixer. Na przykład, jeśli widzisz kontroler o nazwie "Playback Volume", możesz użyć poniższego polecenia:

amixer -c 0 sset "Playback Volume" 20%

Upewnij się, że używasz dokładnej nazwy kontrolera, jaką uzyskałeś z poprzedniego polecenia amixer -c 0 controls. Jeśli jednak nie znajdziesz odpowiedniego kontrolera, może to oznaczać, że sterownik ALSA dla twojego urządzenia nie obsługuje pełnej funkcji kontroli głośności. W takim przypadku możesz rozważyć inne metody ustawiania głośności, takie jak użycie narzędzi dostarczanych przez środowisko pulpitu lub innych narzędzi zarządzających dźwiękiem.

User
Otrzymałem odpowiedź

# amixer -c 0 controls
numid=4,iface=CARD,name='Keep Interface'
numid=2,iface=MIXER,name='PCM Playback Switch'
numid=3,iface=MIXER,name='PCM Playback Volume'
numid=1,iface=PCM,name='Playback Channel Map'"

ChatGPT
Dziękuję za dostarczenie informacji o dostępnych kontrolkach. W tym przypadku widoczne są dwie istotne kontrolki związane z głośnością:

PCM Playback Switch
PCM Playback Volume

Możesz spróbować dostosować głośność za pomocą tej drugiej kontrolki. Oto jak to zrobić:

amixer -c 0 sset "PCM Playback Volume" 20%

Jeśli powyższe polecenie nie działa, sprawdź, czy kontrolka PCM Playback Switch jest ustawiona na "on". Jeśli nie, możesz włączyć ją za pomocą poniższego polecenia:

amixer -c 0 sset "PCM Playback Switch" on

Następnie spróbuj ponownie dostosować głośność poleceniem dotyczącym PCM Playback Volume.

Upewnij się, że używasz dokładnych nazw kontrolerów, tak jak je uzyskałeś z polecenia amixer -c 0 controls. Jeśli to również nie działa, może to oznaczać, że sterownik ALSA dla twojego urządzenia nie obsługuje pełnej funkcji kontroli głośności, i wtedy warto byłoby rozważyć inne metody zarządzania głośnością, takie jak użycie narzędzi dostarczanych przez środowisko pulpitu lub innych narzędzi zarządzających dźwiękiem.

User
Dostałem odpowiedzi:

# amixer -c 0 sset "PCM Playback Volume" 20%
amixer: Unable to find simple control 'PCM Playback Volume',0

# amixer -c 0 sset "PCM Playback Switch" on
amixer: Unable to find simple control 'PCM Playback Switch',0"

ChatGPT
Wygląda na to, że kontrolki PCM Playback Volume i PCM Playback Switch nie są dostępne w sposób, w jaki się spodziewamy. To może być wynik specyfiki sterowników lub konkretnego modelu karty dźwiękowej.

W takim przypadku, zamiast korzystać z amixer, możesz spróbować narzędzi dostarczonych przez środowisko pulpitu lub inne narzędzia do zarządzania dźwiękiem dostępne na twoim systemie. Przykładowo, dla środowiska pulpitu GNOME można skorzystać z poniższego polecenia:

gnome-control-center sound

Jeśli używasz innego środowiska pulpitu, istnieją odpowiedniki dla różnych menedżerów dźwięku. Próbuj dostosowywać głośność przy użyciu narzędzi dostępnych w interfejsie graficznym systemu operacyjnego.

Jeśli z jakiegoś powodu konieczne jest korzystanie z linii poleceń, a amixer nie działa, możesz również rozważyć użycie innego narzędzia, takiego jak alsamixer. Zainstaluj go, jeśli nie jest zainstalowane, a następnie uruchom komendę:

alsamixer

W alsamixer możesz używać strzałek do góry i w dół, aby dostosować poziom głośności, a klawisz "M" do włączania/wyłączania mute. Po dostosowaniu poziomu głośności, naciśnij klawisz "Esc", aby wyjść z alsamixer.

W przypadku dalszych problemów, zalecam również sprawdzenie dokumentacji systemu operacyjnego oraz forów internetowych, aby znaleźć informacje specyficzne dla Twojej karty dźwiękowej i systemu.

User
To jest router na Openwrt, tu nie ma pulpitu. Ale alsamixer zadziałało

ChatGPT
Dobrze, cieszę się, że alsamixer zadziałało dla Ciebie. W przypadku routerów z systemem OpenWrt, które zazwyczaj nie mają środowiska pulpitu, narzędzia tekstowe takie jak alsamixer są przydatne do zarządzania ustawieniami dźwięku.

Jeśli będziesz musiał utrzymać ustawienia głośności w późniejszym czasie, możesz skorzystać z alsactl do zapisania i przywrócenia konfiguracji ALSA. Na przykład, aby zapisać bieżące ustawienia dźwięku:

alsactl store

Aby później przywrócić te ustawienia:

alsactl restore

Dziękuję za cierpliwość, i jeśli masz jakiekolwiek inne pytania, śmiało pytaj!

User
Dostałem odpowiedź

# alsactl store
alsactl: save_state:1652: Cannot open /var/lib/alsa/asound.state for writing: No such file or directory

ChatGPT
Wygląda na to, że alsactl nie może zapisać stanu, ponieważ nie może znaleźć lub utworzyć katalogu /var/lib/alsa/ lub pliku /var/lib/alsa/asound.state. W przypadku systemów OpenWrt może to wynikać z faktu, że system plików jest dostępny tylko do odczytu w trybie "read-only" lub brak odpowiednich uprawnień.

Aby obejść ten problem, możesz użyć innego katalogu, w którym masz uprawnienia do zapisu. Na przykład, możesz użyć katalogu /tmp:

alsactl --file /tmp/asound.state store

To polecenie zapisze bieżący stan dźwięku do pliku /tmp/asound.state. Następnie, gdy będziesz chciał przywrócić te ustawienia, użyj:

alsactl --file /tmp/asound.state restore

Pamiętaj, że plik ten będzie utracony po restarcie systemu, więc jeśli chcesz, aby ustawienia były trwałe, będziesz musiał znaleźć sposób na zapisanie ich w trwałym miejscu. W systemach OpenWrt możesz to osiągnąć poprzez dostosowanie konfiguracji, jednak procedury te mogą się różnić w zależności od wersji OpenWrt i używanego sprzętu. Warto sprawdzić oficjalną dokumentację OpenWrt oraz forów społeczności, aby uzyskać bardziej szczegółowe informacje na temat dostosowywania konfiguracji ALSA.

3

Odp: Odtwarzanie komunikatów głosowych przez głośnik USB

Pokaz wynik samego polecenia amixer

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

4

Odp: Odtwarzanie komunikatów głosowych przez głośnik USB

Cezary napisał/a:

Pokaz wynik samego polecenia amixer

# amixer
Simple mixer control 'PCM',0
  Capabilities: pvolume pswitch pswitch-joined
  Playback channels: Front Left - Front Right
  Limits: Playback 0 - 147
  Mono:
  Front Left: Playback 44 [30%] [-20.16dB] [on]
  Front Right: Playback 44 [30%] [-20.16dB] [on]

5

Odp: Odtwarzanie komunikatów głosowych przez głośnik USB

Więc u ciebie to nazywa się "PCM" a nie "Master"

amixer sset PCM 40%

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

6

Odp: Odtwarzanie komunikatów głosowych przez głośnik USB

Cezary napisał/a:

Więc u ciebie to nazywa się "PCM" a nie "Master"

amixer sset PCM 40%

Zadziałało :-)

# amixer sset PCM 40%
Simple mixer control 'PCM',0
  Capabilities: pvolume pswitch pswitch-joined
  Playback channels: Front Left - Front Right
  Limits: Playback 0 - 147
  Mono:
  Front Left: Playback 59 [40%] [-17.37dB] [on]
  Front Right: Playback 59 [40%] [-17.37dB] [on]

Widać czasem jeszcze długo prawdziwa inteligencja będzie tą brakującą wisienką na sztucznym torcie :-D

Swoją drogą wiadomo, dlaczego w ostatnich dniach forum eko tak bardzo się muli ?

7

Odp: Odtwarzanie komunikatów głosowych przez głośnik USB

mesmariusz napisał/a:

Swoją drogą wiadomo, dlaczego w ostatnich dniach forum eko tak bardzo się muli ?

https://eko.one.pl/forum/viewtopic.php?id=23610

Xiaomi Mi Router AX9000 ver. EU + OpenWrt 24.10.4
NETGEAR Nighthawk X4S R7800 + OpenWRT 24.10.4
Netgear Nighthawk R7000 & 6400 v2 + FreshTomato
TP-Link TL-WR842ndv1 + DD-WRT

8

Odp: Odtwarzanie komunikatów głosowych przez głośnik USB

Znalazłem chwilę i kontynuuję temat:

Ustawianie głośności:

amixer sset PCM 80%

Odtwarzanie dźwięku:

espeak -v pl "Jeden, dwa, trzy, cztery, pięć, sześć, siedem, osiem, dziewięć, dziesięć" --stdout | sox -t wav - -c 2 -t wav - | aplay

Lepsza metoda:

Dużo lepszą jakość generowania dźwięku zapewni korzystanie z silnika google online.

Należy utworzyć skrypt:

nano /usr/bin/text_to_speech_pl.sh

zawartość:

#!/bin/sh

# Sprawd^=, czy podano argument
if [ "$#" -lt 1 ]; then
    echo "Usage: $0 <text-to-speak>"
    exit 1
fi

# Kodowanie tekstu w formacie URL
TEXT=$(echo "$*" | sed 's/ /%20/g' | sed 's/M-9/%C4%85/g' | sed 's/ %C4%87/g' | sed 's/%C4%99/%C4%99/g' | sed 's/ %C4%99/g' | sed 's/M-3/%C5%82/g' | sed 's/%C5%82/%C5%82/g'>

# URL do Google Translate TTS
URL="https://translate.google.com/translate_tts?ie=UTF-8&client=gtx&tl=pl&q=${TEXT}"

# Plik tymczasowy MP3
TMPFILE="/tmp/output_$(date +%s).mp3"

# Pobierz plik MP3 z Google Translate TTS
echo "Downloading speech from: $URL"
curl -s "$URL" -o "$TMPFILE"

# Sprawd^=, czy pobieranie si powiodM-3o
if [ ! -s "$TMPFILE" ]; then
    echo "Failed to download the MP3 file."
    exit 1
fi

# Odtwarzanie pliku MP3 za pomocM-9 play
echo "Playing the speech..."
play "$TMPFILE"

# Usu tymczasowy plik
rm "$TMPFILE"


Przykład użycia skryptów:

/usr/bin/text_to_speech_pl.sh "Jest godzina $(date +'%H:%M') i data to $(date +'%d-%m-%Y')"

Aby wykonywać skrypt cyklicznie należy dodac go do crontab-a:

crontab-e

Uruchomi się prawdopodobnie edytor vi, dla przypomnienia więc:

Przechodzenie do edycji pliku: a
Zapis i wyjście: ESC :wq


Przykładowa zawartość tabeli crontab:

# Uruchomienie skryptu text_to_speech_pl.sh co p.. godziny, od 6:00 do 00:00
*/30 6-23 * * * /usr/bin/text_to_speech_pl.sh "Jest godzina $(date +'%H:%M') i data to $(date +'%d-%m-%Y')"

Problemem jest tylko sam cron, bo zdaje się nie ma go w repo?

https://i.imgur.com/ZLV9E43.png

9

Odp: Odtwarzanie komunikatów głosowych przez głośnik USB

Cron to podstawowe narzędzie , jest preinstalowany zdaje się w każdy openwrt https://eko.one.pl/?p=openwrt-cron

10

Odp: Odtwarzanie komunikatów głosowych przez głośnik USB

Dokładnie, nie trzeba go instalować.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

11

Odp: Odtwarzanie komunikatów głosowych przez głośnik USB

To teraz pytanie czemu u mnie go nie ma.
Zadania z crona się nie uruchamiają, nawet ustawione co minutę. Jak to zdjagnozować?

12 (edytowany przez Cezary 2024-08-17 07:35:28)

Odp: Odtwarzanie komunikatów głosowych przez głośnik USB

/etc/init.d/cron enable
/etc/init.d/cron start

i pokaż co masz wpisane w /etc/crontabs/root

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

13

Odp: Odtwarzanie komunikatów głosowych przez głośnik USB

Cezary napisał/a:

/etc/init.d/cron enable
/etc/init.d/cron start

i pokaż co masz wpisane w /etc/crontab/root

# /etc/init.d/cron enable
# /etc/init.d/cron start
# cat /etc/crontab/root
cat: can't open '/etc/crontab/root': No such file or directory
#

Wygląda na to, że crontab -e nie aktualizowało ani nie zakładało pliku /etc/crontab/root
Gdzie więc zapisywało zmiany?

Stworzyłem za pomocą nano odpowiednie wpisy w /etc/crontab/root

Niestety nie jestem teraz przy routerze, ale jak potwierdzę, czy teraz działa, dam znać.

14

Odp: Odtwarzanie komunikatów głosowych przez głośnik USB

Moja wina

cat /etc/crontabs/root

"s" na końcu...

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

15

Odp: Odtwarzanie komunikatów głosowych przez głośnik USB

Wygląda na to, że teraz działa.

Zawartość /etc/crontabs/root

# Uruchomienie skryptu text_to_speech_pl.sh co pol godziny, od 6:00 do 00:00
*/30 6-23 * * * /bin/sh -c '/usr/bin/text_to_speech_pl.sh "Jest godzina $(date +'%H:%M') i data to $(date +'%d-%m-%Y')"'

Warto też ustawić strefę czasową:

nano /etc/config/system

dodając linię:

option timezone 'CET-1CEST,M3.5.0,M10.5.0/3'

w sekcji config system

Swoją drogą, dziwne, że nie było jej tam domyślnie.

16

Odp: Odtwarzanie komunikatów głosowych przez głośnik USB

Staraj się nie wkładać do croma takich "skomplikowanych " poleceń, bo czasami nie działa jak są znaki specjalnie. Zrób skrypt z tego i wołaj po prostu skrypt.
Ot, taka rada z perspektywy praktyki.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

17

Odp: Odtwarzanie komunikatów głosowych przez głośnik USB

U mnie jest strefa domyślnie. W standardowych obrazach strefy nie ma - w domyśle jest cza utc.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.