Urgent.News

What's breaking now, across thousands of outlets.

Tech

I built my friend a voice-based recipe note-taking app

What I built Built a browser-based app which takes audio input from the microphone and transcribes it into recipe notes/memo. Building for a Friend Made it for my friend, Arnesh. He is very passionate about cooking and I built this app so that he can note down recipe notes/memoes hands-free when his hands are occupied while cooking. Demo https://boisterous-gnome-e40fb5.netlify.app/ Code…

I developed a browser-based app that allows users to record audio and convert it into recipe notes or memos. This application was created for my friend, Arnesh, who enjoys cooking and frequently needs to take notes while his hands are occupied. The app can be accessed at https://boisterous-gnome-e40fb5.netlify.app/ and its code is available on GitHub at https://github.com/XDut/recipe-keeper.

The app operates entirely within the browser, utilizing the browser's microphone APIs to capture audio input. It then employs the Transformers.js library with the open Xenova/whisper-tiny model for speech-to-text conversion. Once the audio is transcribed, the text is parsed into structured recipe information, including ingredients, steps, timing, and other relevant details.

To maintain a clean and easily extendable codebase, I structured the project into distinct modules. These modules cover areas such as audio recording, transcription, recipe parsing, recipe storage, rendering, UI state, and utilities. This design approach simplifies the overall understanding and future expansion of the application.

The user experience is straightforward: audio input is captured, transcribed using the Whisper Model, and the resulting recipe memo is displayed, downloadable as JSON, or printed. For testing purposes, sample audio is provided, enabling users to experience the app without the need to record their own audio.

The motivation behind this project stemmed from the personal and sensitive nature of cooking instructions. Recipes may encompass family traditions, personal voice recordings, or other content that users might prefer to keep private, avoiding uploading to third-party servers. By adopting a local, browser-based solution, the app addresses these concerns effectively.

Utilizing an open model through Transformers.js allows the core transcription functionality to run locally within the user's browser, negating the necessity for a proprietary speech-to-text API. Consequently, there is no requirement to establish a separate backend solely for transmitting someone's cooking audio to a server and awaiting the transcription results.

Perhaps most importantly, this project underscores the potential of AI technologies to create practical applications without necessitating a cloud service infrastructure. By harnessing the power of a compact open model running within the browser, the app successfully transforms a straightforward voice recording into a valuable tool.

Written by urgent.news from Dev.to's reporting — not their text. Machine-written — may contain errors; check the original before relying on it.

Read the original at dev.to →

More in Tech

Микросервисы и «зоопарк» баз данных: почему маленьким командам это не всегда нужно

В конце 2000-х главным вопросом проектирования был «SQL или NoSQL». Прошло полтора десятилетия, и оказалось, что победителя нет — но не потому, что все договорились.

  • 55% of services with >10 child resolve spans in GraphQL queries
  • Small teams find zoo of 3-5 databases problematic to manage
  • PostgreSQL often covers 90% of tasks for small teams

Benchmark Android User Journeys with Macrobenchmark

Unit tests can prove that a ViewModel returns the right state, but they cannot measure the latency and frame behavior a user experiences across a sequence of screens and a real application process.

  • Macrobenchmark simulates end-to-end user journeys from app launch to refreshed state.
  • Measure frame timings and milestones to detect performance issues missed by isolated tests.
  • Configure app for profile mode, build dedicated benchmark variant with .benchmark suffix.

Stop Hand-Rolling an Exclusive Accordion. `<details name>` Does It

You're building an FAQ page. Ten questions, each collapsed by default, and — this part's in every design spec — only one answer open at a time. Click a second question, the first one closes.

  • Native details and summary tags provide built-in accordion functionality.
  • name attribute enforces mutual exclusivity across multiple details elements.
  • Grouping related elements with the same name simplifies accordion implementation.

Nuxt 4.5 SSR Streaming: The Route Rules That Disable It

Your team flips experimental.ssrStreaming: true in nuxt.config.ts , loads the homepage, and Time to First Byte drops from 1.8 seconds to 40 milliseconds. Everyone's thrilled.

  • Experimental.ssrStreaming improves TTFB from 1.8s to 40ms
  • Six route rules opt out of streaming: redirect, cache, isr, swr, noScripts, ssr: false
  • These rules prevent streaming due to response header limitations

More from Sunday 4 October →