kn007的个人博客

留言板

Comments
1,941 Comments立即评论
  1. coder回复

    大神,请问下执行converter.sh的时候返回false,maybe not a silk v3 encoded file是为什么,我的是下载的微信语音,amr格式的 :cry:

    1. kn007MOD回复

      @coder: 信息不是显示得很清楚,不是silk v3编码的。
      微信语音?小程序语音?SDK语音?
      完全不同的格式。

    2. coder回复

      @kn007: 看了你的好几页博客留言大致找到原因了,微信公众号里面jsdk的多媒体语音是amr格式的,所以应该不能用这个转,直接用ffmpeg转了

    3. kn007MOD回复

      @coder: 对的,而且sdk还有个坑人的地方,为了方便,他以某种非常规方式进行编码,会使得正常解码失败,而实际用户环境并不是如此。
      这个是最囧的

  2. lostar回复

    网站不错,赞一个

  3. kindle大法回复

    求助 kindle 如何提取分期 如 mmcblk0p2.img 这些

    1. kn007MOD回复

      @kindle大法: linux系统啊,用dd

    2. kindle大法回复

      @kn007: 可怜我是个小白。。。只能看懂教程 还有您操作的是kindle touch 我这边坏掉的是kindle paperwhite 3 日版32G的。。。我想从别的机子备份镜像出来直接恢复 但是不知道方法
      还望您抽空给指导一下 :cry:

    3. kn007MOD回复

      @kindle大法: kpw我没试过。
      小白不建议尝试从别的机子备份镜像恢复,你可以找官方拿到原始版本的镜像,然后恢复。

      以前kt,就是进入ssh,然后dd备份,后续需要,也是dd恢复。

      有官方镜像,那么就是进入ssh,然后dd恢复。

    4. kindle大法回复

      @kn007: 进不去ssh...已经是砖头了 :o

  4. 平淡是福回复

    你好大神,请问,可以通过C# 代码 进行silk 转换 wav的操作吗?望指导

    1. kn007MOD回复

      @平淡是福: 看github源码

  5. liutaoyxz回复

    在linux 上面调用converter.sh 是可以的, 但是部署了 war 之后, 用java命令调用 就会出现maybe ffmpeg no format handler for mp3 这个问题, 这是什么原因啊,

    1. kn007MOD回复

      @liutaoyxz: 权限问题

  6. AIguibinLV1回复

    我的环境就是 win10 Java 1.8 Tomcat 7 说白了最终是Linux环境
    用getruntime.exec(cmd) 其实就是在执行cmd 你就按照cmd 的方法 给指点下吧 什么win10 Java 这些不用管
    那只是辅助执行cmd的

    1. kn007MOD回复

      @AIguibin: 你的命令并没有错啊。
      有错我早已指出来了。

  7. AIguibinLV1回复

    是不支持64位操作系统吗,大神麻烦帮帮忙,搞了好几天 头都大了 需不需要给你发一份声音样本 看看

    1. kn007MOD回复

      @AIguibin: 支持的。你用silk2mp3就知道是支持的。

    2. AIguibinLV1回复

      @kn007: 这个在linux怎么执行 能给个试例代码么

    3. kn007MOD回复

      @AIguibin: 与32位相同,没有区别

  8. AIguibinLV1回复

    String olddata = lineTxt.toString();
    olddata = olddata.replace("data:audio/webm;base64,", "");
    System.out.println(olddata);

    try {

    File webmFile = new File("H:\\TDDownload\\caole.webm");
    byte[] bt = Base64.decodeBase64(olddata) ;
    FileOutputStream in = new FileOutputStream(webmFile);
    之后怎么搞

    1. kn007MOD回复

      @AIguibin: 去头->base64 decode->文件,直接用ffmpeg解码。

  9. AIguibinLV1回复

    我靠 接下来 更迷了 这是要解密成webm格式吗? 然后要把webm转为wav或pcm 在转文本 大神求救

  10. AIguibinLV1回复

    你好,我想在Java里怎么转换不了微信小程序传上来的录音文件.silk 命令行不对吗?大神
    我的需求是这样的 前端微信小程序录音上传至服务器
    把上传上来的.silk 文件转换成wav 格式 在用讯飞的语音识别 转换成文字 然后回传给客户端小程序
    Java1.8 Tomcat7.0 win10 大神能帮下忙不 赞赏是必需的

    1. kn007MOD回复

      @AIguibin: 小程序语音并不是就是silk,也有webm、AMR等。
      你自己做个头部判断,采用不同方法解码。

    2. AIguibinLV1回复

      @kn007: data:audio/webm;base64,那就是这个了,我在查查看,
      都说你人好,都愿意帮助,感情真是这样,这个赞是必需的,先给个小的 解决了 在给个大的 赞在哪里

    3. AIguibinLV1回复

      @kn007: 大神 你好 我能获取到silk文件 也在你的工具上成功转码MP3 现在我想在Java里通过执行cmd命令搞成wav格式的 能不能给下cmd命令 网上试了很多都不行 目前测试在本地window下,日后会传到服务器上Linux系统,求大神具体指导一下,具体给个步骤及cmd命令

    4. kn007MOD回复

      @AIguibin: 参考shell脚本,代码一样。

    5. AIguibinLV1回复

      @kn007: public static void silkToPcm() throws IOException {
      String[] cmd = new String[3];
      if (OperatingSystem.isWindows()) {
      cmd[0]="cmd.exe";
      cmd[1]="/c";
      cmd[2]="C:/Users/liuguibin/Desktop/silk_v3_decoder.exe "+SILKPATH+" "+PCMPATH+" -Fs_API 16000";
      // cmd[2]="/Users/liuguibin/Desktop/ffmpeg.exe -y -f s16le -ar 8000 -ac 1 -i "+SILKPATH+" -f wav -ar 16000 -b:a 16 -ac 1 "+PCMPATH;
      }else {
      cmd[0]="";
      cmd[1]="";
      cmd[2]="";
      }
      Process process=Runtime.getRuntime().exec(cmd);

      InputStream in = process.getInputStream();
      File file = new File(PCMPATH);
      FileOutputStream fos = new FileOutputStream(file);
      byte[] b = new byte[1024];
      int nRead = 0;
      while ((nRead = in.read(b)) != -1) {
      fos.write(b, 0, nRead);
      }
      fos.flush();
      fos.close();
      in.close();
      }

      这样执行的结果 。pcm文件打开提示********** Silk Decoder (Fixed Point) v 1.0.9.6 ********************
      ********** Compiled for 32 bit cpu *******************************
      Input: ?H:\test\wx-file.silk
      Output: H:\test\out.pcm
      Error: could not open input file ?H:\test\wx-file.silk

    6. kn007MOD回复

      @AIguibin: 文件是否存在,看下权限问题

    7. AIguibinLV1回复

      @kn007: 文件存在 确认了 文件存在 权限最高 完全控制 还是
      ********** Silk Decoder (Fixed Point) v 1.0.9.6 ********************
      ********** Compiled for 32 bit cpu *******************************
      Input: ?H:\test\wx-file.silk
      Output: H:\test\out.pcm
      Error: could not open input file ?H:\test\wx-file.silk

    8. kn007MOD回复

      @AIguibin: 不明白你的环境,而且Java不熟

    9. kn007MOD回复

      @AIguibin: https://kn007.net/topics/batch-convert-silk-v3-audio-files-to-mp3-in-windows/comment-page-7/#comment-23783

    10. AIguibinLV1回复

      @kn007: 恩 成功转换成pcm 谢谢大神 接下来再看看FFmpeg转成wav

    11. AIguibinLV1回复

      @kn007: 真是搞不懂 前两天测试的好好的 今天怎么就执行了 没有反应啊

    12. kn007MOD回复

      @AIguibin: 自己找原因,自己的代码,自己的环境,只有靠自己

    13. AIguibinLV1回复

      @kn007: 恩 找到原因了 文件名里有其他符号- cmd 认为是语法了

    14. kn007MOD回复

      @AIguibin: 嗯嗯,加油

    15. AIguibinLV1回复

      @kn007: String cmd="";
      if (OperatingSystem.isWindows()) {
      cmd = "cmd.exe /c ";
      cmd += "H:\\silkDecoder\\silk_v3_decoder.exe ";
      cmd += silkPath+" ";
      cmd += pcmPath +" ";
      cmd += "-quiet";
      }else {
      cmd = "/bin/sh -c ";
      cmd += "/var/lib/tomcat/webapps/silkDecoder/silk_v3_decoder.exe ";
      cmd += silkPath+" ";
      cmd += pcmPath +" ";
      cmd += "-quiet";
      }
      大神 我Windows上思路是 用silk_v3_decoder.exe 把silk文件转成pcm 然后再调用
      String cmd ="";
      if (OperatingSystem.isWindows()) {
      cmd = "cmd.exe /c ";
      cmd +="H:\\silkDecoder\\ffmpeg.exe ";
      cmd +="-f s16le -ar 24k -ac 1 -i ";
      cmd +=pcmPath;
      cmd +=" -f wav -ar 16k -ac 1 ";
      cmd +=wavPath;
      } else {
      cmd = "/bin/sh -c ";
      cmd +="/var/lib/tomcat/webapps/silkDecoder/ffmpeg.exe ";
      cmd +="-f s16le -ar 24k -ac 1 -i ";
      cmd +=pcmPath;
      cmd +=" -f wav -ar 16k -ac 1 ";
      cmd +=wavPath;
      }
      这样把pcm 转成wav 完美运行
      Windows环境一切都按大神的方式完美转换,
      部署到Linux上 貌似不能直接这样调用可执行文件吧
      尝试了下会有cannot execute binary file这个错误
      是不是在Linux上直接调用你那个shell脚本文件解码silk 然后安转FFmpeg 在转成wav

    16. kn007MOD回复

      @AIguibin: 你exe在linux怎么用?
      在linux编译啊

    17. AIguibinLV1回复

      @kn007: ;-) 哈哈 见谅

    18. AIguibinLV1回复

      @kn007: 那个问题不用回答了 大神我已经用你的脚本 完美在Linux环境转成wav 就想问下如果是转成16000的是不是改脚本文件的最后一个24000 那个参数

    19. kn007MOD回复

      @AIguibin: 嗯,改ffmpeg的输出也是可以的,不要改成输入,至于参数对错,自己查下ffmpeg文档

    20. AIguibinLV1回复

      @kn007: 好的 谢谢 大神的东西果然厉害

;-):|:x:twisted::smile::shock::sad::roll::razz::oops::o:mrgreen::lol::idea::grin::evil::cry::cool::arrow::???::?::!: