Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 91精品国产91久久久久青草,韩国三级一线观看久,久久国内精品视频

          整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          前端音頻播放實戰

          前端音頻播放實戰

          . audio播放

          1.1 audio組件瀏覽器支持

          元素

          Chrome

          IE

          Firefox

          Safari

          Opera

          <audio>

          4.0

          9.0

          3.5

          4.0

          11.5

          1.2 音頻支持格式

          • mp3
          • wav
          • ogg

          音頻格式

          Chrome

          Firefox

          IE9

          Opera

          Safari

          OGG

          支持

          支持

          支持

          不支持

          不支持

          MP3

          支持

          不支持

          支持

          不支持

          支持

          WAV

          不支持

          支持

          不支持

          支持

          不支持

          1.3 示例代碼

          <audio controls="controls">
             <source src="song2.ogg" type="audio/ogg">
             <source src="song2.mp3" type="audio/mpeg">
          </audio>

          2. 播放組件-基于VUE前端框架(benz-amr-recorder)

          2.1 集成方式

          • npm包集成
          npm install benz-amr-recorder
          • 引入js文件集成
          <script type="text/javascript" src="./BenzAMRRecorder.min.js"></script>

          2.2 支持格式

          • amr

          2.3 特性

          • 方便的 API 實現解碼、播放、錄音、編碼 AMR 文件。
          • 支持 url 和 blob (即<input type="file">)方式獲取 AMR。
          • 支持將瀏覽器 <audio> 所支持的音頻格式(例如 MP3 或 OGG 音頻)轉換成 AMR 音頻。
          • 編碼后的 AMR 文件可下載,無須服務器。

          2.4 示例代碼

          2.4.1 代碼實現

          import BenzAMRRecorder from 'benz-amr-recorder'
          var amr = new BenzAMRRecorder();
          
          play(url) {
            amr.initWithUrl(url).then(function() {
              // amr.isPlaying() 返回音頻的播放狀態 是否正在播放 返回boolean類型
              if(amr.isPlaying()){
                amr.stop();
             } else {
                amr.play();
             }
           });
          }

          3. 音頻錄制組件-基于VUE前端框架js-audio-recorder

          3.1 依賴

          npm i js-audio-recorder

          3.2 代碼集成

          3.2.1 引用

          import Recorder from 'js-audio-recorder'
          this.recorder = new Recorder()

          3.2.2 前端代碼

          <!-- 錄音上傳 -->
             <Modal v-model="uploadRecordModal" :mask-closable="false" width="580">
               <p slot="header">
                 <span>錄音上傳</span>
               </p>
          
               <div style="font-size:14px">
                 <h3>錄音時長:{{recorder&&recorder.duration.toFixed(4)}}</h3>
                 <br />
                 <Button type="primary"@click="handleStart">開始錄音</Button>
                 <Button type="info" @click="handlePause">暫停錄音</Button>
                 <Button type="success"@click="handleResume">繼續錄音</Button>
                 <Button type="warning"@click="handleStop">停止錄音</Button>
                 <br />
                 <br />
                 <h3>播放時長:{{recorder&&(playTime>recorder.duration?recorder.duration.toFixed(4):playTime.toFixed(4))}}</h3>
                 <br />
                 <Button type="primary"@click="handlePlay">播放錄音</Button>
                 <Button type="info"@click="handlePausePlay">暫停播放</Button>
                 <Button type="success"@click="handleResumePlay">繼續播放</Button>
                 <Button type="warning"@click="handleStopPlay">停止播放</Button>
                 <Button type="error"@click="handleDestroy">銷毀錄音</Button>
               </div>
               <div slot="footer">
                 <Button style="margin-left:5px;"type="default"@click="uploadRecordModal=false">取消</Button>
                 <Button style="margin-left:5px;"type="primary" @click="uploadRecord">上傳</Button>
               </div>
             </Modal>

          3.2.3 后端代碼

          // 開始錄音
             handleStart () {
               this.recorder = new Recorder()
               Recorder.getPermission().then(() => {
                 console.log('開始錄音')
                 this.recorder.start() // 開始錄音
              }, (error) => {
                 this.$Message.info('請先允許該網頁使用麥克風')
                 console.log(`${error.name} : ${error.message}`)
              })
            },
             handlePause () {
               console.log('暫停錄音')
               this.recorder.pause() // 暫停錄音
            },
             handleResume () {
               console.log('恢復錄音')
               this.recorder.resume() // 恢復錄音
            },
             handleStop () {
               console.log('停止錄音')
               this.recorder.stop() // 停止錄音
            },
             handlePlay () {
               console.log('播放錄音')
               this.recorder.play() // 播放錄音
          
               // 播放時長
               this.timer = setInterval(() => {
                 try {
                   this.playTime = this.recorder.getPlayTime()
                } catch (error) {
                   this.timer = null
                }
              }, 100)
            },
             handlePausePlay () {
               console.log('暫停播放')
               this.recorder.pausePlay() // 暫停播放
          
               // 播放時長
               this.playTime = this.recorder.getPlayTime()
               this.time = null
            },
             handleResumePlay () {
               console.log('恢復播放')
               this.recorder.resumePlay() // 恢復播放
          
               // 播放時長
               this.timer = setInterval(() => {
                 try {
                   this.playTime = this.recorder.getPlayTime()
                } catch (error) {
                   this.timer = null
                }
              }, 100)
            },
             handleStopPlay () {
               console.log('停止播放')
               this.recorder.stopPlay() // 停止播放
          
               // 播放時長
               this.playTime = this.recorder.getPlayTime()
               this.timer = null
            },
             handleDestroy () {
               console.log('銷毀實例')
               this.recorder.destroy() // 毀實例
               this.timer = null
            },
             uploadRecord () {
               if (this.recorder == null ||this.recorder.duration === 0) {
                 this.$Message.error('請先錄音')
                 return false
              }
               this.recorder.pause() // 暫停錄音
               this.timer = null
               console.log('上傳錄音')// 上傳錄音
               var formData = new FormData()
               var blob = this.recorder.getWAVBlob()//獲取wav格式音頻數據
            //此處獲取到blob對象后需要設置fileName滿足當前項目上傳需求,其它項目可直接傳把blob作為file塞入formData
               var newbolb = new Blob([blob], { type: 'audio/wav' })
               var fileOfBlob = new File([newbolb], newDate().getTime() + '.wav')
               formData.append('file', fileOfBlob)
            //本地公共上傳接口獲取到服務器地址保存即可
               const axios = require('axios')
               axios.post(this.resource, formData).then(res=> {
                 console.log(res.data.data[0].url)
            //開始調用保存的方法
                 this.uploadRecordModal = false
              })
            },

          3.2.4 語音播放

          獲取音頻服務器地址后直接使用audio標簽播放

          <audio v-if="fileType==='WAV'||fileType==='MP3'":src="fileUrl" controls="controls"></audio>

          天的文章,我想幫大家解決「語音轉文字」的痛點。


          工作學習中,我們總會遇上語音轉文字的需求,例如工作會議布置大量任務、期末最后一節課劃重點,語速太快來不及記錄,只能錄音。


          但錄音一時爽,聽時「火葬場」。害怕錯過重要部分,半個多小時的錄音只能從頭聽到尾,實在是費時間!


          上次在讀者群,就有小伙伴提出了這個問題



          所以,今天我們就來盤一盤,現在市面上有哪些語音轉文字的好工具!


          文末我們也對這些工具做了性能對比,并且提供了音頻格式轉換軟件,所以一定要看到最后哦。


          或者你可以直接 私信@秋葉PPT軟件」兩個字拿到獲取方式。

          過語音和視頻與他人在線通訊,已經逐漸成為了日常生活的一部分。為了實現這一需求,像 WebRTC 這樣的實時通信框架需要高效的壓縮技術和編解碼器來編碼(或解碼)傳輸或存儲的信號。過去幾十年來,編解碼器一直是媒體應用程序的重要組成部分之一,它能讓消耗大量帶寬的應用程序高效地傳輸數據,并讓人們看到了隨時隨地進行高質量通信的希望。


          也就是說,開發用于視頻和音頻的編解碼器時,所面臨的一項長期挑戰就提供更高的質量、使用更少的數據并盡量降低實時通信的延遲。盡管視頻看起來比音頻要占用更多的帶寬,但是現代視頻編解碼器可以達到比當今使用的某些高質量語音編解碼器更低的比特率。若能結合使用低比特率的視頻和語音編解碼器,即使在低帶寬網絡中也可以提供高質量的視頻通話體驗。然而在過去,音頻編解碼器的比特率越低,語音信號的清晰度就越差,電子味也會更濃。此外,盡管有些人可以用上始終如一的高質量高速網絡,但這種網絡水平并沒有普及。即使在網絡連接良好的地區,有時也會遇到質量差、帶寬低和網絡連接擁塞的情況。


          為了解決這一問題,我們創建了 Lyra(https://arxiv.org/abs/2102.09660),一種高質量、低比特率的語音編解碼器,即使在最慢的網絡上也可以用它進行語音通信。為此,我們一方面應用了傳統的編解碼技術,同時利用機器學習(ML)的優勢和使用數千小時數據訓練的模型來創建一種壓縮和傳輸語音信號的新穎方法。

          Lyra 概述

          Lyra 編解碼器的基本架構非常簡單。它以 40 毫秒的間隔從語音中提取特征或獨特的語音屬性,然后將其壓縮以進行傳輸。這些特征本身是對數梅爾聲譜圖,是一個代表不同頻段語音能量的數字列表。由于它們是根據人類聽覺響應建模的,因此傳統上主要用在與感知相關的領域。另一方面,一個生成模型使用這些特征來重新創建語音信號。從這個意義上講,Lyra 與其他傳統的參數編解碼器(例如 MELP)非常相似。



          但是,傳統的參數編解碼器僅提取語音關鍵參數(這些參數可用于在接收端重新創建信號),結果比特率雖然很低,但通常聽起來電子味很重且不自然。這些缺陷推動了新一代高質量音頻生成模型的開發,這種模型不僅能夠區分信號,而且還能生成全新的信號,為這一領域帶來了革命性的變化。DeepMind 的 WaveNet 是這類生成模型中的排頭兵,為以后的許多應用鋪平了道路。此外,目前在 Duo 中使用的 WaveNetEQ(基于生成模型的丟包隱匿系統)已經展示了這種技術在實際場景中使用的途徑。

          Lyra 使用的新壓縮方法

          我們以這些模型為基準開發了一種新的模型,能夠使用最少的數據來重建語音。與當今大多數流媒體和通信平臺中使用的最先進波形編解碼器相比,Lyra 利用這些新的自然聲音生成模型的能力來保持參數編解碼器的低比特率優勢,同時實現較高的質量。波形編解碼器的缺點是,它們需要逐個壓縮并發送信號采樣才能實現高質量的編碼,這需要更高的比特率,并且在大多數情況下獲得自然語音并不需要這么麻煩。


          生成模型的一個問題是它們的計算復雜性。Lyra 使用了一個開銷更低的循環生成模型(WaveRNN 的一個變體)來避免這一問題。該模型以較低的碼率工作,但會并行生成不同頻率范圍內的多個信號,隨后將其組合為所需采樣率的單個輸出信號。這個技巧讓 Lyra 不僅可以運行在云服務器上,而且可以在中端手機上實時工作(處理延遲為 90ms,與其他傳統語音編解碼器相當)。然后,這個生成模型使用數千小時的語音數據來做訓練和優化(像 WaveNet 一樣),以準確地重新創建輸入音頻。

          與現有編解碼器的對比

          自 Lyra 誕生以來,我們的任務一直是使用比特率很小的數據來提供最優質的音頻。當前,免授權的開源編解碼器 Opus 是基于 WebRTC 的 VOIP 應用程序中使用最廣泛的編解碼器,并且音頻碼率為 32kbps 時通常就能獲得透明的語音質量,也就是說與原始音頻沒有顯著區別。但是,雖然 Opus 可以在帶寬限制更小(最低 6kbps)的環境中使用,但此時它的音頻質量就會下降了。其他編解碼器(Speex、MELP、AMR)能夠取得與 Lyra 相當的比特率,但它們的噪音很大,聲音也都是電子味。


          Lyra 目前被設計為 3kbps 的碼率。收聽測試表明,Lyra 在這一比特率下的性能優于其他所有編解碼器,并且在 8kbps 的碼率上性能優于 Opus,從而將所需帶寬減少了 60%以上。Lyra 可以用在帶寬條件不足以提供更高比特率,且現有的低比特率編解碼器無法提供足夠質量的場景中。


          確保公平

          與任何基于 ML 的系統一樣,我們必須對模型進行訓練以確保其對每個人都一樣有效。我們已經使用開源音頻庫為 Lyra 訓練了數千小時的音頻(其中包含 70 多種語言),然后與專家和眾包聽眾一起驗證了音頻質量。Lyra 的設計目標之一是確保高質量音頻體驗能夠普惠大眾。Lyra 會在廣泛的數據集上進行訓練,數據集包括多種語言的語音,以確保編解碼器對可能遇到的任何情況都具有穩健性。

          社會影響力和我們的計劃

          無論是短期還是長期范疇,Lyra 這類技術的影響都是非常可觀的。借助 Lyra,新興市場中的數十億用戶可以獲得高效的低比特率編解碼器,從而享受比以往質量更高的音頻。此外,Lyra 可以在云環境中使用,使網絡條件和設備功能各異的用戶能夠無縫地聊天。將 Lyra 與新的視頻壓縮技術(例如 AV1)搭配后,即使通過 56kbps 撥號調制解調器連接到互聯網的用戶也可以進行視頻聊天了。


          Duo 已經使用 ML 來減少音頻中斷,并且目前正在加入 Lyra 來提高超低帶寬連接上的音頻通話質量和可靠性。我們將繼續研究 Lyra 的性能和質量主題,以確保這一技術提供最大的可用性,還會通過 GPU 和 TPU 加速研究。我們也在研究如何使用這些技術開發低比特率的通用音頻編解碼器(即涵蓋音樂和其他非語音用例)。


          原文鏈接:https://ai.googleblog.com/2021/02/lyra-new-very-low-bitrate-codec-for.html


          主站蜘蛛池模板: 国产一区二区免费在线| 美女一区二区三区| 51视频国产精品一区二区| 国产av一区最新精品| 国产在线视频一区| 成人无号精品一区二区三区| 国产一区二区四区在线观看 | 老熟妇仑乱视频一区二区| 好吊视频一区二区三区| 日韩视频免费一区二区三区| 精品无人区一区二区三区在线 | 秋霞鲁丝片一区二区三区| 亚洲熟女综合色一区二区三区| 无码精品人妻一区二区三区漫画| 无人码一区二区三区视频 | 国产91久久精品一区二区| 久久se精品一区二区| 日本亚洲国产一区二区三区| 国产精品自在拍一区二区不卡| 波多野结衣一区二区三区高清在线 | 国产丝袜视频一区二区三区 | 毛片一区二区三区无码| 亚洲综合av一区二区三区不卡| 人妻无码一区二区三区AV| 日韩人妻一区二区三区蜜桃视频 | 国产精品 视频一区 二区三区| 福利片免费一区二区三区| 国产vr一区二区在线观看| 日韩电影在线观看第一区| 国产亚洲一区二区三区在线不卡| 亚洲午夜福利AV一区二区无码| 97久久精品午夜一区二区| 国产日韩精品一区二区三区在线| 国产精品视频一区二区三区四 | 日本一区二区免费看| 少妇无码一区二区二三区| 国产一区在线mmai| 成人精品一区久久久久| 变态拳头交视频一区二区| 色老头在线一区二区三区 | 精品视频一区二区三区|