Archívum

Szerzői archívum

Hangfelolvasás (Text-To-Speech)

január 7, 2019 Hozzászólás

Aki ismer, tudja, hogy vannak olyan általam kezelt rendszerek is, amelyeket megváltozott munkaképességű embereket foglalkoztató cégek használnak.

Ennek (és az Office 2019) kapcsán merült fel, hogy még nem írtam az egyik lehetőségről, amely ilyen embereken segíthet: a szöveg-felolvasásról (angol rövidítéssel TTS).

Anélkül, hogy kitérnék különböző third-party gyártókra, kezdjük az alapokkal. Windows Vista és Win7-re telepíthető a Microsoft Speech Platform (pillanatnyilag 11.0), erre épülnek a hivatkozott oldalon található “Related resources“-ban felsorolt nyelvek – de maradva az aktuálisabb verzióknál, Win8-8.1-10 esetén a platform már alapból adott.

A platformot használó alkalmazások közül most az Office-t emelném ki, ezen keresztül magyaráznám el a cikk egyik apropóját. Az említett programcsomagban (a 2010-es verziótól) beépítve megtalálható a Speek funkció, amely segítségével – a kiadás verziójától függően – a OneNote, Outlook, PowerPoint és Word (bizonyos esetben Excel) komponensekkel használható a felolvasás.

A felolvastatás jobb megértéséhez mindenképp tisztázzuk azt, hogy (általában*) milyen nyelven kerül felolvasásra a szöveg: a szöveg nyelve alatt (ez adta az egész cikk alapját) az adott szó (mint legkisebb egység) ellenőrzés nyelvét (helyesírás és nyelvhelyesség ellenőrzés) értjük. Méginkább pontosítva: a szó első betűjének a nyelvi beállítása a mérvadó.

Így érkeztünk el a fekete leveshez. Előfordul, hogy az Office-ban hiába vesszük fel a Felolvasás menüpontot az eszköztárra, az szürke marad (vagy Outlookban hiába klikkelünk rá, nem történik semmi). Ez az előbb leírtakból adódik: a szöveg nyelvének egyeznie kell a telepített nyelvek egyikével (s itt a Vezérlőpultban található nyelvekre koncentráljunk). Tekintettel arra, hogy a listában nincs magyar nyelv, eddig ez a funkció eléggé hanyagolásra került.

De jöjjön az egyik jó hír 😊 Az újabb operációs rendszerek (Win8+) kétféle felolvasó-motorral rendelkeznek. Egyrészt vannak a WinRT speech synthesis API-k (a Windows.Media.SpeechSynthesis névtérben) az új motor használatára, illetve a SAPI speech synthesis API-k (a System.Speech.Synthesis névtérben és a COM ISpVoice csatlakozóval) a régi felolvasó működtetésére.

Ezek után kétfelé válik a történet. Lesznek a “hagyományos”, desktop alkalmazások (mint pl. az Office), illetve az új, “modern” fejlesztések (pl. az Edge, Narrator). A nyelv kiválasztásánál képbe jön a Vezérlőpult vs Beállítások (Control Panel vs Settings) kombó által okozott felfordulás is. A Settings/Time and Language/Speech részen az új motor alapértelmezett hangját, míg a Control Panel/Speech recognition/Text to speech beállításával a régi, “SAPI” alapértelmezett hangját választhatjuk ki. A két beállítás nem lesz koherens, ezt próbálják valamilyen szinten jelezni a Vezérlőpultban található nyelveknél a “Desktop” utótaggal is. Ennek ugyanakkor oka van: pl. az új TTS esetén ki tudjuk választani Microsoft Szabolcs-ot, mint magyar hang (a Preview voice segítségével meg is tudjuk hallgatni), viszont a Vezérlőpultban még mindig az angol David lesz beállítva – sőt, ott nem is tudjuk kiválasztani Szabolcsot. Tekintettel arra, hogy a SAPI családot már nem fejlesztik/bővítik, javasolt áttérni a WinRT-s motorra (bár ha egy nyelvi csomagban, ami alapértelmezetten új hangokat telepít, van SAPI hang is, az még telepítésre kerülhet).

