利用Bass.Net对纯语音文件同步显示文字提示

基于音乐的LRC的启示,在音乐播放的同时,自动显示字幕,但LRC文件大都是人工编辑播放时刻,如果能根据音乐波形自动确定文字显示时刻,可减少许多人工编辑工作。

由于从音乐中提取人声,算法太复杂,这里只对纯语音内容如何实现给一些基本思路。

一、准备工作

1、纯语音文件及对应的文字内容

2、将文字内容按音节(即每一停顿)为一行分割

二、读取语音频谱,对频谱进行分析

1、利用Bass.Net加载语音文件

WavID= Bass.BASS_StreamCreateFile(WavFile, 0, 0, BASSFlag.BASS_DEFAULT)

2、绘出语音频谱到PictureBox上

        WF = New Un4seen.Bass.Misc.WaveForm(WavFile New Un4seen.Bass.Misc.WAVEFORMPROC(AddressOf MyWaveFormCallback), Me)
        WF.ColorLeft = Color.Red
        WF.ColorLeftEnvelope = Color.Blue
        WF.RenderStart(True, BASSFlag.BASS_DEFAULT)
        While Not WF.IsRendered
            Application.DoEvents()
        End While

    Private Sub MyWaveFormCallback(ByVal framesDone As Integer, ByVal framesTotal As Integer, ByVal elapsedTime As TimeSpan, ByVal finished As Boolean)
            PictureBox1.Image = WF.CreateBitmap(PictureBox1.Width, PictureBox1, -1, -1, False)
    End Sub

3、从PictureBox上获取波形振幅,通过振幅判断语音开始与结束,并自动为文字内容添加显示时刻

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值