UNPKG

wx-voice

Version:

Convert audio files between Tencent apps (Weixin / Wechat, QQ) and Silk codec with other general format such as MP3 and M4A

125 lines (95 loc) 3.19 kB
# wx-voice Convert audio files between Tencent apps (Weixin / Wechat, QQ) and Silk codec with other general formats such as MP3 and M4A (中文版可在 Github 找到) ## Install ``` $ npm install wx-voice --save $ npm install wx-voice -g $ wx-voice compile ``` ## Prerequisites - **Ffmpeg** - **Build tools** (Installation steps can be found in Github repo) ## CLI Usage `wx-voice <command> <options>` ``` Example: $ wx-voice decode -i input.silk -o output.mp3 -f mp3 $ wx-voice encode -i input.mp3 -o output.silk -f silk ``` ## CLI ``` Command: decode decode to general audio format encode encode from general audio format compile compile wx-voice library clean remove compiled library Options: -i <input> input file path -o <output> output file path -f <format> format of the output file --bitrate bitrate of the output file --frequency frequency of the output file --channels channels of the output file ``` ## API Usage ```js // Initialize const WxVoice = require('wx-voice'); var voice = new WxVoice(); // Error handler voice.on("error", (err) => console.log(err)); // Decode silk to MP3 voice.decode( "input.silk", "output.mp3", { format: "mp3" }, (file) => console.log(file)); // Output: "/path/to/output.mp3" ``` ## API ### new WxVoice([tempFolder, [ffmpegPath]]) Initialize wxVoice object | Parameter | Description | | ---------- | ----------- | | tempFolder | Folder of temporary files, default to system temporary | | ffmpegPath | Custom path to ffmpeg executables, default using `$PATH` | ### decode(input, output, [options, [callback]]) Decode the audio to general formats ### encode(input, output, [options, [callback]]) Encode the audio to silk/webm format | Parameter | Description | | --------- | ------------------ | | input | Input audio path | | output | Output audio path | | options | Output options (JS Object), see [Options](#options) | | callback | Callback with `output` as parameter when decode success, `undefined` otherwise | ```js voice.encode( "input.mp3", "output.silk", { format: "silk" }, (file) => console.log(file)); // Output: "/path/to/output.silk" ``` ### duration(filePath, [callback]) Get the duration of the audio file *(Decode to general audio format before calling this method)* | Parameter | Description | | --------- | ---------------------- | | filePath | File path to the audio | | callback | Callback with duration of the audio in second as parameter when decode success, `0` otherwise | ```js voice.encode("output.mp3", (dur) => console.log(dur)); // Output: "10.290" ``` ### Options Javascript Object to set options for the output file | Parameter | Description | | --------- | ----------- | | format | Format to be encoded/decoded (silk, webm, mp3, m4a...), default parse from output | | bitrate | Bitrate of the output, bps unit | | frequency | Frequency of the output, Hz unit | | channels | Channels of the output, default to 1 | ## File types **Decode:** Tested on `mp3`, `m4a`, `wav`, `pcm` **Encode:** Tested on `silk`, `silk_amr`, `webm` ## License MIT © [Ang YC](https://angyc.com)