# sound-api **Repository Path**: adfasdfasdfas/sound-api ## Basic Information - **Project Name**: sound-api - **Description**: 实现 wav音轨的 变速,变调,变节奏 的示例 - **Primary Language**: NodeJS - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 0 - **Created**: 2018-09-03 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # sound-api #### 项目介绍 实现 wav音轨的 变速,变调,变节奏 支持本地上传 wav, 进行处理 支持线上m4a 链接 进行 wav格式转换, 进行处理 #### 安装教程 针对MAC OS [请先下载 soundTouch ](https://www.surina.net/soundtouch/download.html) ![输入图片说明](https://images.gitee.com/uploads/images/2018/0927/183858_40b36430_543959.png "屏幕截图.png") 先把 libSoundTouch.1.dylib 文件 cp 放到 /usr/local/bin 目录下 再把 soundTouch.exec 可执行文件 cp 到 /usr/local/bin 目录下 这样在终端输入 soundstretch 就有这条命令了 ![输入图片说明](https://images.gitee.com/uploads/images/2018/0927/184540_2cbaadac_543959.png "屏幕截图.png") 然后把代码git clone下来 npm install ####在node实现 node 是单线程 为了不想 wav 音轨处理阻塞主线程,开一条子线程, 然后在 node 代码的 execSync 函数里面执行 shell 命令 [soundstretch 文档](https://gitlab.com/soundtouch/soundtouch/blob/master/README.html) execSync 是同步的 示例代码 controller/v1/sound.js ``` const process = require('child_process') ... ... process.execSync('soundstretch wav/1255573444.wav wavNew/canel10.wav -tempo=12.5', (error, stdout, stderr) => { if (error !== null) { console.log('exec error: ' + error); } }) ``` ![输入图片说明](https://images.gitee.com/uploads/images/2018/0927/190018_85d75aa3_543959.png "屏幕截图.png")