Your first transcript
In this tutorial, you run alldayrec with Docker on your own computer, record a few sentences in the browser, and then see their transcript in the web UI. It takes about 15 minutes.
Version
docker-compose.yml pulls the image ghcr.io/suyiiyii/alldayrec:latest, which matches the newest version tag (v0.1.0 when this page was written). The page addresses used below (/record, /conversations) exist both in v0.1.0 and on main; the two look different.
What you need
- A computer with Docker (amd64 or arm64) that can reach GitHub.
- A microphone on the computer, and Chrome or Edge as the browser: the web recording page records in WebM/Opus, and the browser must support that format.
- An Alibaba Cloud Bailian (DashScope) API key for the Beijing region. This one key serves both the ASR and the LLM.
1. Get the code
git clone https://github.com/suyiiyii/alldayrec
cd alldayrec2. Fill in the key
Copy the configuration template:
cp .env.example .envOpen .env in an editor, find the two lines below, and put your Bailian key after the equals sign. Leave the other lines as they are:
DASHSCOPE_API_KEY=<your Bailian key>
LLM_API_KEY=<the same Bailian key>3. Generate your token
The server knows who you are by the token in data/tenants.json. Generate one:
mkdir -p data && echo '[{"id": "main", "token": "'$(openssl rand -hex 16)'", "data": "/data/main", "recordings": "/data/main/recordings"}]' > data/tenants.json && chmod 600 data/tenants.json
cat data/tenants.jsonYou see one line of JSON, with 32 hexadecimal characters after "token". Note them down: you need the token later.
4. Start the server
docker compose up -d
docker compose logs -fAt the first start, the server downloads 4 model files (about 70 MB), checks them, and then starts listening. The last lines of the log look like this:
alldayrec-1 | ... infer INFO models: downloading fireredvad-stream-vad.onnx from https://raw.githubusercontent.com/FireRedTeam/FireRedVAD/...
alldayrec-1 | ... infer INFO models: downloading fireredvad-cmvn.ark from https://raw.githubusercontent.com/FireRedTeam/FireRedVAD/...
alldayrec-1 | ... infer INFO models: downloading redimnet2-b6.onnx from https://github.com/suyiiyii/alldayrec/releases/download/models-v1/redimnet2-b6.onnx
alldayrec-1 | ... live INFO models ok: 3 files in /data/models
alldayrec-1 | ... live INFO tenants: main
alldayrec-1 | ... live INFO ready on 0.0.0.0:8770When you see ready on 0.0.0.0:8770, press Ctrl+C to stop following the log. The server keeps running in the background.
5. Open the web UI
Open the address below in your browser, with <token> replaced by the token you noted in step 3:
http://127.0.0.1:8770/?token=<token>Once the page opens, the token disappears from the address bar: the server now remembers you with a cookie. From now on, open http://127.0.0.1:8770/ directly in this browser.
6. Record a few sentences
- Open
http://127.0.0.1:8770/record. This is the web recording page. - Leave the source at 本机麦克风 (This device's microphone) and click 开始录音 (Start recording). When the browser asks whether to allow the microphone, allow it.
- Talk normally for a minute or two, for example about what you plan to do today. The top of the page shows 「录音中 · 已传 N 块 · 待传 0」 (Recording · N pieces uploaded · 0 waiting), with one more piece every 20 seconds.
- Click 停止 (Stop).
7. See the transcript
The lower half of the page shows live captions. The server hands the audio to the ASR engine, and the transcribed sentences appear here, each with its speaker in front.
Then open http://127.0.0.1:8770/conversations. What you just recorded is already a conversation; open it to see its transcript.
What you've done
You ran alldayrec on your own computer, recorded a few sentences, and saw their transcript with speakers in the web UI. The recording and the transcript are both in the data/ directory.
Next, you can:
- Reach the server from a phone, then install and connect the phone app, to record all day with your phone.
- Read Architecture and data flow to learn what happens after the audio comes in.
- When you no longer need it, run
docker compose downin thealldayrecdirectory to stop the server; thedata/directory stays.