open-index/open-npm huggingface dataset:
npm package: @otmozorok/preact
Description: ui-kit из web components обернутый в preact
Author: Boris Hasikov
Latest version: 0.49.1

[Docs](https://otmozorok.github.io/ui/)

# Установка

```shell
npm i @otmozorok/preact
```

## Как использовать

```js
import { h, render } from 'preact';
import { Avatar } from '@otmozorok/preact';

render(
	<Avatar>BH</Avatar>,
	document.body
);
```
<p align="center" ><img src="https://media3.giphy.com/media/v1.Y2lkPTc5MGI3NjExbXoyeW9hM290aTU4bmkzMTZzemQ3eHR1aHQ1NjhoMWp4c3pjZG1weCZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9cw/1tC8cRlb55wntrAdNL/giphy.gif" /></p>


<p align="right" >
  <a href="https://www.npmjs.com/package/@otmozorok/preact"><img src="https://img.shields.io/npm/v/@otmozorok/preact.svg?style=flat&label=%40otmozorok%2Fpreact" /></a>
  <a href="https://github.com/otmozorok/ui/blob/main/LICENSE.md"><img src="https://img.shields.io/badge/license-MIT-blue.svg" /></a>
</p>
npm package: @otmozorok/react
Description: ui-kit из web components обернутый в react
Author: Boris Hasikov
Latest version: 0.49.1

[Docs](https://otmozorok.github.io/ui/)

# Установка

```shell
npm i @otmozorok/react
```

## Как использовать

```js
import { createRoot } from 'react-dom/client';
import { Avatar } from '@otmozorok/react';

const root = createRoot(document.querySelector('body'));
root.render(<Avatar>BH</Avatar>);
```
<p align="center" ><img src="https://media3.giphy.com/media/v1.Y2lkPTc5MGI3NjExeHkwcGNtcG93emFycDN5cnN6ODY4enVzOW11bHdsN2Nia2FrMzduYyZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9cw/eNAsjO55tPbgaor7ma/giphy.gif" /></p>

<p align="right" >
  <a href="https://www.npmjs.com/package/@otmozorok/react"><img src="https://img.shields.io/npm/v/@otmozorok/react.svg?style=flat&label=%40otmozorok%2Freact" /></a>
  <a href="https://github.com/otmozorok/ui/blob/main/LICENSE.md"><img src="https://img.shields.io/badge/license-MIT-blue.svg" /></a>
</p>
npm package: @otmozorok/solid
Description: ui-kit из web components обернутый в solid
Author: Boris Hasikov
Latest version: 0.49.1

[Docs](https://otmozorok.github.io/ui/)

# Установка

```shell
npm i @otmozorok/solid
```

## Как использовать

```js
// @todo: дописать пример
```
<p align="center" ><img src="https://media2.giphy.com/media/v1.Y2lkPTc5MGI3NjExOWh6aG02OHFhNmRsejF2OHlibXl1MHV5MzlodXR3Y3V4YTYzcmpvcyZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9cw/ln7z2eWriiQAllfVcn/giphy.gif" /></p>


<p align="right" >
  <a href="https://www.npmjs.com/package/@otmozorok/solid"><img src="https://img.shields.io/npm/v/@otmozorok/solid.svg?style=flat&label=%40otmozorok%2Fsolid" /></a>
  <a href="https://github.com/otmozorok/ui/blob/main/LICENSE.md"><img src="https://img.shields.io/badge/license-MIT-blue.svg" /></a>
</p>
npm package: @otmozorok/svelte
Description: ui-kit из web components обернутый в svelte
Author: Boris Hasikov
Latest version: 0.49.1

[Docs](https://otmozorok.github.io/ui/)

# Установка

```shell
npm i @otmozorok/svelte
```

## Как использовать

```js
// todo: insert code
```
<p align="center" ><img src="https://media0.giphy.com/media/v1.Y2lkPTc5MGI3NjExdTJ2aDBrajV2M3RkcjJ0N3dmcHZhMHcwOWF1Z251a2NoZ25ua2J4NCZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9cw/Y1q8LF4Fc6DoQYC3fi/giphy.gif" /></p>

<p align="right" >
  <a href="https://www.npmjs.com/package/@otmozorok/svelte"><img src="https://img.shields.io/npm/v/@otmozorok/svelte.svg?style=flat&label=%40otmozorok%2Fsvelte" /></a>
  <a href="https://github.com/otmozorok/ui/blob/main/LICENSE.md"><img src="https://img.shields.io/badge/license-MIT-blue.svg" /></a>
</p>
npm package: @otmozorok/vue
Description: ui-kit из web components обернутый в vue
Author: Boris Hasikov
Latest version: 0.49.1

[Docs](https://otmozorok.github.io/ui/)

# Установка

```shell
npm i @otmozorok/vue
```

## Как использовать

```js
// todo: insert code
```
<p align="center" ><img src="https://media2.giphy.com/media/v1.Y2lkPTc5MGI3NjExNTR3OWRjZ3dmc3E2ZDRkaHlvZ3NvMGVlbnBlZXRsaXA1M2NrMjF0eiZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9cw/VgGthkhUvGgOit7Y9i/giphy.gif" /></p>

<p align="right" >
  <a href="https://www.npmjs.com/package/@otmozorok/vue"><img src="https://img.shields.io/npm/v/@otmozorok/vue.svg?style=flat&label=%40otmozorok%2Fvue" /></a>
  <a href="https://github.com/otmozorok/ui/blob/main/LICENSE.md"><img src="https://img.shields.io/badge/license-MIT-blue.svg" /></a>
</p>
npm package: @otmozorok/wc
Description: ui-kit из web components
Author: Boris Hasikov
Latest version: 0.49.1

[Docs](https://otmozorok.github.io/ui/)

# Установка

```shell
npm i @otmozorok/wc
```

## Как использовать

```js
import { AvatarComponent } from '@otmozorok/wc';
import '@otmozorok/wc/style.css';

customElements.define('wc-avatar', AvatarComponent);

document.querySelector('#app').innerHTML = `
    <wc-avatar>BH</wc-avatar>
`;
```
<p align="center" ><img src="https://media3.giphy.com/media/v1.Y2lkPTc5MGI3NjExOWRqajk1NWV5YWoyamJjcDVkOW1reDVmN3RsMzRrMmRhMDZpN242dSZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9cw/XAxylRMCdpbEWUAvr8/giphy.gif" /></p>

<p align="right" >
  <a href="https://www.npmjs.com/package/@otmozorok/wc"><img src="https://img.shields.io/npm/v/@otmozorok/wc.svg?style=flat&label=%40otmozorok%2Fwc" /></a>
  <a href="https://github.com/otmozorok/ui/blob/main/LICENSE.md"><img src="https://img.shields.io/badge/license-MIT-blue.svg" /></a>
</p>
npm package: @otohime-site/parser
Description: The parser will take the `HTMLDocument` or text (parsing with `DOMParser`) and return an object for each function.
Latest version: 24.1.1

### The Otohime Parser

The parser will take the `HTMLDocument` or text (parsing with `DOMParser`) and return an object for each function.

You need polyfill for `DOMParser` if you are not under browser environment.

#### Implemented parser

##### maimai DX Int'l Version

It is believed that it can be also used to parse from Japanese version of maimai DX Splash,
but it is currently untested so use it carefully.

```js
// Providing text from https://maimaidx-eng.com/maimai-mobile/home/...
import { parsePlayer } from "@otohime-site/parser/dx_intl"
const player = parsePlayer(playerText)

// Providing text from https://maimaidx-eng.com/maimai-mobile/record/musicGenre/search/?genre=99&diff=3...
import { parseScores } from "@otohime-site/parser/dx_intl"
const scores = parseScores(scoresText)
```
npm package: @otoji/core
Description: 音字 — realtime speech ⇄ text. Node/Bun bindings for the otoji Rust crate (SenseVoice ASR + Anthropic polish).
Latest version: 0.1.1

# otoji (音字)

> realtime speech ⇄ text — *音を字に*

`otoji` is a Rust workspace that wires up streaming ASR, LLM-polished transcripts, and TTS behind a single `react-ink`-style terminal UI built on [`ratatui`](https://ratatui.rs).

```text
mic / file ──► AudioChunk ──► AsrProvider ──► AsrEvent ──► Polisher ──► TUI
                                                                    └─► transcript.md
```

## Workspace layout

| Crate | Purpose |
|---|---|
| `otoji-core` | Shared types: `AudioChunk`, `AsrEvent`, `Word`, `OtojiError` |
| `otoji-audio` | Audio sources — `cpal` mic capture (with resampling) and PCM file replay |
| `otoji-asr` | `AsrProvider` trait + `iflytek_rtasr` (HMAC-SHA1 signa, WebSocket) |
| `otoji-tts` | `TtsProvider` trait + `iflytek_tts` (HMAC-SHA256 auth, MP3/PCM streaming) |
| `otoji-polish` | `Polisher` trait + `NoopPolisher` and `AnthropicPolisher` (Claude Haiku 4.5 default) |
| `otoji-cli` | `otoji` binary — clap subcommands + ratatui TUI |

See [`./docs/`](./docs/README.md) for the architecture rationale and the comparison of RT ASR providers (iFlytek RTASR / CoLi / SenseVoice / Whisper / Deepgram).

## Build

```bash
cargo build --release
```

## Usage

```bash
# 1) Live mic → RTASR → polished TUI
export IFLYTEK_APP_ID=...
export IFLYTEK_API_KEY=...
export ANTHROPIC_API_KEY=...   # optional, enables LLM polish layer
cargo run -p otoji-cli -- listen

# 2) Replay a 16kHz mono PCM file in real time
cargo run -p otoji-cli -- file 16k_10.pcm

# 3) Synthesize speech via iFlytek TTS
export IFLYTEK_TTS_API_KEY=...
export IFLYTEK_TTS_API_SECRET=...
cargo run -p otoji-cli -- speak "你好，世界" --out hello.mp3
```

## TUI

The transcript view shows:

- `[seg_id]` confirmed segments in **white bold** (polished) or **gray** (raw, awaiting polish)
- The current partial hypothesis as `░ ...` in dark gray italic
- A header with provider state and counts

Press `q` / `Esc` / `Ctrl-C` to quit.

## Roadmap

- [ ] `otoji-asr/coli.rs` — CoLi ASR via ListenHub
- [ ] `otoji-asr/sensevoice.rs` — FunASR self-host bridge
- [ ] `otoji-tts/edge_tts.rs` — Microsoft Edge TTS as a free fallback
- [ ] `otoji-cli record` — write transcripts to `*.md` next to the source audio
- [ ] Bench harness (CER / latency / cost) under `crates/otoji-bench`

## License

MIT
npm package: @otoji/core-darwin-arm64
Description: 音字 — realtime speech ⇄ text. Node/Bun bindings for the otoji Rust crate (SenseVoice ASR + Anthropic polish).
Latest version: 0.1.1

# `@otoji/core-darwin-arm64`

This is the **aarch64-apple-darwin** binary for `@otoji/core`
npm package: @otoji/core-darwin-x64
Description: 音字 — realtime speech ⇄ text. Node/Bun bindings for the otoji Rust crate (SenseVoice ASR + Anthropic polish).
Latest version: 0.1.1

# `@otoji/core-darwin-x64`

This is the **x86_64-apple-darwin** binary for `@otoji/core`
npm package: @otoji/core-linux-x64-gnu
Description: 音字 — realtime speech ⇄ text. Node/Bun bindings for the otoji Rust crate (SenseVoice ASR + Anthropic polish).
Latest version: 0.1.1

# `@otoji/core-linux-x64-gnu`

This is the **x86_64-unknown-linux-gnu** binary for `@otoji/core`
npm package: @otoji/core-win32-x64-msvc
Description: 音字 — realtime speech ⇄ text. Node/Bun bindings for the otoji Rust crate (SenseVoice ASR + Anthropic polish).
Latest version: 0.1.1

# `@otoji/core-win32-x64-msvc`

This is the **x86_64-pc-windows-msvc** binary for `@otoji/core`
npm package: @otomer/choox
Description: Removes all spaces from a string
Latest version: 10.0.0

# choox

[![npm](https://img.shields.io/npm/v/choox.svg)](https://www.npmjs.com/package/choox)
[![npm bundle size (minified)](https://img.shields.io/bundlephobia/min/react.svg)](https://www.npmjs.com/package/choox)


Removes all spaces from a string.

## Install

```
$ npm install choox
```

## Usage

```js
const choox = require("choox");

choox("So much space!");
```
npm package: @otomo.ai/react-native-otomo-widget
Description: React native otomo widget
Author: Otomo
Latest version: 0.1.5

# React Native

Welcome to the React Native Otomo Widget installation guide. This document outlines the steps necessary to integrate the Otomo Widget into your React Native project efficiently.

1. Adding the package

   Depending on your preference of either npm or yarn, open your terminal or console and execute one of the following commands:

- npm

  `npm install @otomo.ai/react-native-otomo-widget`

- yarn

  `yarn add @otomo.ai/react-native-otomo-widget`

2. Adding dependencies

   To your `package.json` file, add the following dependencies used within the Otomo widget

      ```
      dependencies: {
         ...
         "mixpanel-react-native": "^2.4.0",
         "react-native-svg": "^14.1.0",
      }
   ```

3. Installing dependencies

- For Android, no additional configuration is needed.

- For iOS, under your application's iOS directory, run:

  `pod install`


4. Integrating the widget

   With the package installed, the final step involves importing and integrating the Otomo Widget into your application. Import the **`OtomoWidget`** into the components where you wish to utilize it like this:

    ```jsx

    import { OtomoWidget } from 'react-native-otomo-widget'; // Mandatory import

    export default function App() {
      return (
        <View style={styles.container}>
          <SafeAreaView>
            {/* Widget Integration */}
            <OtomoWidget apiKey={'YOUR_API_KEY'} userId={'OPTIONAL_END_USER_ID'} title={'OPTIONAL_TITLE'}/>
          </SafeAreaView>
        </View>
      );
    }
    ```

- **Understanding Optional Parameters:**
  - **`apiKey`**: **Required**. Reach out to [geoff@otomo.ai](https://www.notion.so/React-ced2036582334c2a9a87003d1a56dcbe?pvs=21) if you need one generated.

    **`userId`**: **Optional, but recommended**. Include this parameter if you wish to enable personalization features for your end users. It can be omitted if personalization is not required.

    **`title`**: **Optional**. This parameter allows you to set a custom title for the widget. It can be excluded if you prefer to use the default widget title.

    **Note:** To omit optional parameters, simply remove them from the **`<OtomoWidget />`** component's properties. For example, if you do not require personalization, your widget integration might look like this:

      ```jsx
      <OtomoWidget apiKey={'YOUR_API_KEY'} title={'OPTIONAL_TITLE'}/>
      ```


**Final Notes**

Congratulations! You have successfully integrated the React Native Otomo Widget into your project. This widget is designed to enhance your application's functionality by providing a seamless integration of our personal wellness recommendation engine. Should you encounter any issues or require further assistance, please contact [geoff@otomo.ai](https://www.notion.so/React-ced2036582334c2a9a87003d1a56dcbe?pvs=21).
npm package: @otomo.ai/react-native-otomo-widget-expo
Description: React native otomo widget for Expo
Author: Otomo
Latest version: 0.1.5

# React Native

Welcome to the React Native Otomo Widget installation guide. This document outlines the steps necessary to integrate the Otomo Widget into your React Native project efficiently.

1. Adding the package

   Depending on your preference of either npm or yarn, open your terminal or console and execute one of the following commands:

  - npm

    `npm install @otomo.ai/react-native-otomo-widget-expo`

  - yarn

    `yarn add @otomo.ai/react-native-otomo-widget-expo`

2. Adding dependencies

    To your `package.json` file, add the following dependencies used within the Otomo widget

      ```
      dependencies: {
         ...
         "mixpanel-react-native": "^2.4.0",
         "react-native-svg": "^14.1.0",
      }
   ```

3. Integrating the widget

   With the package installed, the final step involves importing and integrating the Otomo Widget into your application. Import the **`OtomoWidget`** into the components where you wish to utilize it like this:

    ```jsx

    import { OtomoWidget } from 'react-native-otomo-widget'; // Mandatory import

    export default function App() {
      return (
        <View style={styles.container}>
          <SafeAreaView>
            {/* Widget Integration */}
            <OtomoWidget apiKey={'YOUR_API_KEY'} userId={'OPTIONAL_END_USER_ID'} title={'OPTIONAL_TITLE'}/>
          </SafeAreaView>
        </View>
      );
    }
    ```

  - **Understanding Optional Parameters:**
    - **`apiKey`**: **Required**. Reach out to [geoff@otomo.ai](https://www.notion.so/React-ced2036582334c2a9a87003d1a56dcbe?pvs=21) if you need one generated.

      **`userId`**: **Optional, but recommended**. Include this parameter if you wish to enable personalization features for your end users. It can be omitted if personalization is not required.

      **`title`**: **Optional**. This parameter allows you to set a custom title for the widget. It can be excluded if you prefer to use the default widget title.

      **Note:** To omit optional parameters, simply remove them from the **`<OtomoWidget />`** component's properties. For example, if you do not require personalization, your widget integration might look like this:

        ```jsx
        <OtomoWidget apiKey={'YOUR_API_KEY'} title={'OPTIONAL_TITLE'}/>
        ```


**Final Notes**

Congratulations! You have successfully integrated the React Native Otomo Widget into your project. This widget is designed to enhance your application's functionality by providing a seamless integration of our personal wellness recommendation engine. Should you encounter any issues or require further assistance, please contact [geoff@otomo.ai](https://www.notion.so/React-ced2036582334c2a9a87003d1a56dcbe?pvs=21).