Skip to content

Not able to publish mulaw 8000 audio #533

@rohitkhatri

Description

@rohitkhatri

Select which package(s) are affected

@livekit/rtc-node

Describe the bug

I have been trying to publish the mulaw 8000 audio, but It's not working and there are no logs on the agent, below is the sample code to test.

import "dotenv/config";
import express from "express";
import {
  Room,
  dispose,
  AudioSource,
  LocalAudioTrack,
  TrackPublishOptions,
  TrackSource,
  AudioFrame,
} from "@livekit/rtc-node";
import { AccessToken } from "livekit-server-sdk";
import { readFile } from "fs/promises";
import { readFileSync } from "fs";
import { join } from "path";

async function run() {
  const room = new Room();
  await room.connect(
    process.env.LIVEKIT_URL as string,
    await generateLivekitToken().toJwt(),
    { autoSubscribe: true, dynacast: true }
  );

  process.on("SIGINT", async () => {
    console.log("Called SIGINT event");
    await room.disconnect();
    await dispose();
  });

  publishAudioEvents(room);
}

async function publishAudioEvents(room: Room) {
  try {
    // Base64 mulaw 8000 audio chunks
    const audioChunks = [
      {
        type: "audio.input",
        data: {
          audio:
            "/v5+fn5+fv7+/vz+/v5+/n5+fn5+fH5+fv78/H5+/v7+fn5+/vz8/P58fHx+/v5+fn5+fv7+/n5+/v5+/n5+/v7+/n5+fn5+fvz+/v7+fnp8fvz8/v5+/n5+fn7+/v7+/v5+fv5+fn5+fn5+/vx+fnx8fv7+fnx+/vz8/n5+fn5+/n5+fv7+/v5+fn78/P7+/v5+fv7+fn7+/H5+fnx+fg==",
        },
      },
      {
        type: "audio.input",
        data: {
          audio:
            "/v78/n7+/n7+/v5+fv7+fnx6fH5+/vz8/v5+fn5+/Pz8fnx+fv76/v7+fH5+/v5+/n5+fn5+/v7+/n7+fn5+fH5+fv7+/vz+/P58fHx+/vz6/n5+fHx+/v7+/v7+fv7+/v7+fv5+/v58fn5+fn5+fv7+/n58fH7+/v7+/v7+/n5+/n7+fnx+/v7+/v5+/v7+/n7+fn7+/P7+/n5+/v5+fg==",
        },
      },
      {
        type: "audio.input",
        data: {
          audio:
            "fn5+fn5+fvz8fn5+fP78fn7+/v7+fv7+fv7+fn7+/n58fH7+/v7+/Pz+fn5+fv76/H5+enr+/vz+fn5+/v5+fv5+fv7+/P5+/n7+fv5+fn5+fH7+/Pz+fn5+fv78/v5+fv5+fn5+fn5+fn5+/n7+/H58fv7+/v7+/vx+fv5+fn5+fnx+fn76/H5+fn7+/v5+/vz8fn5+fn5+fv7+/n58fg==",
        },
      },
      {
        type: "audio.input",
        data: {
          audio:
            "fv7+/v5+/n7+/v7+/v7+/v7+fn5+/v7+fn5+fn7+/n5+/vz8/H5+fn1//31+/319fn5+fn19fv/+f359fX1+fX9+/v9+fn1+//7//v7+fn5/fv7/f/79fn7/f35//f/+fn/+//5+fX/+/358fv9+fv3+/v7+/v7/f39+/n5/fXx9fH59fX3///5+f/5/fn1//v7+f/3+/v7+/n7+/n59fg==",
        },
      },
      {
        type: "audio.input",
        data: {
          audio:
            "fv5/f39+fv9+f319fn//fX5+/319//7+fn1//n9/f37+fv5+fn5+fv5/f35+fv7/fn5+fnx/fv5+////f/5+fX1+fX59fn9+fn7+fv/+/37//v3//v3+/f3//f9/fv9//v5+fn7+/v7//n5+f319fX9//31/fn19fXx8fn99f37+fX59fX9+fn1+f37/fn59fX7//n99fX59fv/+//79/w==",
        },
      },
      {
        type: "audio.input",
        data: {
          audio:
            "/v7/f37+fv3+/f7//v7//v7+/v7+/n5+f/5+fv//fn7/fn9/fX1+/v/9fn7/fv5+/n5+fn59fH9//n1+fX5+/n19fv5+fn7+/n7/f/7+fv5+/v3+fv5//35+fn5//39//v3+/f39/v/+//7+/v5+fv7//v5+/n5/fv9+fv5+ff/+//9+/37//v3+/f79/v7+/f7//f9+fv/+fv79/f5/fg==",
        },
      },
      {
        type: "audio.input",
        data: {
          audio:
            "/v5+fn/+fn5+fn19fX5/fn7//n59/n5+//5/f359fX5+f31/fn59fX58fX1+fn1+f31+fnx+f37/fn5+fv/+/n5+f39+fn1+/3//f37+f37+f/5+/n9+fXx+fn19fv5+/n5+fX5/f31+/v79/v7//f39/f38/fz8/P38/v3+/P38/v3+/v79/f7//39/fv5+fn59f/7+f35+/n5//35+fg==",
        },
      },
      {
        type: "audio.input",
        data: {
          audio:
            "/v5+f37+f/5+/n7//n9/fn3//v5+fn9+/v79fv7+/n/+/v7+///+fv79/v79/f9+/v39/n79fn59fXx+//7//v7+/35/fn1+fn9+/////v/9f/5//f3+/v9+/n79/v79/X7+f35+/35/f39+fv5+fX9+f359ff99fX5+fX59fX18fH5+fn3+fn5+fn5+/3//fv7+/f5+/f1+fn9+fv59fg==",
        },
      },
      {
        type: "audio.input",
        data: {
          audio:
            "ff9//n7+/3///X/+/n/+/v7+/n5+fX59fX9/fX5+fX5/f35+/v7/fn59/n5/fn1+/3/+/v9+fv5+fX59fX7/fn19fX9+fn/+/399fv7//n7+fn7+/v5//n7+/f7+/v39/v79/f3+fn9+/v5/fv5+/n59fv5+fX19fX59fX1+fn19fHx+fn5+fX19fn99fn5+fn19//9/fn99fXx9fX19fw==",
        },
      },
      {
        type: "audio.input",
        data: {
          audio:
            "/n3+fn1+fn18fH1+fX58fH5/fn5+f35+f35+fn19fn3//v79//79/f38/v//fn59/319fX7/f/9+fv9/ff9+f/99/n7+/n5+/v5+fv7+/X5//39+fn7+f35+fX5+fn1+fv7+/X9+/v79fn5+fXx+fH1/f39/fn99/n5/fX5+fX5+/n1+/n5/fv99/n5//v5/f/5//v5//v7+fn7+f37//w==",
        },
      },
      {
        type: "audio.input",
        data: {
          audio:
            "fv//fn3+fn59fn5+fX5+fX5/f/5//v/9/f3+/f79//5/fn/+fn9+f/7+/n5//v7+/n7+/n5+/n7/fn7/f35+fv7+fn/+fn59fn5+fX7+fX7+fn18fXx9fX1+fX99fX19fH5+fH18fn7//n9/fv59fn/+/n5//v7+/n9//3/+/v1///79fn59fX19fX5+fX5+/31+fX9+fXx+f359fX5+fw==",
        },
      },
      {
        type: "audio.input",
        data: {
          audio:
            "fn1/fv7+f37+/n9+fv7+/v5+fn5+fX1//v/+/f38/v5+fv99fX5+fX1+f/5+/n59fH5+fn1/fX/+////fX9+fn1+fX1+fX7+fn5+ff59//99fv5/f35+fX5/fX5+fn5+fX7+//7/fn5+/n5+fX1+//9/fX5+ff5//v9+/v9+fn5+/v5+/v79//7//f1/fn7+/v5//f1/fn5+fv5+//9+/w==",
        },
      },
      {
        type: "audio.input",
        data: {
          audio:
            "/n19f35+fX7/fv/+//5+/n5+fv99/n3+f/7/fn7+f/7+fv9/fn59fH5+fn59fv9+/v9+/33+/v5/fn3+/n/+/f79/v7+/v7+fn9+/v/9/n///n7+fn9+/n9+fn59fX5/fn5+/v5+/v1//////37+fn/+/v79/v5+/f1//n7+fv5+f/9+fv7+/v3+f37+f/7//f/+f/79/n/+/35+/v/9/Q==",
        },
      },
      {
        type: "audio.input",
        data: {
          audio:
            "/f79/f38/v3/fv5+/v/9fn9+/v//f359fn59fX59f399f/5+f37+f35+fv5+fv5+fn5//v/9f/9+f/7+/v3+/v39fn5+ff5////+f/7+/v7+fn5/f/79/X//f35+fn3+/v79/v7+fv7/fv7+/f79/f39/f9+f35/fX3///9+fX59/37+f39/f/5/fv99fX9+fn1+f39+f/5+/v79/v7//g==",
        },
      },
      {
        type: "audio.input",
        data: {
          audio:
            "fv5+/f9+fv7+/X5//v7+/3/+/X/9f35+fn1+fv7+/v3//f7+f/5//v7+/fz9/v3+/fz8/P3+/P78//38/v//fn5+/v79/X/9f//+f/7+/v7+/v///X7//3/+f37//n7+fn7+/359fn19fH7/f35+f39+fn19fXx9fH59/35/fn1+fX5+/n59fX7+f/5+fX3//v5+f3///n///v5+f/7+fg==",
        },
      },
      {
        type: "audio.input",
        data: {
          audio:
            "/v7+/v79/f5//f39/f7+fv7//n59f359//9+/////n9/fn59fX9/fv/+/n7+f/5//v39/P3+/f3///1//n7//359f/59/v///n7//v7//v/9/v5+fX19fX19f/9+fv/+fn1+fn19f/9+/n5+/v3///9+fX7+fn59f//+/v7+/f3/fv5//n5//v/9f/9/fn1+fX1+fX59fX1+fn5+f/5+fg==",
        },
      },
      {
        type: "audio.input",
        data: {
          audio:
            "fX3/ff/+fn/+/v9+fn7/fn5+/v5+/v3+/f/+fn5/fv5/fX5+fn59fn5+fn1/fn9+fn19fXx8fH5+fn//ff9+/v5+/v/9/v7+/39+//5+fv9+fn1+/n/+/v/+f/5+/v5+fn7//n9+fn59fX19fH5+fv7+/v39/Pz9/P38/P7+/f3+/f38/f39/f39/v7/fv3+f39+/n59f35+/39+/v7+/Q==",
        },
      },
      {
        type: "audio.input",
        data: {
          audio:
            "/f39/P79f/1/f3/+fn9+/31+fn5+fn7+/v7//n5+f31+/n59fX19fH99fv9+fX19fH5//39//35/fn3+f/7//v7/fn59fX5+/v7+/v7//n9//n/+f/5+/v3+/v79f/5+/v39/f7+/v39/f79/f7+f359/n///v79/v38/n/+/n/+f/5/f359/359/n59fXx9fHx+fX19fXx8fXx9fH7//g==",
        },
      },
      {
        type: "audio.input",
        data: {
          audio:
            "/n5+fn59/v5+fn1/fv/+f/79/n7//v9////+/39+/n5+/n5+fX5///9+ff/+/n5+fn3+fn3//35/fn5+/319fXx9fn5/fn19fHx9fn19fn19fnx9fH99fX1+/v5+fn59/v7+/v1//n/9/v5/fv5+/v9+/319f/7+/v7+//5+/v7//n5+fn/+/n59fX59f31/fX1+ff9+fv7+//3/f/79fg==",
        },
      },
      {
        type: "audio.input",
        data: {
          audio:
            "fX19fv99fn//fX5+/n1+/v/+//7+f/1//X7/fv///n5//v9+fX5+fn7/f3///3//f/5+fn59fn5+/v5+fX5+fX5+fn99fn5+/n7+/n///v/+/n5/fv7+fv79/f5/fn7/f/9+/v5/fn///n7+/v39/f39/f7+/f7+/f3+f//+/n/+/f/9/f1//v79/X9+ff5/fn/+/v39/v5+/n5+fXx9fQ==",
        },
      },
      {
        type: "audio.input",
        data: {
          audio:
            "fX18fH5+fX//fX9+f/7+/n7+/39+/v7/fv5//n5//v/+fv79fv79/f39/f79/35+fX18fX18fXx8fX5+/319fX19fH7+//7+fv7+/v5/fn//fn5/f3/+fn5+fv/+/v1+fv/+fn5+f35+fn7+//9//39/fn5+/n99ff99fn5/fX/+fv7//X5+f33+/v5+/n9+/n7+/n5+/v9+f/7+/v7//w==",
        },
      },
      {
        type: "audio.input",
        data: {
          audio:
            "/39+f35+fn/+/3/9//7+/f5+//7//v7//n5/fn/+/n/+/37+/v7+//39f/5//n7/fX59fv/+/n5+fn19fX5+fv/+//7/fn9+/n5+fn7+/v9+fv5+fX7+fn5/fn99fX1+f31+fv7//v7///99f3/+fv7//v5+f359fn3/fX9+fn18fX5/f/7/fn5+fv7+/v5+fv5+/v/9fn7/fX9+fn1+fg==",
        },
      },
      {
        type: "audio.input",
        data: {
          audio:
            "fn5+fX5+/35+/35//v7//X9+fn99fn5+/n5+ff7+/39+fn7+fn5/fn1+fX9+fv5/fv7+/v39/v3+f//+/v1+/v7+/v79/f7+/v5//37+f35//n7+fv5+fn7+/n5+fv7+/v7+fv7+/v//f35+//7//v5+f/7+/f5/f39+/n5+/n1+f//+/v3+fv39/f38/v38/v7///7+fv7+/n/9/f5+fg==",
        },
      },
      {
        type: "audio.input",
        data: {
          audio:
            "fX//fX19fX7/fv9+fX9+fn5+fv5+fn19fX59fn//fv/+f37+fn/+fv59fX3/fn/+/n59f35/fn5+//7+/f39/f38/v39/f79/f5/fn5+/v5+/n9+fn//fn5/fn59fXx8fHx9fn5+fX1+fX5+fn58f359f/5+/n5+fX1+fX19//99fX5+fXx9fnx+fv9///7+/v7//v3+/fz8/f3+fn7//w==",
        },
      },
      {
        type: "audio.input",
        data: {
          audio:
            "fv5//v7//v3//n5+/v79//39/v3+/v79/f39/v79/n7+/v7+/n9+fn5/fv5+fX59fX5/fv5/fn5+fn1+/319f39+fn5+fv5+fn7+fn19/37+/n5+fn7+ff5+/n//fv9//v7+/f9+fn5+/v1/f/7+f/1+fn5+fX9+fv5+/n7/fv//f/5//v39/v79/f7+//79/v3+fv79/35+fn5//359fQ==",
        },
      },
      {
        type: "audio.input",
        data: {
          audio:
            "//5+/v99fXx9fn7/fv7+//7//v7+/37+/f39/n/9/v9+fv7+fn59fn59fn99fv/+///9/v7+/n/9fv39/n7+f/79/f7+/f79/n9+fv5+/v7+fv9/f37+//79/35+fX3/f359fn99fn59fXx/fn1+fn19fX9/fv7+//7+fv79/n/9/P3+f/3+/n9+fH7+/vz8/v7+fX1+/n7/fn5+fv7/fg==",
        },
      },
      {
        type: "audio.input",
        data: {
          audio:
            "/v9+fn5/fX9+fn18/31+/359fX5+/v7+/v7////+/n9+//5+fv7+//5///9//v7+/n9/fn7//v3+/v9+fn58fX5+fv/+fv9+//99fX9+fv79/v//fn1+fH17fX5+/fz9/v99fX5+fX19fXx7fXx+fn5+f31+fX59fn58fv79//7+fH59fv77+/z9f359fn99fnx9fX1//v39/X9+fXx+/g==",
        },
      },
      {
        type: "audio.input",
        data: {
          audio:
            "/f7/fH9//fz6/H98fXx7fHx9e376+fb9enhydHv89fHw9/t9eXt8eS0qIiY2262hoKq5Wjg8SWPrf0U/UXzBs7S+10oyMTtCRmnMz8i+/VlPNjtOybOrp664zUNFPjMtKiUnMVm5qaWqr8ZUSlJrdf5MQURM3722usNmODI0Njtbvbi4vFY+My073rSqoqaxu1o+OzkvKyklKTNZuqikpw==",
        },
      },
      {
        type: "audio.input",
        data: {
          audio:
            "rLvQ/WhbVko7O0BK3767vchcPTg6NT7Sw7qz1j81LS9Luqyinqm01EA3ODUsLCcjJzBfsaSgpaeyv8nbbFFAMzAyNUvaxb/A2kpKST1Fx7q7u1E5Mi00Ybauop+ttt1EODgxKyomJSw6b7CnpaeqsLe9xuVSPDIvLjVJd87Kz2pVVz48xq+3sL4+LycmM9u2pZ6krL5cPjk4My8qJyYrNQ==",
        },
      },
      {
        type: "audio.input",
        data: {
          audio:
            "W7etpqSpq7O8x99TPjUuLS86SfvR2eTfUELDrbGrtj8vJiEpQ8mrnqCnr8lSQD83MS0nJScsOd+2rKelp6iss8HbRDMuKisvOERv3+7M3Xi9tLGts140KCImNdmxo6CmrLvWWUg7MS0oJCYsNVa9sayop6iprLbHWDcuKyouNT9NXWLbz9e/sq2stFg1KSImM3Wzop+lq7vPVkU5LysmIg==",
        },
      },
      {
        type: "audio.input",
        data: {
          audio:
            "Ji46abuwrKimqKist9NFMCsqKy89TlhbdfVferWorKu9OSshICxJu6aeoamxy3dWSTUrJR8fJS1Lu6uopKOnp6u0y1AzKCYoLDtV9eXb12Veu6uoo7c3JhwbJEazn5ufpbDL1eNbOy0fGhkeJ0+vo56foaWnrLbRPisgHyMtSM69wMfMWU62qqylzCgfGRspxqWblp2puut4608tIRgTFg==",
        },
      },
      {
        type: "audio.input",
        data: {
          audio:
            "HzqwnJqcnqSqq6y/RikdGx4qRLitsb7N7kvbr6mquSsbFxYjzp6XlZamtr7V3VAsGREODx35oZeTmKCorK+zxjIeGhgdOLqqoqrDUFlAQKifu90lExQYK7aYkZaZo6+2uNQzHw8KDBMrp5SSlJmmrauv2jceFRgjN7Ohpa26Uj71506xr0k+JxgZITyxmpOXmJ2sutA3HBUOCxIjxp6Skw==",
        },
      },
      {
        type: "audio.input",
        data: {
          audio:
            "mZ6rtb/tMB8dHilnsqmorsJyS0dHODDptMLCPRwcHy+tmJOYmqi7t201HhIMDRkzqZeUmZ6os7fSMiYfICxktqypsL3G7z4wNSYgv56pqkITGCBFoJeZq5+fqKO/IRANDRMs1rCemJmYm7k4LSQkMDcy+bWxp6OzfTwoJi8pKqictr4uFR1CvbCdnauYl6nMMBwREhMTJciol5CYo6zfNA==",
        },
      },
      {
        type: "audio.input",
        data: {
          audio:
            "LykhKURquqisr667Xz0sHyUkK52VvFAoGCtisrqvnqGUmLU8MCERFRMTKbmemJabqKvDMiUkJy/aycSsqKuuwjcnIis0K1Gfn8ZBICE9WcHTppqXl6RfLTohDw8RHNmjn52Zm6CxRiklLDM0NnWuq6iszuluLyYqJSyhmU8sKSNQ1F/CvZ6Rnam3RfRDGQ4OHDHOuLefmZqg0UvLWjYmIw==",
        },
      },
      {
        type: "audio.input",
        data: {
          audio:
            "Ns24u7y3uMFcMyw0MEunzCc7L066MuGvo5Wkvq6+z9gmFRUbKTY86q2goKq9va6x4EJDUlZDOz9NXFdQWurlWF/azM7rZv7gaF5s687nbnxk9+Pe/3Xf5t3X3+VpW19OSVv8ZlpVWG7t73702szJzNt5X2DozMXPW11vVk1IR09cWExLfMjDy9Lb3O7v5/n9/XtsbG527exuVlBZaXFmbQ==",
        },
      },
      {
        type: "audio.input",
        data: {
          audio:
            "69nQ1fFmYWluaOrJwcrbbk9VTT5CSUtLT9W8tbnI3XJn6npDQFxjWk9J6Le6ODHWzsdJQ7hi+bfOvcRART07sLc4VVhD5jYoPPt7z8K1qKCksNJEQS8lJCUwNjpW1q+rr7K0sLLMWmxUPz49P1A8Nk5nxqeuQ0tAMUknKczgxbWqoqGirq7kJyseGx4cLThPt6qfn5+jra/sOTkrKzs+Og==",
        },
      },
      {
        type: "audio.input",
        data: {
          audio:
            "Pj9SzHPZoaI1RMs62yMevNzFwsmmp6KztrYnLSodIRwlP0Lar6CdnJuiqL40NTAoKiUnLS8/xMO9nqQ71qw/NCAtti7hv6+cqJ65rKgjKCgcHhskOjU+uqOhn5yipaxoTj4qLCkqLSUy6Na4n6ouxac5QyYvvS3xwqqor56/p6cgKzUfHR0iMTRCsqeroJqdpKrTbksoKSokKiYt6+TFow==",
        },
      },
      {
        type: "audio.input",
        data: {
          audio:
            "pzeymjwyJy29IkrAsaSvnLmooiQuKx4eHCQoL0i+p6ufmZ6hqMbaWSkmLSYqLCVMxUCnmjs2n+4vNCm/Pzq2sKW5oqvGnz0iMyYdGygsMThKqq2pm5yfp7LNzjsjLjElJSU4zT3SmccnnLwuSiy5NDatwKjEp6pVnfUpOiYlHiMoKDlNtbCrnZ2foa2+zEwqKy8jKSco3U5QnKwmqaU3QQ==",
        },
      },
      {
        type: "audio.input",
        data: {
          audio:
            "LXu/M8bBubK7qVS7sC04LiorJCwtOmrKsrCmn6Wlq7jC7TwtLy8nKSgyTUfEq01Hn75B3D24PT6z37C5rrZbqegzMygzJyotLU1Vx7SwpqSmqLK931Q2LzsvLC0vTU1Xqa4zvKhVSDdYzDC9wdisvKrYzKs6RjElLiYrLzJb18azq6Skp6m9y8w+MjY0LyoqP1U7WKS5LaeuOtAy3l8wrg==",
        },
      },
      {
        type: "audio.input",
        data: {
          audio:
            "0rmsva1as7AuMykoLSgvMDnizMCvqqKkqqu9yNc0MjUwLScsS1w34J/ELaGvNW4vyF03sf+9ra+vX7K1LjMwJykoKjA03rzIsKeio6aqv8/ZNjE2LCwuLjtGPfGmvzSnr0zVMs7ZN7TL5bCvune/uDssNCsqMyw1O0O/xrmpqKenrLnJxl4wMDsvKiouUkQ6q6c73qnO72VIu2hIuNxitg==",
        },
      },
      {
        type: "audio.input",
        data: {
          audio:
            "vnrKuu0xNUI0LzI+RThHzsvHrqerq7C9x11CPzYvMzQ2O0ZjbOGvrm7hu8h1RkVf6mnb2l3IvtTZ9VhmZklDREpVSUJe3NfJx9TIw8/X5PLh/VlaX15dWVN/1nFrY1zzaW56X2Np3u5i8/Ht49Tc69fa0tPvbHbvX09NWG9UTVVba/xuX/XS1uXd19LS29rUzs7hX1lmX09ERlFPTk9WbQ==",
        },
      },
      {
        type: "audio.input",
        data: {
          audio:
            "29Xc1dLMx83a2NTecGBXWl5WVVdebWdXVm/9Y3Tq9d7X3dnUzc7S1OV6alhUUk9NS09ZX1xe7dbb2c7P0dHU3eXs+GxWXGtZXmldW15pX1hhbW725ejiz83S1c/O1OpwYVhWUk9LT1xTVWVjet/W1tzXz9PW2d3l+O92YGNgXVpZW1lbW1lecPh67dnY1tDS09Xc2d33altYXVtQTVZeXA==",
        },
      },
      {
        type: "audio.input",
        data: {
          audio:
            "XWRq+uvi3+XZ0tXY2dfe5uN+amxhXFZSWFRSWltfcPTr39bV19jY2d7e3ubs9nBeW2BbWFtcXmJcWVhh5eTr3dnS0dTU2Nra4XdgXVpXVFBPVlteX2nt4uTe2Nnb19nk597i6OtxZmdkZl9XV1xZXF9XXn7p3uDf1s7O0tbc3+XxZllZWVlVUVNZYGdqdPTp4Nna3dfW3OHo6OLh7HZgWg==",
        },
      },
      {
        type: "audio.input",
        data: {
          audio:
            "XmNaVVVaXmJfW2Tv29ba3tjS0dLc+e7m8mVUU19iXFZRV213d3Vv69jW4Ofe1tTe7unk3+ZpV1dfaF1PUV1nbWZhbOLT2ePm3dPQ2u348+XsYVhXXGliVVRaavT+bG713tfd5t/b2dzl7uve429YUFxpX1lUWmf+dF1c/trVzrm0Wis1UFLKtq+217zRKjJCNT86X73by8DPyMLJ2lBZ3A==",
        },
      },
      {
        type: "audio.input",
        data: {
          audio:
            "w7jUTEU7T000OjtGz8vIzLyvrK/XVUpNTTcyLzRHSFDsz8O5s7jBy8e+yc7mUkc9OzM1OzFLrrpmyz5zvGPWQNu3uqy/s85btk5TOCkpJTAqMkNCu7atqamkpqe12Vo7Oy4rKysxMDdE813MnqbHrz82y0XgPTjhWq21uLpOsMTNXCopIi4sMD4wfL+spqajqqWtvdY5NS0uLywuKi5Exw==",
        },
      },
      {
        type: "audio.input",
        data: {
          audio:
            "18mkq7q0WTVCS15SVd1zsq6vsePA02lILCYfJykzSj/Nvqyjn5+nqrnNbzsxKiwqLTMuOE7V1rilq7O6ODZNRVhDefvLq62ru87ca8o2KSMeIyw/PFnBuaifnaCmrsbaRjguKScpLzY5Q9bU1a6mrLTRLjNCQGFPala+q6qntMRYWVczLSIeHy09RMy/tqqfnZ6htN1LOzUvKyYoLTZA3w==",
        },
      },
      {
        type: "audio.input",
        data: {
          audio:
            "wF3kp6e1rlgmMzhJ+NLCXsWwq6evyUlQOTEwIx4fKzZitbSvp6CfnqO7TjcvMDMvKysrMUzDvcrDra20uDgwNDJNZb/jx7Czqauwz1BALComIB8oMT2/sKynoaCgpLDdQDIuLzAsKisuPsi7xrmtr7i/QzM6OUrvxMnCtLmwsbXEUzsrJiYlJy44R8izq6SgoqSqu2M/Ni4vLi4uLzRE2A==",
        },
      },
      {
        type: "audio.input",
        data: {
          audio:
            "zrynrLu+PzA5PV1qzMTStbKvrrXFWEYxKScjIikzQ9m4raehoaGmstxDOC4vLy0uLi888tC/qam5ulgxPD5OV+/nXbetrKyzv2xNOC0nIR8lLz7ZuK+qop+fpK7YPjcxMi8sLCstPezfvqSou7laNTw7SkNnye21rq2ttb1rUTkqJSIfJjBB3rmtp6Cen6e05T84MjQvLCwoLU3U2r2oqw==",
        },
      },
      {
        type: "audio.input",
        data: {
          audio:
            "uLxMNkRAQD/e1NGurK20uMF7UTImIR8hKztbxraro56do67NSDw3MTEsKystPOPRyK6qt7nIPTk9REpM1tu6rKyttrndSTsnHx8fJjdgw7CnoZ+fp7VhPTc2Ozo1Nz03RsjlTbOs91xILDA8Z8nJsLKsoqi01W49LCwfGyQrPr6wrqynqKux1zosLDhQ28zKxrvFybz2PEnzPy4qJCtHyw==",
        },
      },
      {
        type: "audio.input",
        data: {
          audio:
            "t7OqpqahqsJaRjAoKSEjNVe9sK61tbTA3zssKSw857uvqqyuuMrRVjtLdjMoJyIyVdK9vKqnpKe99kVUOS0tJS/fubC0tb29xU4xKSsuO2LKs6qnqrjQbnhBQtBFKy8uL0VR2se6q62uvPRTf942MjAy38K+xMS7yM1HNTAyPTlN17msq6vA3F733D5T/j83OC81TErIwrmvurfRzL5WPA==",
        },
      },
      {
        type: "audio.input",
        data: {
          audio:
            "OjQ/2fPDv8m81147ODM0QThazLaqrLXay9zM7jv9VTs8My49W9++yrW2wszmvU49Qy9Nzda7ubvCzkw0OS4zPztrxLavrLbO1HvDcj5hRz48MzZK8sq9wr3Fx7/NTzdDPz1V/LmvssHWZz0+LS46PFzNubittdvW0bjuSO89PjksOUn7vr+4t8G3vkovOkE0P1S/rrO6vMtNRS8tOztFYA==",
        },
      },
      {
        type: "audio.input",
        data: {
          audio:
            "w7i0t9nPv7XDR3BCPDkqOUh9wce5urexxjg4Xzo2OFCzuL29t8VOPy43PDlKfb+9ucTlwLW6WdX2OkYrL0xH0su9wbmq1DfuTS1GPUS0w8C1vWReaC8+PzNV3c68tOZKuazFXb5GOTomQExEyr20v62zQdlAJ0Q/Mb27wa+36ejpMTw/L1JuZ723Wka1p7tPr+crOSc6UTTWtLi9rLZd5Q==",
        },
      },
      {
        type: "audio.input",
        data: {
          audio:
            "MzBNLje7vb60u8nGRDROMTBheHrCxEzKq6zc3K00LFEnSUYztca6sLi38j4xPDQv18a+tLu8v249SD0vRlNP4fRTxaetbrWzKz1BIlM/Q7TFsLu2uEQ8Njw0PtPSu8HIuM9VT0k5PlFE7F9Wwbuus9qxzis+MS1IO9PHtbPEqvI25TItT05bvMLqtb5Y5Eg9R0lAWFlLz72rue6qcS75Lw==",
        },
      },
      {
        type: "audio.input",
        data: {
          audio:
            "L0U9zs6/vbmyT15OMEtIRN7KzdzCz/nyTFBMSk1VWejP2Ku1P6+2LE1NJ0NtSNy/vci25E/WPUZfSl3Ly2nN11toWFtdTDxOw9nkq7E70+ExRVFUUc7I6rnD/tZTRE9HRff9WtrXfvznfVNSZ2RMWcnX37a73MPlSPtbTHRPP0laTPLMYtPQW/7uYVjj/drF08nVZ0ZJ11NJzHg98n5BZw==",
        },
      },
      {
        type: "audio.input",
        data: {
          audio:
            "z9jiwcDQwcvobltaVlVRYFpQVk9OTE1OVWb/6W3LvMe9ssTYx1ZN5lBIUk49RU9LZltu2H1v4uhv2c/SysnMyuxGSdl3Sb/oN2ljO0jR6VnDyt+9wNHeb2hXWVpjXE9bWFhNT1RMVFp948jHy73DzsrP6OncYFxbTUhJUExPYVpeZm9y7t7l09TW0N19f9NcW8TeWt7jRkfhS0zU4u/SyQ==",
        },
      },
      {
        type: "audio.input",
        data: {
          audio:
            "2trT/l1YV1lYWXt3WWfxamhwU1FbZsnJ3LrFWMjzRejvWVLX6nDMYHVrTVxXTlL5VFzZb3Pt8l1kbfbO7d3Pd3XqbFlra1xqaV5oYl10/O/d2d3Z1NzUzdfl6O91a/zf825oUU5PSktNUWzz9eLhevzpbvDg8e/t73T8b15iWV1gXn3p59vW2Nfa5ujq9+3n6dnR2tre7PVvXVVTT09VVg==",
        },
      },
      {
        type: "audio.input",
        data: {
          audio:
            "XGRmZnh4e+/u4dTR0MzO2fP39+j+6urz5+ji5e5sa29kbXVvamx69O3q4+x6cGZgX2Jqbm9ze/Xz+n16eHZ9/Xj68e/v6+np6enp5uXl6vhzZF1bWVhZWFleY2d97+vg3dzb3dbX2+Lm6Ovs7+/v9P37e21eUk5NTU5PUFdaXv/n39nW09LPz9TR2N7k8H50bWdnaHb29Ofq9f/9fW1wbA==",
        },
      },
      {
        type: "audio.input",
        data: {
          audio:
            "dH7+9vXw8/X6+/h/enZvbGxtbGpwdHR3eX/8+fT3+/19fHl3fX//+/v59fn49vz/fXp3d3d6end2eXd4e3x9f359fn18ent6fX3//Pv9/Pv8/v99fX19f35+fX7/fn1+fXx/fX19fH1+fn59fn9+fv9/fX7+f/5//n5+f359/3///n59fX59/33//v5+/n7///9+f37+/v9+fn7/ff7/fw==",
        },
      },
      {
        type: "audio.input",
        data: {
          audio:
            "fn1+fX5/fn59fX18fn1/fX1+fn1+fX1+fXx8fn59fn1+fn19fX5+f/5/fX19fX1+f35//n59f39///3/fv9+/37+/f39f39+fX3///99fn3/fn18fXx+fn99fHx9fX99f31+fv7//f3/fn9+fX1+//99fX59fn59fH18fXx/fn7/fn5+fn18fn5+fX7//v5+/n59ff59/319fX1+fX59fg==",
        },
      },
      {
        type: "audio.input",
        data: {
          audio:
            "fn/+/v79//7+/X5+/v9+/37+/v79f37+fn3/fn19fH99fn59fv5+fn7+f35+/n5+fv7+/v9+fn9/f37//X59fv7+/v5+/f1+/f7+/v/+/n//f//+/fz//f9+f37+/n5+fn1+fn//fv7+/X/+fn7//v79/f9+/n//f/9+fn19fX59fH59fX99/31+fXx+fn19fHx8fHx9fHx8fn99ff//fQ==",
        },
      },
      {
        type: "audio.input",
        data: {
          audio:
            "/v99/v7+/v3//X5+/n7///7+fn59fX59fHx+fH58fH1+/319fn1+/31+f319fX9+/v5+/37+fn19fv9+fv7+/v39f/7+fv5+/n7+/v7//v3+fn7//v3//n5+fX5////+fn9+fX19f31+ff5+ff9+/n5+//7+/37+fn9+fn7+fv/+/n5+/37+/n7+fn3+f35/fX59f39+/n/+f/7///7+/g==",
        },
      },
      {
        type: "audio.input",
        data: {
          audio:
            "fn7+fn3+/v7+/f3+/f79/f7+fv79/f39/P3+/f7+fv/+f3/+/f5/f/3+/v3//n/+/37//n7/ff7+///9/v7//v1+/v79/X5+/n5///7+//39/v5+/v79/f3+f/5+/n7//v9//f///37/fX5+fX5/fn3+//7+fv5/fv5+/v7+//7/f35+/3///v7//f79/f7+/v1+/v79/n//fv5+fn59fQ==",
        },
      },
      {
        type: "audio.input",
        data: {
          audio:
            "fX18fn7/ff/+ff9/fn99fX19fHx9fHx8fXx+fn1+f318fn19fn99fn5+fn5/f35+fv5+fX5+fX1+/v7+fn7/fX1+fX59fn18fn59fX5+fn19fn7+/3//fn9//v5+/v5///9+fv79fv39//7+fv5+/v39/f79/n7+f/7/fn5//v5+/v///v39/n5+fv/+/f3+/X/+f/3+//79/v39/f39/A==",
        },
      },
      {
        type: "audio.input",
        data: {
          audio:
            "/vz8/v7+/f/+fv39/v39/v/+f35/fX7+/v7+f//+/v5//v7+/v3+//5+/v5/fv5+fv7+//9+/n9/fn59fH59/35+ff/+/n5//v5+/n59fn5+fX19fX59//7+/f5+fn1+fv59/31+f31+fX5//v5+fv/+/v79//1/fv5+/n7+f35+//7+/v1+/n5+ff///n5+f37+fn7+/X9+/n5/fv7+/w==",
        },
      },
      {
        type: "audio.input",
        data: {
          audio:
            "/X7/fv///n59/n5+fX19fn7/fn3/fv7+/v7+/v3+/f3+/v/+//7+//7+/n/9fv///319fn///v5+/n7/fX9+/n5+fX59fnx/fXx8fn7+/v7//X9+/v7+/39+fn5+fv7+//9+fn5+/v7+/v39//38/v7+/v3+f3/9/X7+/f/+f/5+f35+/n1+fX59fn3//v9+f37+/v5+fn59fn5+f3//fg==",
        },
      },
    ];
    // set up audio track
    const sampleRate = 8000;
    const channels = 1;
    const source = new AudioSource(sampleRate, channels);
    const track = LocalAudioTrack.createAudioTrack("audio", source);
    const trackPublishOptions = new TrackPublishOptions();
    trackPublishOptions.source = TrackSource.SOURCE_MICROPHONE;
    const publication = await room.localParticipant?.publishTrack(
      track,
      trackPublishOptions
    );
    await publication?.waitForSubscription();

    for (const chunk of audioChunks) {
      const buffer = Buffer.from(chunk.data.audio, "base64");
      const int16Array = ulawBufferToInt16Array(buffer);
      const samplesPerChannel = int16Array.length / channels;
      const frame = new AudioFrame(
        int16Array,
        sampleRate,
        channels,
        samplesPerChannel
      );
      await source.captureFrame(frame);
    }

    console.log("Audio published");
  } catch (e) {
    console.error(e);
  }
}

