# Jak działa mówienie w przeglądarce

**URL:** <https://ai-speaker.discourse.group/t/jak-dziala-mowienie-w-przegladarce/377>\
**Category:** faq\
**Created:** [16 Kwiecień 2020 07:54 UTC](https://ai-speaker.discourse.group/t/jak-dziala-mowienie-w-przegladarce/377 "2020-04-16T07:54:17Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Autor:** ![jolka](https://yyz2.discourse-cdn.com/free1/user_avatar/ai-speaker.discourse.group/jolka/32/5_2.png) [@jolka](https://ai-speaker.discourse.group/u/jolka)\
**Data wpisu:** [16 Kwiecień 2020 07:54 UTC](https://ai-speaker.discourse.group/t/jak-dziala-mowienie-w-przegladarce/377/1 "2020-04-16T07:54:17Z")

</div>

# Wyjaśmimy jak to się dzieje, że “Jolka mówi w przeglądarce”

Jest to odpowiedz na pytania, typu “dlaczego w mojej przeglądarce xxx Jolka mówi tak a w przeglądarce yyy inaczej”?

## Speech Synthesis API

Do mówienia w przeglądarce stosujemy API przeglądarki:

> **[Window: speechSynthesis property - Web APIs | MDN](https://developer.mozilla.org/en-US/docs/Web/API/Window/speechSynthesis)**
>
> The speechSynthesis read-only property of the Window object returns a SpeechSynthesis object, which is the entry point into using Web Speech API speech synthesis functionality.

implementacja i dostęp do tego api zależy od przeglądarki:

> **[Can I use... Support tables for HTML5, CSS3, etc](https://caniuse.com/#search=Speech%20Synthesis%20API)**
>
> "Can I use" provides up-to-date browser support tables for support of front-end web technologies on desktop and mobile web browsers.

 ![image](https://global.discourse-cdn.com/free1/uploads/ai_speaker/original/2X/4/44303d806c9d0586141c0864fefeb66303d028cf.png)

## Kod po stronie Jolki

nasz kod sprowadza się do tych 3 podkreślonych linijek

 ![image](https://global.discourse-cdn.com/free1/uploads/ai_speaker/original/2X/e/e41ceca378afe824578a868944f2379549543601.png)

## Test w przeglądarce

na dowolnej stronie w konsoli przeglądarki wystarczy wkleić coś takiego:

```auto
var speech = new SpeechSynthesisUtterance("Cześć tu Jolka");
speech.lang = "pl-PL";
window.speechSynthesis.speak(speech);

```

 ![image](https://global.discourse-cdn.com/free1/uploads/ai_speaker/original/2X/9/91ceb1c996d2c0466d13d2f2c208db1bde984299.png)

## Podsumowanie

> Jeśli efekt mówienia w przeglądarce nie jest zadowalający, to należy to niezwłocznie zgłosić do producenta przeglądarki, bo źle / słabo zaimplementował Speech Synthesis API.  
> AI-Speaker jeszcze nie dostarcza Speech Synthesis API do przeglądarek Internetowych 😉

---

<div class="post-metadata">

**Autor:** ![Iron](https://yyz2.discourse-cdn.com/free1/user_avatar/ai-speaker.discourse.group/iron/32/63_2.png) [@Iron](https://ai-speaker.discourse.group/u/Iron)\
**Data wpisu:** [16 Kwiecień 2020 13:26 UTC](https://ai-speaker.discourse.group/t/jak-dziala-mowienie-w-przegladarce/377/2 "2020-04-16T13:26:25Z")

</div>

A jednak się da nawet w Androidzie 4.1.1 zmusić Jolkę do gadania 🙂 Chrome trzeba ściągnąć ręcznie gdyż w Google Play nie da się do tak starej wersji.  
Maksymalna wersja Chrome obsługująca 4.1.1 to chrome beta w wersji 72.0.3626.14 lub 71.0.3578.99.

[https://androidapksfree.com/chrome/com-android-chrome/download-old/chrome-71-0-3578-99-357809900-android-4-1-apk-download/](https://androidapksfree.com/chrome/com-android-chrome/download-old/chrome-71-0-3578-99-357809900-android-4-1-apk-download/)

Żeby Jolka przemówiła po polsku trzeba doinstalować Zamiana tekstu na mowę + głos POLSKI i ustawić w opcjach - Język, klawiatura, głos  
Zamiana tekstu na mowę - głos POLSKI

---

<div class="post-metadata">

**Autor:** ![sdsi](https://avatars.discourse-cdn.com/v4/letter/s/45deac/32.png) [@sdsi](https://ai-speaker.discourse.group/u/sdsi)\
**Data wpisu:** [14 Kwiecień 2021 21:18 UTC](https://ai-speaker.discourse.group/t/jak-dziala-mowienie-w-przegladarce/377/5 "2021-04-14T21:18:56Z")

</div>

Czy to jest jakieś ograniczenie przeglądarki (a także aplikacji ais), że dłuższe komunikaty Jolka nie czyta w całości tylko jakieś kilkadziesiąt znaków? Na głośniku czyta w całości.

---

<div class="post-metadata">

**Autor:** ![jolka](https://yyz2.discourse-cdn.com/free1/user_avatar/ai-speaker.discourse.group/jolka/32/5_2.png) [@jolka](https://ai-speaker.discourse.group/u/jolka)\
**Data wpisu:** [15 Kwiecień 2021 06:51 UTC](https://ai-speaker.discourse.group/t/jak-dziala-mowienie-w-przegladarce/377/6 "2021-04-15T06:51:51Z")

</div>

tak, jest takie ogranicznie - niektóre przeglądarki nie czytają długich tekstów  
dlatego obcinamy tekst wysyłany do przeglądarki do 250 znaków

 ![image](https://global.discourse-cdn.com/free1/uploads/ai_speaker/original/2X/7/727078fffd54091b9989a20a66b09a44763de4e7.png)

ten kod masz na bramce w pliku  
`/data/data/pl.sviete.dom/files/usr/lib/python3.9/site-packages/homeassistant/components/ais_ai_service/ __init__.py`

możesz go zmieniać i sprawdzać jak to działa

 ![image](https://global.discourse-cdn.com/free1/uploads/ai_speaker/original/2X/8/86f5d6d0d87eb6077d839012e5dff79aa855a466.png)

jak poprawisz i będzie lepiej to możesz dostarczyć poprawkę dla wszystkich,  
tu jest ten kod w github:

[https://github.com/sviete/AIS-home-assistant/blob/beta/homeassistant/components/ais\_ai\_service/](https://github.com/sviete/AIS-home-assistant/blob/beta/homeassistant/components/ais_ai_service/) **init**.py#L3672

Tak działa Open Source - to dostęp do kodu źródłowego i **wolność** /możliwość jego modyfikacji

 ![image](https://global.discourse-cdn.com/free1/uploads/ai_speaker/original/2X/c/c8b198482ef080182d71402ec3d9830ec4b690cd.jpeg)

---

<div class="post-metadata">

**Autor:** ![sdsi](https://avatars.discourse-cdn.com/v4/letter/s/45deac/32.png) [@sdsi](https://ai-speaker.discourse.group/u/sdsi)\
**Data wpisu:** [15 Kwiecień 2021 07:40 UTC](https://ai-speaker.discourse.group/t/jak-dziala-mowienie-w-przegladarce/377/7 "2021-04-15T07:40:06Z")

</div>

dobrze - dziękuję. sprawdzę to. pozdrowienia 🙂

---

<div class="post-metadata">

**Autor:** ![macek](https://yyz2.discourse-cdn.com/free1/user_avatar/ai-speaker.discourse.group/macek/32/4936_2.png) [@macek](https://ai-speaker.discourse.group/u/macek)\
**Data wpisu:** [15 Kwiecień 2021 07:44 UTC](https://ai-speaker.discourse.group/t/jak-dziala-mowienie-w-przegladarce/377/8 "2021-04-15T07:44:50Z")

</div>

> [@jolka](#):
>
> dlatego obcinamy tekst wysyłany do przeglądarki do 250 znaków  
> … możesz go zmieniać i sprawdzać jak to działa

Można by było tę wartość 250 zamienić na zmienną wtedy zmiana w kodzie będzie jeszcze łatwiejsza 🙂

---

<div class="post-metadata">

**Autor:** ![jolka](https://yyz2.discourse-cdn.com/free1/user_avatar/ai-speaker.discourse.group/jolka/32/5_2.png) [@jolka](https://ai-speaker.discourse.group/u/jolka)\
**Data wpisu:** [16 Kwiecień 2021 05:07 UTC](https://ai-speaker.discourse.group/t/jak-dziala-mowienie-w-przegladarce/377/9 "2021-04-16T05:07:32Z")

</div>

no to śmiało kolego, wiesz gdzie jest kod, jak umiesz coś ulepszyć to jesteśmy otwarci

> [@jolka](#):
>
> jak poprawisz i będzie lepiej to możesz dostarczyć poprawkę dla wszystkich,  
> tu jest ten kod w github:
> 
> [https://github.com/sviete/AIS-home-assistant/blob/beta/homeassistant/components/ais\_ai\_service/](https://github.com/sviete/AIS-home-assistant/blob/beta/homeassistant/components/ais_ai_service/) **init**.py#L3672

---

<div class="post-metadata">

**Autor:** ![macek](https://yyz2.discourse-cdn.com/free1/user_avatar/ai-speaker.discourse.group/macek/32/4936_2.png) [@macek](https://ai-speaker.discourse.group/u/macek)\
**Data wpisu:** [16 Kwiecień 2021 08:15 UTC](https://ai-speaker.discourse.group/t/jak-dziala-mowienie-w-przegladarce/377/10 "2021-04-16T08:15:25Z")

</div>

> [@jolka](#):
>
> no to śmiało kolego,

🤔 w sumie racja, mogę to zrobić sam ale jak coś popsuję bedzie na mnie 😛.  
Jak stanę się posiadaczem bramki PRO1 bardziej “zaangażuje sie” w projekt bo coraz bardziej mi sie podoba.
