{"id":17842202,"url":"https://github.com/idranme/silk-wasm","last_synced_at":"2025-03-20T02:31:25.657Z","repository":{"id":202809101,"uuid":"708178476","full_name":"idranme/silk-wasm","owner":"idranme","description":"Tencent SILK codec for Node.js and browser","archived":false,"fork":false,"pushed_at":"2024-04-23T16:47:59.000Z","size":44857,"stargazers_count":48,"open_issues_count":1,"forks_count":3,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-04-23T18:14:02.427Z","etag":null,"topics":["browser","codec","decoder","encoder","javascript","nodejs","qq","silk","silk-v3","silkv3","slk","wasm","wechat"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/idranme.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-10-21T18:56:49.000Z","updated_at":"2024-06-17T20:36:51.298Z","dependencies_parsed_at":null,"dependency_job_id":"c291855a-bc91-4dad-90d5-eef4eded22e4","html_url":"https://github.com/idranme/silk-wasm","commit_stats":null,"previous_names":["idanran/silk-wasm"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/idranme%2Fsilk-wasm","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/idranme%2Fsilk-wasm/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/idranme%2Fsilk-wasm/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/idranme%2Fsilk-wasm/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/idranme","download_url":"https://codeload.github.com/idranme/silk-wasm/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244385816,"owners_count":20444150,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["browser","codec","decoder","encoder","javascript","nodejs","qq","silk","silk-v3","silkv3","slk","wasm","wechat"],"created_at":"2024-10-27T21:10:39.902Z","updated_at":"2025-03-20T02:31:23.051Z","avatar_url":"https://github.com/idranme.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# silk-wasm\n\n[![npm](https://img.shields.io/npm/v/silk-wasm?style=flat-square)](https://www.npmjs.com/package/silk-wasm)\n\nQQ/微信语音编解码\n\n## API\n\n```ts\ninterface EncodeResult {\n    data: Uint8Array\n    duration: number\n}\n\ninterface DecodeResult {\n    data: Uint8Array\n    duration: number\n}\n\n/**\n * 编码为 SILK\n * @param input WAV 或单声道 pcm_s16le 文件\n * @param sampleRate `input` 的采样率，可为 8000/12000/16000/24000/32000/44100/48000，当 `input` 为 WAV 时可填入 0\n * @returns SILK\n */\nfunction encode(input: ArrayBufferView | ArrayBuffer, sampleRate: number): Promise\u003cEncodeResult\u003e\n\n/**\n * 将 SILK 解码为 PCM\n * @param input SILK 文件\n * @param sampleRate `input` 的采样率\n * @returns pcm_s16le\n */\nfunction decode(input: ArrayBufferView | ArrayBuffer, sampleRate: number): Promise\u003cDecodeResult\u003e\n\n/**\n * 获取 SILK 音频时长\n * @param data SILK 文件\n * @param frameMs SILK 的 frameMs，可为 20/40/60/80/100，默认为 20\n * @returns 单位为毫秒的时长\n */\nfunction getDuration(data: ArrayBufferView | ArrayBuffer, frameMs?: number): number\n\n/**\n * 检测是否为 WAV 文件\n * @param data 任意文件\n */\nfunction isWav(data: ArrayBufferView | ArrayBuffer): boolean\n\n/**\n * 获取 WAV 文件的信息\n * @param data WAV 文件\n * @returns metadata\n */\nfunction getWavFileInfo(data: ArrayBufferView | ArrayBuffer): WavFileInfo\n\n/**\n * 检测是否为 SILK 文件\n * @param data 任意文件\n */\nfunction isSilk(data: ArrayBufferView | ArrayBuffer): boolean\n```\n\n## Example\n\n```js\nimport { encode } from './lib/index.mjs'  // use `silk-wasm` instead\nimport { readFile, writeFile } from 'fs/promises'\n\nconst pcm = await readFile('./testdata/canon.pcm')\nconst silk = await encode(pcm, 24000)\nawait writeFile('./test.silk', silk.data)\n```\n\n## Build wasm\n```\ncd binding\nemcmake cmake .\nemmake ninja\n```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fidranme%2Fsilk-wasm","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fidranme%2Fsilk-wasm","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fidranme%2Fsilk-wasm/lists"}