Skip to main content

Posts

Free Internet TV, a 2008 link directory that outlived its era

Another one from the archive. Free Internet TV is a directory of live TV channels streaming for free on the web, sorted by language and region — Arabic, Czech, English, French, German, Italian, Portuguese, Russian, Slovak. It was built when watching television in a browser still meant installing RealPlayer and hoping your ADSL line held up. Plenty of the links have rotted since, but the surprise is how many still resolve, and how useful the list remains if you want news in a language you are learning rather than the algorithm's idea of what you should watch. Like the Gmail Backup site, it now runs as a static mirror on S3 behind HTTPS. Old sites do not have to die; they just have to stop needing a database.
Recent posts

Gmail Backup is still online

Jan Švec and I wrote Gmail Backup back in 2008 — a one-click tool that pulled your Gmail down over IMAP into a local folder, with incremental backups so you only fetched what was new. It ran on Windows and Linux, the code went out under GPL v3, and for a few years it was the answer people gave when someone asked how to get their mail off Google's servers. It is old software and the world has moved on, but the site is still up: www.gmail-backup.com , with the downloads, the documentation, the FAQ and the forum threads intact. I recently moved the whole thing to static hosting and put it back on HTTPS, which is the only reason it still loads at all. Worth remembering the premise, which has not aged: your mail is only yours if you have a copy of it.

Voice AI consulting through Voicebre Systems

A note on what I do when I am not writing about KALDI graphs: I take on voice AI work through Voicebre Systems , a small consultancy based in Prague. Three things, mostly: custom speech recognition — including voice commands and languages that the off-the-shelf stacks handle badly; natural language understanding for conversational systems; and end-to-end voice agents, from VUI design through to integration with whatever is already running in the business. The interesting problems are usually not the model. They are the data you are allowed to use, the latency budget, and what happens on the turn where the user says something nobody anticipated. If that is the shape of your problem, get in touch .

Vokarys: dictation that runs on your own machine

Most dictation today is a round trip to someone else's GPU. That is fine until your voice is the part the model was never trained on — an accent, a speech difference, a bad microphone in a noisy room — and you have no way to make it adapt. That is the problem Vokarys goes after. It is a desktop app that turns speech into text with recognition running locally on your computer, with punctuation and capitalisation added as you talk. It learns from your own voice over time, and recordings stay on the machine unless you explicitly choose to contribute them. There is a voice chat mode wired to Gemini as well, and a browser version if you would rather not install anything. If you have given up on dictation because the generic model never quite got you, it is worth a look.

Privacy policy

 Privacy Policy Effective date: 2024-02-16 This Privacy Policy applies to the website [bozskyfilip.blogspot.com] operated by [Filip Jurcicek] ("us", "we", or "our"). This Policy informs you of our policies regarding the collection, use, and disclosure of personal data we receive from users of our website. 1. Information Collection and Use We may collect and process the following types of data: 1.1 Personal Data: We may collect personally identifiable information including, but not limited to, your name, email address, and contact information. We collect this information for the purpose of providing and improving our services to you. 1.2 Usage Data: We may collect non-personally identifiable information about how you use our website. This may include your IP address, browser type, device type, operating system, and other similar information. We collect this information to analyze trends, administer the site, track users' movements, and gather demographi...

Categorical Reparameterization with Gumbel-Softmax & The Concrete Distri...

Midnight Commander shortcuts

Key Action Notes Ctrl+o toggle panes on/off Ctrl+l redraw screen This is on  all terminals Ctrl+PgUp goto parent dir Ctrl+Enter copy selected filename to command line %f is equivalent Ctrl+x+p copy unselected panel's path to command line %D is equivalent Ctrl+x ! External panelize Display paths returned from external command Shift+mouse select text Insert toggle selection of highlighted file * toggle selection + add pattern to selection - remove pattern from selection F3 view F4 edit F5 copy F6 rename F7 mkdir F8 remove F9 menu F10 Exit

how the make HCL and G graphs, and on the fly compositon of HCL and G for KALDI

Well, I had again to do something ;-) The task is to generate/create/update a decoding graph for KALDI on the fly. In my case, I aim at changing a G (grammar) in the context of a dialogue system. One can generate a new HCLG but this would take a lot of time as this involves FST determinization, epsilon-removal, minimization, etc. Therefore, I tried to use on-the-fly composition of statically prepared HCL and G. At first, I struggled with it but later I made it work. See  https://github.com/jpuigcerver/kaldi-decoders/issues/1 Here is a short summary: At the end, I managed to get LabelLookAheadMatcher to work. It is mostly based on the code and examples in opendcd, e.g. https://github.com/opendcd/opendcd/blob/master/script/makegraphotf.sh . First, Here is how I build and prepare the HCL and G. Please not that OpenFST must be compiled with  --enable-lookahead-fsts , see http://www.openfst.org/twiki/bin/view/FST/ReadMe . #--------------- fstdeterminize ${lang}/...

kaldi editing nnet3 chain model - adding a softmax layer on top of the chain output

I had to do one more thing: to edit a trained  kaldi  nnet3 chain model and add a softmax layer on top of the chain model. The reason for this is to get "probability" like output directly from the chain model First, let's look at the nnet structure: nnet3-am-info final.mdl input-dim: 20 ivector-dim: -1 num-pdfs: 6105 prior-dimension: 0 # Nnet info follows. left-context: 15 right-context: 15 num-parameters: 15499085 modulus: 1 input-node name=input dim=20 component-node name=L0_fixaffine component=L0_fixaffine input=Append(Offset(input, -1), input, Offset(input, 1)) input-dim=60 output-dim=60 component-node name=Tdnn_0_affine component=Tdnn_0_affine input=L0_fixaffine input-dim=60 output-dim=625 component-node name=Tdnn_0_relu component=Tdnn_0_relu input=Tdnn_0_affine input-dim=625 output-dim=625 component-node name=Tdnn_0_renorm component=Tdnn_0_renorm input=Tdnn_0_relu input-dim=625 output-dim=625 component-node name=Tdnn_1_affine component=Tdnn_1_affi...

kaldi editing nnet3 chain model - using the auxiliary xent output as the main output

I had a task to edit a trained kaldi  nnet3 chain model so that the output node is the output-xent instead the original output. First, let's look at the nnet structure: nnet3-am-info final.mdl input-dim: 20 ivector-dim: -1 num-pdfs: 6105 prior-dimension: 0 # Nnet info follows. left-context: 15 right-context: 15 num-parameters: 15499085 modulus: 1 input-node name=input dim=20 component-node name=L0_fixaffine component=L0_fixaffine input=Append(Offset(input, -1), input, Offset(input, 1)) input-dim=60 output-dim=60 component-node name=Tdnn_0_affine component=Tdnn_0_affine input=L0_fixaffine input-dim=60 output-dim=625 component-node name=Tdnn_0_relu component=Tdnn_0_relu input=Tdnn_0_affine input-dim=625 output-dim=625 component-node name=Tdnn_0_renorm component=Tdnn_0_renorm input=Tdnn_0_relu input-dim=625 output-dim=625 component-node name=Tdnn_1_affine component=Tdnn_1_affine input=Append(Offset(Tdnn_0_renorm, -1), Tdnn_0_renorm, Offset(Tdnn_0_renorm, 1)) in...