Ez a kettősség fog mostantól végigkísérni, ugyanis alkalmazástól függően (ami általában egyik szintetizátor használatára van megírva) tudjuk majd kiválasztani a hangot (amennyiben van beépítve ilyen lehetőség, ellenkező esetben az előbb leírt helyen kijelölt hang marad). Amennyiben mindkét API-csomagot tudja kezelni (pl. a Narrator), úgy a “Desktop” utótag segít eldönteni, hogy az adott nyelv melyik motorra íródott. S akkor most kicsit visszakanyarodnánk az Office-hoz (de bármelyik programról lehetne szó): amennyiben nincs lehetőségünk magyar nyelvre (mert az még SAPI motort használ), akkor ne a beépített (Office esetén Speek) funkciót használjuk, hanem más felolvasót (igen, pl. a már sokat említett Narrator-t, ami egy “általános” felolvasó).

S akkor ejtsünk pár szót a hangok telepítéséről. A megszólaló nyelvek telepítése a fogaskerék (Beállítások) segítségével történik: Settings/Time and Language/Language alatt felsorolt listában lehet látni a jelenlegi állapotot, ahol a nyelv melletti ikonok jelzik, hogy az adott nyelv mely komponensei kerültek telepítésre (én jelen cikkben most csak a kimenettel, azaz a felolvasással foglalkozom):


Amennyiben nincs telepítve az adott komponens, akkor az adott nyelv Options menüpontjából telepíthetjük a Speech funkciót (nyelvtől függően – mint a magyar esetén is – előfordul, hogy csak a TTS-t telepíti, a hangalapú bevitelt nem).

Következzen a második jó hír, amihez ismét visszakanyarodunk az Office-hoz, konkrétabban az Office 2019-hez. Itt ugyanis, amikor kitennénk a Felolvasás parancsikont az eszköztárra, akkor érdemes figyelni, hogy két ilyen parancsunk is van.


Amelyik “buborék” formájú, az SAPI, az “A” betűs másik pedig WinRT alapú felolvasást tesz lehetővé – magyarul végre ez a termék is elkezdte használni az új motort. 😊 A gyorselérési eszköztárban pl. így néz ki a két ikon:


Mint említettem, Office (2019 előtt) esetén ha SAPI felolvasást végeztetünk, akkor tudjuk csak “megnyomni” a gombot, ha a szöveg nyelvével azonos nyelvű SAPI telepítve van (ha nincs, szürke a választási lehetőség). Ha a WinRT felolvasást választjuk, akkor kétfelé válik a történet: ha nincs telepítve az adott nyelvi TTS-modul, akkor a beállított nyelven megpróbálja felolvasni úgy, ahogy tudja (erre utal a korábbi * hivatkozás). Ha viszont telepítve van az adott nyelv TTS-e közül bármelyik, akkor azon a hangon szólaltatja meg. Sőt, ne feledjük: az adott szó nyelve számít, tehát egy mondatban is tudjuk keverni a nyelveket, s így mikor David (vagy Zira, az angol női hangról még nem is beszéltünk), mikor Szabolcs fog hozzánk szólni – kész kabaré 😊

Az új motor használatáról érdemes tudnunk, hogy egy általános alkalmazás (pl. Edge esetén) a lejátszást vezérlők melletti “beszélő emberke” ikon, Office esetén a “fogaskerekes hangszóró” ikon segítségével tudjuk kiválasztani a hangot:


Az egyik fontos különbség, hogy pl. Edge-nél (ahol nincs megadva a szöveg nyelve) kiválasztható minden (WinRT-s) hang, Office esetén viszont csak a kijelölt szöveg (vagy aktuális kurzorpozíció) nyelvének megfelelő hangok közül lehet kiválasztani (pl. a Settings-ben alapértelmezetten beállított David helyett Zira vagy Mark).

u.i. friss hír, hogy a 19H1 verzióban a Narrator tovább fejlődik…

Minimális keresési karakterszám a GAL-ban

december 14, 2018 Hozzászólás

Adott helyen egy olyan probléma merült fel, hogy „régebben” jól működött az Exchange címtárban a keresés, viszont egy ideje nem megy. Pontosítva a megfogalmazást, kiderült, hogy azokra készülékekre vonatkozott a megállapítás, amelyek ActiveSync-et használnak.

Körbejárva a kérdést, a háttérben az van, hogy Exch 2007-től alapértelmezetten 4 karakter alatt nem megy a keresés a GAL-ban. Ez Exch 2003-ban még 2 karakter volt, tehát ez egy új „feature”, nem bug 😊

Szerencsére ez módosítható: http://terenceluk.blogspot.com/2013/12/unable-to-search-gal-with-less-than-4.html

Kategóriák:Exchange Címke: ,

Hyper-V VM-ek vCPU

november 23, 2018 Hozzászólás

Bár utána lehet nézni a neten, egyik kolléga tőlem kérdezte meg, hogy „Egy Hoston lévő fizikai processzor magok számánál, lehet-e több magot kiosztani a vm-ek közt?”

Nos, a válasz* nem egyszerű igen vagy nem, hanem attól függ (s itt jöhetne egy kétopciós válasz (2016 előtt és után), de kicsit menjünk részleteibe).

Kezdjük a szerver oprendszerű gazdagépekkel. Ha Windows 2008/R2 fut a host-on, akkor a Microsoft által támogatott vCPU-k száma 4 (azért ez a megfogalmazás, mert technikailag megoldható ennek a határnak az átlépése, de az már nem lesz támogatott).

Ha 2012/R2 a gazdagép, akkor már képbe jön a vendég-gép oprendszere is (szerencsére a 2012 R2 esetén megjelenő Gen2 még nem), ideális esetben számolhatunk 64-el – de max a logikai processzorok száma (Logical processors = Sockets * Cores * HyperThreading).

Ha 2016 vagy 2019-ről beszélünk, akkor még bonyolultabb a válasz, ugyanis képbe jön a VM generációja, illetve a vendég OS fajtája: korszerű OS esetén (2016, 2019) G1 VM-nél 64 vCPU, G2 VM-nél 240 vCPU-ig tornászható fel a szám (még ha fizikailag nincs is annyi, de ez – a méretezés – már egy másik téma). Amennyiben 2012 R2, 2012 vagy 2008 R2-nk van, akkor egységesen 64 vCPU a limit, „sima” 2008 esetén pedig max 8.

Amennyiben Windows 10-es host-ról van szó, akkor kicsit változhatnak a számok.

* Ismerve a kollégát, értettem a kérdését is – ugyanis lehet méretezésre is gondolni, de ő most konkrétan nem azt akarta kérdezni 🙂

Exchange 2019 morgás

október 25, 2018 6 hozzászólás

Ugye a napokban lett véglegesítve az Exchange 2019. Eddig még lehetett reménykedni, hogy az előzetes információkkal ellentétben még van esélyünk a cikket kiváltó morgás megszűnésére, de a remény elhalt… Ugyanis szép és jó a fejlesztés, de egy dolgot emelnék csak ki belőle: a Mailbox kiszolgáló minimálisan ajánlott 128 GB memóriáját. Az MS-nél vagy nagyon elgurult a gyógyszer, vagy ezzel akarják a kkv-kat az Office365 irányába terelni.

Egyik érintett kis cég, ahol a napokban beszéltünk fejlesztésről, kapásból kilőtte ezt a verziót. Mivel vidék, rossz internet-eléréssel, ráadásul nagyon (értsd: nagyon) kis költségvetésű cég, az O365 is kilőve – így maradtunk az Exchange 2016 bevezetésénél.

Aki ismer, tudja, hogy amennyire lehet, MS-párti vagyok, ugyanakkor szakmai szempontból is meg szoktam mondani a véleményem – ennek kapcsán ez a lépés több fekete ponttal felérő minősítést ér… Csak ismétlésként, az eddigi minimális követelmények:

– Exchange 2019: 128 GB

– Exchange 2013, 2016: 8 GB

– Exchange 2010: 4 GB

 

ManagedBy attribútum

október 19, 2018 Hozzászólás

Egyik kolléga azt a kérdést szegezte nekem, hogy egy számítógép AD-fiók ManagedBy attribútuma felhasználható-e arra, hogy egy felhasználót az adott géphez kötni, pl. leltár esetén egy leltári számmal elnevezett gép tulajdonosa visszakereshető legyen.

