博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
「Linux」Linux下根据CET听力文件关键字和lcr时间对mp3进行剪辑分割
阅读量:7208 次
发布时间:2019-06-29

本文共 5778 字,大约阅读时间需要 19 分钟。

 

1. 脚本内容:

#!/bin/bash# Author: linkscue # Version: 0.2 # Usage: ./mp3cutsh $input $output # To use before: sudo apt-get install poc-streamer
if [[ $# != 2 ]]; then    #statements    echo 'mp3cutsh $input $output'    exit 1fi# 相关的变量,截取文件名、输出路径input=${1%.*}output=${2%/}input_mp3=${input}.mp3input_lrc=${input}.lrc#创建目录mkdir $output &> /dev/null# 截取conversation短对话11~18题keywork1="[bB]egin [wW]ith [tT]he"keywork2="[cC]onversation [oO]ne"infomation="8 short conversations"part_name="conversation"output_base=$output/$part_name# 相关计算start=$(sed -n "/$keywork1/p" $input_lrc | awk '{print substr($0,2,8)}' -)end=$(sed -n "/$keywork2/p" $input_lrc | awk '{print substr($0,2,8)}' -)start_t=$(echo $start | sed -e 's/\./+/' - )0end_t=$(echo $end | sed -e 's/\./+/' - )0if [[ $start ]]; then #只在非空时执行操作    #statements    echo "I: Cutting from [$start] to [$end] -> $output_base.mp3"    mp3cut -o $output_base.mp3 -t $start_t-$end_t $input_mp3 &> /dev/null    sed -n "/$start/,/$end/p" $input_lrc > ${output_base}.lrc     fi# 截取conversation 1keywork1="[cC]onversation [oO]ne"keywork2="[cC]onversation [tT]wo"infomation="conversation one"part_name="conversation1"output_base=$output/$part_name# 相关计算start=$(sed -n "/$keywork1/p" $input_lrc | awk '{print substr($0,2,8)}' -)end=$(sed -n "/$keywork2/p" $input_lrc | awk '{print substr($0,2,8)}' -)start_t=$(echo $start | sed -e 's/\./+/' - )0end_t=$(echo $end | sed -e 's/\./+/' - )0if [[ $start ]]; then #只在非空时执行操作    #statements    echo "I: Cutting from [$start] to [$end] -> $output_base.mp3"    mp3cut -o $output_base.mp3 -t $start_t-$end_t $input_mp3 &> /dev/null    sed -n "/$start/,/$end/p" $input_lrc > ${output_base}.lrc     fi# 截取conversation 2keywork1="[cC]onversation [tT]wo"keywork2="[sS]ection [bB]"infomation="conversation two"part_name="conversation2"output_base=$output/$part_name# 相关计算start=$(sed -n "/$keywork1/p" $input_lrc | awk '{print substr($0,2,8)}' -)end=$(sed -n "/$keywork2/p" $input_lrc | awk '{print substr($0,2,8)}' -)start_t=$(echo $start | sed -e 's/\./+/' - )0end_t=$(echo $end | sed -e 's/\./+/' - )0if [[ $start ]]; then #只在非空时执行操作    #statements    echo "I: Cutting from [$start] to [$end] -> $output_base.mp3"    mp3cut -o $output_base.mp3 -t $start_t-$end_t $input_mp3 &> /dev/null    sed -n "/$start/,/$end/p" $input_lrc > ${output_base}.lrc     fi# 截取passage 1keywork1="[pP]assage [oO]ne"keywork2="[pP]assage [tT]wo"infomation="passage one"part_name="passage1"output_base=$output/$part_name# 相关计算start=$(sed -n "/$keywork1/p" $input_lrc | awk '{print substr($0,2,8)}' -)end=$(sed -n "/$keywork2/p" $input_lrc | awk '{print substr($0,2,8)}' -)start_t=$(echo $start | sed -e 's/\./+/' - )0end_t=$(echo $end | sed -e 's/\./+/' - )0if [[ $start ]]; then #只在非空时执行操作    #statements    echo "I: Cutting from [$start] to [$end] -> $output_base.mp3"    mp3cut -o $output_base.mp3 -t $start_t-$end_t $input_mp3 &> /dev/null    sed -n "/$start/,/$end/p" $input_lrc > ${output_base}.lrc    fi# 截取passage 2keywork1="[pP]assage [tT]wo"keywork2="Passage [tT]hree"infomation="passage two"part_name="passage2"output_base=$output/$part_name# 相关计算start=$(sed -n "/$keywork1/p" $input_lrc | awk '{print substr($0,2,8)}' -)end=$(sed -n "/$keywork2/p" $input_lrc | awk '{print substr($0,2,8)}' -)start_t=$(echo $start | sed -e 's/\./+/' - )0end_t=$(echo $end | sed -e 's/\./+/' - )0if [[ $start ]]; then #只在非空时执行操作    #statements    echo "I: Cutting from [$start] to [$end] -> $output_base.mp3"    mp3cut -o $output_base.mp3 -t $start_t-$end_t $input_mp3  &> /dev/null    sed -n "/$start/,/$end/p" $input_lrc > ${output_base}.lrc    fi# 截取passage 3keywork1="Passage [tT]hree"keywork2="[sS]ection [cC]"infomation="passage three"part_name="passage3"output_base=$output/$part_name# 相关计算start=$(sed -n "/$keywork1/p" $input_lrc | awk '{print substr($0,2,8)}' -)end=$(sed -n "/$keywork2/p" $input_lrc | awk '{print substr($0,2,8)}' -)start_t=$(echo $start | sed -e 's/\./+/' - )0end_t=$(echo $end | sed -e 's/\./+/' - )0if [[ $start ]]; then #只在非空时执行操作    #statements    echo "I: Cutting from [$start] to [$end] -> $output_base.mp3"    mp3cut -o $output_base.mp3 -t $start_t-$end_t $input_mp3 &> /dev/null    sed -n "/$start/,/$end/p" $input_lrc > ${output_base}.lrc    fi# 截取听写部分keywork1="[nN]ow [lL]isten [tT]o [tT]he [pP]assage"keywork2="[tT]his [iI]s [tT]he [eE]nd"infomation="Section C"part_name="sectionc"output_base=$output/$part_name# 相关计算start=$(sed -n "/$keywork1/p" $input_lrc | awk '{print substr($0,2,8)}' -)end=$(sed -n "/$keywork2/p" $input_lrc | awk '{print substr($0,2,8)}' -)start_t=$(echo $start | sed -e 's/\./+/' - )0end_t=$(echo $end | sed -e 's/\./+/' - )0if [[ $start ]]; then #只在非空时执行操作    #statements    echo "I: Cutting from [$start] to [$end] -> $output_base.mp3"    mp3cut -o $output_base.mp3 -t $start_t-$end_t $input_mp3 &> /dev/null    sed -n "/$start/,/$end/p" $input_lrc > ${output_base}.lrc    fiecho "I: All Done!"# this is the old version code#output_mp3=$1.mp3#output_lrc=$1.lrc#start=$(echo $2 | sed -e 's/\./+/' - )0#end=$(echo $3 | sed -e 's/\./+/' - )0#input_mp3=$4.mp3#input_lrc=$4.lrc#mp3cut -o $output_mp3 -t $start-$end $input_mp3#sed -n "/$2/,/$3/p" $input_lrc > $output_lrc# 转换文本的编码格式#iconv -f gb18030 -t utf-8 $output_lrc $output_lrc# cat $output_lrc

2. 输出结果展示

scue@Link:cet$ ./mp3cutsh 2012年6月.mp3 cet2012I: Cutting from [02:51.74] to [07:37.54] -> cet2012/conversation.mp3I: Cutting from [07:37.54] to [10:39.12] -> cet2012/conversation1.mp3I: Cutting from [10:39.12] to [13:35.27] -> cet2012/conversation2.mp3I: Cutting from [14:08.62] to [16:54.10] -> cet2012/passage1.mp3I: Cutting from [16:54.10] to [19:33.92] -> cet2012/passage2.mp3I: Cutting from [19:33.92] to [22:57.88] -> cet2012/passage3.mp3I: Cutting from [23:50.05] to [32:27.48] -> cet2012/sectionc.mp3I: All Done

转载地址:http://fkoum.baihongyu.com/

你可能感兴趣的文章
JAVA Calendar具体解释
查看>>
MongoDB入门简单介绍
查看>>
Git show-branch显示提交信息
查看>>
秒杀 ILSpy 等反编译利器 DotNet Resolver
查看>>
SharePoint 2013 中代码创建列表查阅项字段
查看>>
2014仲秋校招之面试篇
查看>>
负载均衡研究 基础
查看>>
10.cadence.自定义焊盘的创建[原创]
查看>>
shell编程总结
查看>>
Docker源码分析(七):Docker Container网络 (上)
查看>>
一些旁门左道
查看>>
Common Pitfalls In Machine Learning Projects
查看>>
Android内存泄漏分析及调试
查看>>
todoing
查看>>
[Cocos2d-x]Cocos2d-x 3.2 学习笔记
查看>>
进程调度
查看>>
使用代码为TextView设置drawableLeft
查看>>
Android开发(十八)——头部、中部、底部布局技巧
查看>>
Egret 集成第三方库 记录
查看>>
同源策略——浏览器安全卫士
查看>>