<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Software on Evan King</title>
    <link>https://evanking.io/categories/software/</link>
    <description>Recent content in Software on Evan King</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <lastBuildDate>Tue, 11 Feb 2025 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://evanking.io/categories/software/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Mishearings: Turning ASR models into poets</title>
      <link>https://evanking.io/posts/mishearings/</link>
      <pubDate>Tue, 11 Feb 2025 00:00:00 +0000</pubDate>
      <guid>https://evanking.io/posts/mishearings/</guid>
      <description>&lt;p&gt;&lt;strong&gt;TL;DR:&lt;/strong&gt; I built a tool for assembling &lt;a href=&#34;https://en.wikipedia.org/wiki/Dada&#34;&gt;Dadaist&lt;/a&gt; poems from ASR transcriptions of misheard speech, and you can &lt;a href=&#34;https://mishearings.evanking.io&#34;&gt;play with it in your web browser&lt;/a&gt;. I built it with my &lt;a href=&#34;https://github.com/moonshine-ai/moonshine-js&#34;&gt;&lt;code&gt;MoonshineJS&lt;/code&gt;&lt;/a&gt; library, &lt;code&gt;Tone.js&lt;/code&gt;, and &lt;code&gt;p5js&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h3 id=&#34;introduction&#34;&gt;Introduction&lt;/h3&gt;&#xA;&lt;p&gt;My goal lately has been to build &lt;a href=&#34;https://github.com/moonshine-ai/moonshine-js&#34;&gt;a JS library for simple on-device speech recognition&lt;/a&gt; in web applications. While there are many practical uses for this, I felt the urge recently to explore its creative potential. Speech recognition models are a bit more utilitarian than purely generative models – you put speech in and get text out – so I had my work cut out for me.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Moonshine: Industry-leading edge ASR</title>
      <link>https://evanking.io/posts/moonshine/</link>
      <pubDate>Mon, 21 Oct 2024 00:00:00 +0000</pubDate>
      <guid>https://evanking.io/posts/moonshine/</guid>
      <description>&lt;p&gt;Moonshine outperforms speech-to-text models from OpenAI, Google, NVIDIA, and Meta on the &lt;a href=&#34;https://huggingface.co/spaces/hf-audio/open_asr_leaderboard&#34;&gt;OpenASR Leaderboard&lt;/a&gt; while running 5x faster&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt; on edge devices.&lt;/p&gt;&#xA;&lt;p&gt;I built the data collection and preprocessing pipelines that we used to train Moonshine, delivering over 200K hours of labeled data. We needed a LOT of good data, and we had to move fast. The pipeline I constructed was massively distributed, allowing us to intake hundreds of terabytes of raw audio data, label it, and clean it within the span of several weeks.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Teaching things to think</title>
      <link>https://evanking.io/posts/thoughtful-things/</link>
      <pubDate>Mon, 06 May 2024 00:00:00 +0000</pubDate>
      <guid>https://evanking.io/posts/thoughtful-things/</guid>
      <description>&lt;p&gt;&lt;img src=&#34;https://evanking.io/images/teaching.jpg&#34; alt=&#34;screenshot of paper&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;What if smart devices could reason about their state, like a thermostat that explains its schedule, or a light bulb that chooses a color to suit a mood?&lt;/p&gt;&#xA;&lt;p&gt;That&amp;rsquo;s the subject of my IEEE PerCom &amp;lsquo;25 paper, &amp;ldquo;Teaching Things To Think: Bootstrapping Local Reasoning for Smart(er) Devices&amp;rdquo;. We proposed a method for synthesizing training data to distill small language models for the task, leveraging a combination of formal methods and generative models. We ultimately trained and evaluated models for two &amp;ldquo;thoughtful things&amp;rdquo; – a lamp and a thermostat – then evaluated their performance at explaining and mutating their state in response to unconstrained user commands.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Sasha: Introducing LLMs for smart spaces</title>
      <link>https://evanking.io/posts/sasha/</link>
      <pubDate>Wed, 06 Mar 2024 00:00:00 +0000</pubDate>
      <guid>https://evanking.io/posts/sasha/</guid>
      <description>&lt;p&gt;Building on my &lt;a href=&#34;http://localhost:1313/posts/homegpt/&#34;&gt;weekend project&lt;/a&gt; to control some smart lights with ChatGPT, this wide-ranging paper fully introduces LLM-based reasoning to multi-device smart home environments. We introduce methods and benchmarks for measuring model performance at reasoning in smart homes, propose methods for engineering immediate and scheduled responses to user goals, propose a multi-step reasoning system for improving system performance, and conduct the first user study of a real LLM-controlled smart home.&lt;/p&gt;&#xA;&lt;p&gt;Something that often gets lost in a research paper is the truly fun and challenging experiences you can have with the work. Between touring a trailer on the UT Austin JJ Pickle Campus to see if I could turn it into a smart home (I could not – it was outfitted with extremely sensitive equipment for conducting ventilation studies) to eventually hauling pegboard and furniture from my illegally-parked RAV4 up to an unused lab on the 7th floor of the EER building, this project was truly the highlight of my PhD.&lt;/p&gt;</description>
    </item>
    <item>
      <title>CANDor: Energy efficient neighbor discovery</title>
      <link>https://evanking.io/posts/candor/</link>
      <pubDate>Mon, 25 Sep 2023 00:00:00 +0000</pubDate>
      <guid>https://evanking.io/posts/candor/</guid>
      <description>&lt;p&gt;Bluetooth Low Energy (BLE) can be useful for forming ad-hoc networks between smart devices, and for exchanging information in sensor networks. It&amp;rsquo;s difficult, however, to choose the right settings for the BLE protocols that devices use to discover one another. The optimal protocol effectively balances discovery latency and packet reception rates with the energy consumed by sending and scanning for neighboring packets.&lt;/p&gt;&#xA;&lt;p&gt;In this work, I introduce a novel neighbor discovery protocol to improve the packet reception rate and energy consumption of BLE neighbor discovery. Unlike prior work, which uses extra sensors (e.g., GPS) to recalibrate the protocol performance, this work uses the performance of neighbor discovery itself as a signal to determine when to recalibrate the protocol&amp;rsquo;s settings.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Using LLMs to control a smart home</title>
      <link>https://evanking.io/posts/homegpt/</link>
      <pubDate>Sat, 18 Mar 2023 00:00:00 +0000</pubDate>
      <guid>https://evanking.io/posts/homegpt/</guid>
      <description>&lt;h3 id=&#34;2024-update&#34;&gt;2024 UPDATE&lt;/h3&gt;&#xA;&lt;p&gt;I originally authored this post in early 2023 &amp;mdash; little did I know it would be the spark of a broader research project, ultimately becoming a significant part of my PhD dissertation. If you are the researchy type, you can read the short &lt;a href=&#34;https://arxiv.org/abs/2303.14143&#34;&gt;2023 preprint paper&lt;/a&gt; and/or the in-depth &lt;a href=&#34;https://dl.acm.org/doi/10.1145/3643505&#34;&gt;2024 ACM IMWUT paper&lt;/a&gt; I published and presented at UbiComp 2024 about this topic. We also made a &lt;a href=&#34;https://www.youtube.com/watch?v=ZX_sc_EloKU&#34;&gt;demo video&lt;/a&gt; that shows an LLM-based smart home in action. Otherwise, enjoy the original post!&lt;/p&gt;</description>
    </item>
    <item>
      <title>From sea levels to music with CSV to MIDI</title>
      <link>https://evanking.io/posts/csv-to-midi/</link>
      <pubDate>Wed, 14 Feb 2018 00:00:00 +0000</pubDate>
      <guid>https://evanking.io/posts/csv-to-midi/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://en.wikipedia.org/wiki/Data_sonification&#34;&gt;Data sonification&lt;/a&gt; describes the process by which data is translated into sound. There&amp;rsquo;s a variety of reasons this might be worthwhile, from purely artistic or aesthetic purposes to its potential as an &lt;a href=&#34;https://dl.acm.org/doi/abs/10.1145/1352782.1352786&#34;&gt;assistive technology&lt;/a&gt; for the visually impaired. I like to think of it as synesthesia: it allows us to experience information in a different modality than it was originally expressed.&lt;/p&gt;&#xA;&lt;p&gt;There&amp;rsquo;s no one-size-fits-all way to design a data sonification algorithm&amp;mdash;it&amp;rsquo;s highly dependent on the structure of the data you&amp;rsquo;re working with and the type of sound you&amp;rsquo;re trying to create. Since comma-separated values (CSV) are a common way of storing numerical datasets and MIDI is the standard for representing melodic information, it struck me that a tool that could convert between the two formats would come in handy as a generative composition tool. So back in 2018, I made one.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