Ez nem egy gyakran használt tulajdonság, így a pozitív válasz mellé elküldtem neki a részleteket is, viszont úgy gondoltam, érdemes ide is archiválnom.

Csoportok esetén ez a tulajdonság szinte értelemszerű, hiszen amennyiben beállítjuk az attribútum értékét és bekapcsoljuk a pipát, úgy a háttérben az adott csoport Security fülén megjelenik a „manager” és írás-jogot kap a csoporttagság módosítására.

Egy másik felhasználása az RODC-k esetén jön képbe, ugyanis ezzel tudjuk rajtuk a helyi adminisztratív fiókokat szabályozni (pl. „RODC-admins” nevű csoport), valamint a RepairAdmin értéke is ez lesz.

 

Kategóriák:General, Windows Server Címke:

Unicode XML

szeptember 26, 2018 Hozzászólás

Nemrég abban kérték a segítségem, hogy egy PowerShell script segítségével készített xml állomány kódolását miként lehet megváltoztatni, ugyanis azt eredetileg UTF8-ban mentették le, nekik ez viszont nem felelt meg.

Amennyiben (mint jelen esetben) egy már létező adattal dolgozunk, az alábbi példában a $XML változóban hivatkozok rá, ha viszont még nincs, akkor pl. az alábbi utasítással hozhatjuk létre:

$XML = New-Object System.Xml.XmlDocument

A kódolás változtatására a neten keresgélve több módszert is találhatunk. Ezekből próbáltam egyet megfelelően összeállítani, amely még ha nem is működik minden esetben, de az adott cél elérésében segített (az adott sorba mindenki másolja a neki megfelelő kódolást). Amit viszont “csak” dokumentáltam, hogy a különböző Unicode kódolások eléréséhez milyen paramétereket kell megadni – ez azért fontos, mert van olyan kódolás, ahova 1, van, ahol 2 paramétert kell kötelező módon megadni (minden esetben a BOM az utolsó paraméter):

# Encoding types, just for listing

# UTF8

$UTF8WithoutBom = New-Object System.Text.UTF8Encoding($false)

$UTF8WithBom = New-Object System.Text.UTF8Encoding($true)

# UTF16

$UnicodeLEWithoutBOM = New-Object System.Text.UnicodeEncoding($false,$false)

$UnicodeLEWithBOM = New-Object System.Text.UnicodeEncoding($false,$true)

$UnicodeBEWithoutBOM = New-Object System.Text.UnicodeEncoding($true,$false)

$UnicodeBEWithBOM = New-Object System.Text.UnicodeEncoding($true,$true)

# UTF32

$UTF32LEWithoutBOM = New-Object System.Text.UTF32Encoding($false,$false)

$UTF32LEWithBOM = New-Object System.Text.UTF32Encoding($false,$true)

$UTF32BEWithoutBOM = New-Object System.Text.UTF32Encoding($true,$false)

$UTF32BEWithBOM = New-Object System.Text.UTF32Encoding($true,$true)

# End listing

 

$FileName = “$Path\$name.xml”

$File = New-Object System.IO.StreamWriter($FileName, $false, $UnicodeLEWithoutBOM)

$XML.Save($File)

$File.Close()

Ez a része kipipálva 😊

Kategóriák:General Címke: ,

Outlook form kiszórása

augusztus 17, 2018 Hozzászólás

Az előző után ismét egy Outlook-os történet. Adva van egy custom form, .fdm formátumban, amit központilag szeretnénk kiszórni. Nos, ehhez ez a formátum nem jó, át kell alakítani .oft formába. Ehhez manuálisan betöltjük az .fdm-et, engedélyezzük a Developer menüpontot, majd ezen belül a Form szerkesztésével megnyitva, Fájl, mentés másként, elmentjük.

S itt jön a csavar. Az Office 2013-ban van egy bug, ami miatt az elmentett form nem teljesen használható, ezért az Office 2010 segítségét vettük igénybe (bizonyos okok miatt 2016 nem jöhetett szóba). Ugyanazt a műveletsort elvégezve, az elkészült form már használható volt mindkét érintett verzióban, jöhetett a tömeges telepítés.

Kategóriák:General Címke: , ,