function generateLivekitToken() {
  const identity = generateRandomString(10);
  const token = new AccessToken(
    process.env.LIVEKIT_API_KEY,
    process.env.LIVEKIT_API_SECRET,
    {
      identity: identity,
      ttl: "1m",
    }
  );
  token.addGrant({
    roomJoin: true,
    room: `${identity}-room`,
  });

  return token;
}

function generateRandomString(length: number) {
  const chars =
    "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
  let result = "";

  for (let i = 0; i < length; i++) {
    result += chars.charAt(Math.floor(Math.random() * chars.length));
  }

  return result;
}

function ulawBufferToInt16Array(ulawBuffer: Buffer) {
  const pcm16 = new Int16Array(ulawBuffer.length);

  for (let i = 0; i < ulawBuffer.length; i++) {
    pcm16[i] = ulawToLinear(ulawBuffer[i]);
  }

  return pcm16;
}

function ulawToLinear(ulawByte: number) {
  ulawByte = ~ulawByte;

  const sign = ulawByte & 0x80 ? -1 : 1;
  let exponent = (ulawByte >> 4) & 0x07;
  let mantissa = ulawByte & 0x0f;
  let magnitude = ((mantissa << 3) + 0x84) << exponent;

  return sign * (magnitude - 0x84);
}

run();

const app = express();
const port = process.env.PORT ?? 3000;

app.listen(port, () => {
  console.log("Server started on port", port);
});

Reproduction

Just try to run the code I have provided, It generates a Livekit token which connects to a room and then try to publish the audio chunks which are in mulaw 8000 base64 format, but the audio doesn't reach on the agent and also there are no logs on the agent to troubleshoot the issue.

Logs

System Info

MacOS
Python based Livekit Agent
Node based client @livekit/rtc-node

LiveKit server version

LiveKit cloud

Severity

blocking all usage of LiveKit

Additional Information

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions