{"id":923,"date":"2024-04-16T16:08:29","date_gmt":"2024-04-16T07:08:29","guid":{"rendered":"https:\/\/elosove.com\/?p=923"},"modified":"2024-04-16T16:11:55","modified_gmt":"2024-04-16T07:11:55","slug":"%e7%84%a1%e6%96%99%e7%89%88davinchi-resolve%e3%81%a7%e5%ad%97%e5%b9%95%e7%94%9f%e6%88%90%e3%82%b7%e3%82%b9%e3%83%86%e3%83%a0%e3%82%92%e4%bd%9c%e3%82%8b-3-%e9%9f%b3%e5%a3%b0%e8%aa%8d%e8%ad%98","status":"publish","type":"post","link":"https:\/\/elosove.com\/?p=923","title":{"rendered":"\u7121\u6599\u7248Davinchi Resolve\u3067\u5b57\u5e55\u751f\u6210\u30b7\u30b9\u30c6\u30e0\u3092\u4f5c\u308b #3 | \u97f3\u58f0\u8a8d\u8b58\u51e6\u7406"},"content":{"rendered":"\n<p>\u7b2c\u4e09\u56de\u76ee\u3067\u3059\u3002\u6b21\u3067\u7d42\u308f\u308a\u306b\u3057\u305f\u3044\u2026<\/p>\n\n\n\n<p>[\u524d\u56de\uff1a<a href=\"https:\/\/elosove.com\/?p=917\">\u7121\u6599\u7248Davinchi Resolve\u3067\u5b57\u5e55\u751f\u6210\u30b7\u30b9\u30c6\u30e0\u3092\u4f5c\u308b #2 | GUI\u306eapi\u3092\u4f7f\u3046<\/a>]<\/p>\n\n\n\n<p>davinchi_voice_recognition.py\u3092\u5b9f\u88c5\u3057\u3066\u3044\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"546\" height=\"247\" src=\"https:\/\/elosove.com\/wp-content\/uploads\/2024\/04\/davinchi-auto-subtitle-system-part1.png\" alt=\"\" class=\"wp-image-921\" srcset=\"https:\/\/elosove.com\/wp-content\/uploads\/2024\/04\/davinchi-auto-subtitle-system-part1.png 546w, https:\/\/elosove.com\/wp-content\/uploads\/2024\/04\/davinchi-auto-subtitle-system-part1-300x136.png 300w\" sizes=\"auto, (max-width: 546px) 100vw, 546px\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_71 counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Table of Contents<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/elosove.com\/?p=923\/#davinchi_voice_recognitionpy\" title=\"davinchi_voice_recognition.py\">davinchi_voice_recognition.py<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/elosove.com\/?p=923\/#%E3%83%87%E3%83%BC%E3%82%BF%E3%81%AE%E5%8F%96%E5%BE%97\" title=\"\u30c7\u30fc\u30bf\u306e\u53d6\u5f97\">\u30c7\u30fc\u30bf\u306e\u53d6\u5f97<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/elosove.com\/?p=923\/#%E7%B4%A0%E6%9D%90%E3%81%AE%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AA%E3%83%B3%E3%82%B0%E3%83%AC%E3%83%BC%E3%83%88%E3%81%A8%E3%83%81%E3%83%A3%E3%83%B3%E3%83%8D%E3%83%AB%E3%82%92%E7%B5%B1%E4%B8%80\" title=\"\u7d20\u6750\u306e\u30b5\u30f3\u30d7\u30ea\u30f3\u30b0\u30ec\u30fc\u30c8\u3068\u30c1\u30e3\u30f3\u30cd\u30eb\u3092\u7d71\u4e00\">\u7d20\u6750\u306e\u30b5\u30f3\u30d7\u30ea\u30f3\u30b0\u30ec\u30fc\u30c8\u3068\u30c1\u30e3\u30f3\u30cd\u30eb\u3092\u7d71\u4e00<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/elosove.com\/?p=923\/#%E7%99%BA%E8%A9%B1%E5%8C%BA%E9%96%93%E5%88%A4%E5%AE%9A\" title=\"\u767a\u8a71\u533a\u9593\u5224\u5b9a\">\u767a\u8a71\u533a\u9593\u5224\u5b9a<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/elosove.com\/?p=923\/#%E9%9F%B3%E5%A3%B0%E8%AA%8D%E8%AD%98%E3%81%A8%E5%AD%97%E5%B9%95%E7%94%A8%E3%81%ABTL%E4%B8%8A%E3%81%AE%E6%9B%B8%E3%81%8D%E8%B5%B7%E3%81%93%E3%81%97%E6%99%82%E9%96%93%E3%82%92%E8%A8%88%E7%AE%97\" title=\"\u97f3\u58f0\u8a8d\u8b58\u3068\u5b57\u5e55\u7528\u306bTL\u4e0a\u306e\u66f8\u304d\u8d77\u3053\u3057\u6642\u9593\u3092\u8a08\u7b97\">\u97f3\u58f0\u8a8d\u8b58\u3068\u5b57\u5e55\u7528\u306bTL\u4e0a\u306e\u66f8\u304d\u8d77\u3053\u3057\u6642\u9593\u3092\u8a08\u7b97<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/elosove.com\/?p=923\/#%E3%82%B3%E3%83%BC%E3%83%89%E5%85%A8%E4%BD%93\" title=\"\u30b3\u30fc\u30c9\u5168\u4f53\">\u30b3\u30fc\u30c9\u5168\u4f53<\/a><\/li><\/ul><\/li><\/ul><\/nav><\/div>\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"davinchi_voice_recognitionpy\"><\/span>davinchi_voice_recognition.py<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>\u97f3\u58f0\u8a8d\u8b58\u306e\u51e6\u7406\u3092\u884c\u3046\u672c\u4f53\u3067\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E3%83%87%E3%83%BC%E3%82%BF%E3%81%AE%E5%8F%96%E5%BE%97\"><\/span>\u30c7\u30fc\u30bf\u306e\u53d6\u5f97<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>\u524d\u56de\u4f5c\u6210\u3057\u305fmy_auto_subtitle.py\u304b\u3089\u8f9e\u66f8\u578b\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u6587\u5b57\u5217\u306b\u3057\u3066\u5f15\u6570\u3092\u8cb0\u3046\u306e\u3067\u3001\u3053\u3053\u3067\u5143\u306b\u623b\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u30c7\u30fc\u30bf\u306b\u30d1\u30b9\u304c\u542b\u307e\u308c\u3066\u3044\u308b\u306e\u3067\u3001replace\u3067\u3044\u3044\u611f\u3058\u306b\u7f6e\u63db\u3057\u307e\u3059\u3002(OS\u306b\u3088\u308a\u9055\u3046\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u304c\u2026)<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#1E1E1E\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"receive_data = sys.argv[1]\nreceive_data = receive_data.replace('\\\\\\\\','\/\/')\ntl_data = json.loads(receive_data)\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D4D4D4\">receive_data = sys.argv[<\/span><span style=\"color: #B5CEA8\">1<\/span><span style=\"color: #D4D4D4\">]<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">receive_data = receive_data.replace(<\/span><span style=\"color: #CE9178\">&#39;<\/span><span style=\"color: #D7BA7D\">\\\\\\\\<\/span><span style=\"color: #CE9178\">&#39;<\/span><span style=\"color: #D4D4D4\">,<\/span><span style=\"color: #CE9178\">&#39;\/\/&#39;<\/span><span style=\"color: #D4D4D4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">tl_data = json.loads(receive_data)<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>\u3000<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E7%B4%A0%E6%9D%90%E3%81%AE%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AA%E3%83%B3%E3%82%B0%E3%83%AC%E3%83%BC%E3%83%88%E3%81%A8%E3%83%81%E3%83%A3%E3%83%B3%E3%83%8D%E3%83%AB%E3%82%92%E7%B5%B1%E4%B8%80\"><\/span>\u7d20\u6750\u306e\u30b5\u30f3\u30d7\u30ea\u30f3\u30b0\u30ec\u30fc\u30c8\u3068\u30c1\u30e3\u30f3\u30cd\u30eb\u3092\u7d71\u4e00<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>SileroVAD\u306e\u5236\u7d04\u306b\u3088\u308a\u3001\u97f3\u58f0\u7d20\u6750\u306e\u30d5\u30a1\u30a4\u30eb\u309216-bit PCM\/mono\u30c1\u30e3\u30f3\u30cd\u30eb\/16000Hz\u306b\u5909\u63db\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#1E1E1E\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"from pydub import AudioSegment\n# Parameters\nAUDIO_TIMELINE_PATH = '.\/result_data\/audio_timeline_data.csv'\nSAVE_PATH ='C:\/\/Users\/\/wapra\/\/Home\/\/workspace\/\/DaVinchiResolve\/\/voice_recognition\/\/result_data\/\/'\nBIT_FORMAT = 2 # Audio format (16-bit PCM)\nCHANNELS = 1 # Mono audio\nSAMPLING_RATE = 16000 # Sample rate\n\ndef transform_audio_for_speech_rec(file_path):\n    audio = AudioSegment.from_file(file_path)\n\n    # \u30c1\u30e3\u30f3\u30cd\u30eb\u6570\u304c2\u306e\u5834\u5408\u306f\u30e2\u30ce\u306b\u5909\u63db\n    ch = audio.channels\n    if ch != CHANNELS:\n        audio = audio.set_channels(CHANNELS)\n        print('change to mono audio')\n\n    # \u30b5\u30f3\u30d7\u30eb\u5e4516\u30d3\u30c3\u30c8\uff082\u30d0\u30a4\u30c8\uff09\u306b\u5909\u63db\n    sw = audio.sample_width\n    if sw != BIT_FORMAT:\n        audio = audio.set_sample_width(2)\n        print('change audio bit format')\n\n    # \u30b5\u30f3\u30d7\u30ea\u30f3\u30b0\u30ec\u30fc\u30c8\u306e\u4fee\u6b63\n    sr = audio.frame_rate\n    if sr != SAMPLING_RATE:\n        audio = audio.set_frame_rate(SAMPLING_RATE)\n        print('change sr')\n    \n    # for audio transform test\n    # audio.export(SAVE_PATH + '\/\/temp\/\/temp.wav', format='wav')\n    return audio\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #C586C0\">from<\/span><span style=\"color: #D4D4D4\"> pydub <\/span><span style=\"color: #C586C0\">import<\/span><span style=\"color: #D4D4D4\"> AudioSegment<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"># Parameters<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">AUDIO_TIMELINE_PATH = <\/span><span style=\"color: #CE9178\">&#39;.\/result_data\/audio_timeline_data.csv&#39;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">SAVE_PATH =<\/span><span style=\"color: #CE9178\">&#39;C:\/\/Users\/\/wapra\/\/Home\/\/workspace\/\/DaVinchiResolve\/\/voice_recognition\/\/result_data\/\/&#39;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">BIT_FORMAT = <\/span><span style=\"color: #B5CEA8\">2<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #6A9955\"># Audio format (16-bit PCM)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">CHANNELS = <\/span><span style=\"color: #B5CEA8\">1<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #6A9955\"># Mono audio<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">SAMPLING_RATE = <\/span><span style=\"color: #B5CEA8\">16000<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #6A9955\"># Sample rate<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">def<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">transform_audio_for_speech_rec<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">file_path<\/span><span style=\"color: #D4D4D4\">):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    audio = AudioSegment.from_file(file_path)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #6A9955\"># \u30c1\u30e3\u30f3\u30cd\u30eb\u6570\u304c2\u306e\u5834\u5408\u306f\u30e2\u30ce\u306b\u5909\u63db<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    ch = audio.channels<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #C586C0\">if<\/span><span style=\"color: #D4D4D4\"> ch != CHANNELS:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        audio = audio.set_channels(CHANNELS)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #DCDCAA\">print<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #CE9178\">&#39;change to mono audio&#39;<\/span><span style=\"color: #D4D4D4\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #6A9955\"># \u30b5\u30f3\u30d7\u30eb\u5e4516\u30d3\u30c3\u30c8\uff082\u30d0\u30a4\u30c8\uff09\u306b\u5909\u63db<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    sw = audio.sample_width<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #C586C0\">if<\/span><span style=\"color: #D4D4D4\"> sw != BIT_FORMAT:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        audio = audio.set_sample_width(<\/span><span style=\"color: #B5CEA8\">2<\/span><span style=\"color: #D4D4D4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #DCDCAA\">print<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #CE9178\">&#39;change audio bit format&#39;<\/span><span style=\"color: #D4D4D4\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #6A9955\"># \u30b5\u30f3\u30d7\u30ea\u30f3\u30b0\u30ec\u30fc\u30c8\u306e\u4fee\u6b63<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    sr = audio.frame_rate<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #C586C0\">if<\/span><span style=\"color: #D4D4D4\"> sr != SAMPLING_RATE:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        audio = audio.set_frame_rate(SAMPLING_RATE)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #DCDCAA\">print<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #CE9178\">&#39;change sr&#39;<\/span><span style=\"color: #D4D4D4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #6A9955\"># for audio transform test<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #6A9955\"># audio.export(SAVE_PATH + &#39;\/\/temp\/\/temp.wav&#39;, format=&#39;wav&#39;)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #C586C0\">return<\/span><span style=\"color: #D4D4D4\"> audio<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>\u3000<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E7%99%BA%E8%A9%B1%E5%8C%BA%E9%96%93%E5%88%A4%E5%AE%9A\"><\/span>\u767a\u8a71\u533a\u9593\u5224\u5b9a<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>\u53d6\u5f97\u3057\u305f\u97f3\u58f0\u30d5\u30a1\u30a4\u30eb\u3092pyTorch\u306e\u30c6\u30f3\u30bd\u30eb\u306b\u5909\u63db\u3057\u3001DaVinchi Resolve\u306eTL\u3067\u5207\u308a\u53d6\u3089\u308c\u305f\u90e8\u5206\u306e\u307f\u3092\u7d20\u6750\u304b\u3089\u629c\u304d\u51fa\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u629c\u304d\u51fa\u3057\u305f\u30c7\u30fc\u30bf\u3092SileroVAD\u3078\u6e21\u3057\u3066\u3001\u767a\u8a71\u533a\u9593\u306e\u30c7\u30fc\u30bf\u3092\u53d6\u5f97\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#1E1E1E\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"# \u767a\u8a71\u533a\u9593\u5224\u5b9a\ndef get_voice_activity_time(audio_tensor):\n    speech_timestamps = get_speech_timestamps(audio_tensor.float(), vad_model, sampling_rate=SAMPLING_RATE, threshold=0.4)\n\n    speech_sound_list = []\n    for idx,st in enumerate(speech_timestamps):\n        chunk = audio_tensor[int(st['start']) : int(st['end'])]\n        speech_sound_list.append(chunk)\n        # for sound data check\n        # save_audio(SAVE_PATH + str(idx)+'_save.wav', chunk)\n\n    return speech_sound_list, speech_timestamps\n\n# \u30aa\u30fc\u30c7\u30a3\u30aa\u30c7\u30fc\u30bf\u30d5\u30a9\u30fc\u30de\u30c3\u30c8\u5909\u63db\naudio = transform_audio_for_speech_rec(tl_data[idx]['file_path'])\n\n# \u30aa\u30fc\u30c7\u30a3\u30aa\u30c7\u30fc\u30bf\u3092NumPy\u914d\u5217\u306b\u5909\u63db\u3059\u308b\nsamples = np.array(audio.get_array_of_samples())\n\n# \u30c7\u30fc\u30bf\u3092int16\u306e\u307e\u307e\u30c6\u30f3\u30bd\u30eb\u306b\u5909\u63db\naudio_tensor = torch.from_numpy(samples).type(torch.int16)\n\n# davinchi resolve\u306eTL\u4e0a\u3067\u30af\u30ed\u30c3\u30d7\u3055\u308c\u305f\u90e8\u5206\u306e\u307f\u53d6\u308a\u51fa\u3057\naudio_start = int(tl_data[idx]['clip_start'] \/ tl_data[idx]['fps'] * SAMPLING_RATE)\naudio_end = int(tl_data[idx]['clip_end'] \/ tl_data[idx]['fps'] * SAMPLING_RATE)\naudio_tensor = audio_tensor[audio_start : audio_end]\n\n# \u767a\u8a71\u533a\u9593\u306e\u30c1\u30a7\u30c3\u30af\nspeech_sound_list, speech_timestamps = get_voice_activity_time(audio_tensor)\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6A9955\"># \u767a\u8a71\u533a\u9593\u5224\u5b9a<\/span><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">def<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">get_voice_activity_time<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">audio_tensor<\/span><span style=\"color: #D4D4D4\">):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    speech_timestamps = get_speech_timestamps(audio_tensor.float(), vad_model, <\/span><span style=\"color: #9CDCFE\">sampling_rate<\/span><span style=\"color: #D4D4D4\">=SAMPLING_RATE, <\/span><span style=\"color: #9CDCFE\">threshold<\/span><span style=\"color: #D4D4D4\">=<\/span><span style=\"color: #B5CEA8\">0.4<\/span><span style=\"color: #D4D4D4\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    speech_sound_list = []<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #C586C0\">for<\/span><span style=\"color: #D4D4D4\"> idx,st <\/span><span style=\"color: #C586C0\">in<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">enumerate<\/span><span style=\"color: #D4D4D4\">(speech_timestamps):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        chunk = audio_tensor[<\/span><span style=\"color: #4EC9B0\">int<\/span><span style=\"color: #D4D4D4\">(st[<\/span><span style=\"color: #CE9178\">&#39;start&#39;<\/span><span style=\"color: #D4D4D4\">]) : <\/span><span style=\"color: #4EC9B0\">int<\/span><span style=\"color: #D4D4D4\">(st[<\/span><span style=\"color: #CE9178\">&#39;end&#39;<\/span><span style=\"color: #D4D4D4\">])]<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        speech_sound_list.append(chunk)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #6A9955\"># for sound data check<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #6A9955\"># save_audio(SAVE_PATH + str(idx)+&#39;_save.wav&#39;, chunk)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #C586C0\">return<\/span><span style=\"color: #D4D4D4\"> speech_sound_list, speech_timestamps<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"># \u30aa\u30fc\u30c7\u30a3\u30aa\u30c7\u30fc\u30bf\u30d5\u30a9\u30fc\u30de\u30c3\u30c8\u5909\u63db<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">audio = transform_audio_for_speech_rec(tl_data[idx][<\/span><span style=\"color: #CE9178\">&#39;file_path&#39;<\/span><span style=\"color: #D4D4D4\">])<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"># \u30aa\u30fc\u30c7\u30a3\u30aa\u30c7\u30fc\u30bf\u3092NumPy\u914d\u5217\u306b\u5909\u63db\u3059\u308b<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">samples = np.array(audio.get_array_of_samples())<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"># \u30c7\u30fc\u30bf\u3092int16\u306e\u307e\u307e\u30c6\u30f3\u30bd\u30eb\u306b\u5909\u63db<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">audio_tensor = torch.from_numpy(samples).type(torch.int16)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"># davinchi resolve\u306eTL\u4e0a\u3067\u30af\u30ed\u30c3\u30d7\u3055\u308c\u305f\u90e8\u5206\u306e\u307f\u53d6\u308a\u51fa\u3057<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">audio_start = <\/span><span style=\"color: #4EC9B0\">int<\/span><span style=\"color: #D4D4D4\">(tl_data[idx][<\/span><span style=\"color: #CE9178\">&#39;clip_start&#39;<\/span><span style=\"color: #D4D4D4\">] \/ tl_data[idx][<\/span><span style=\"color: #CE9178\">&#39;fps&#39;<\/span><span style=\"color: #D4D4D4\">] * SAMPLING_RATE)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">audio_end = <\/span><span style=\"color: #4EC9B0\">int<\/span><span style=\"color: #D4D4D4\">(tl_data[idx][<\/span><span style=\"color: #CE9178\">&#39;clip_end&#39;<\/span><span style=\"color: #D4D4D4\">] \/ tl_data[idx][<\/span><span style=\"color: #CE9178\">&#39;fps&#39;<\/span><span style=\"color: #D4D4D4\">] * SAMPLING_RATE)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">audio_tensor = audio_tensor[audio_start : audio_end]<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"># \u767a\u8a71\u533a\u9593\u306e\u30c1\u30a7\u30c3\u30af<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">speech_sound_list, speech_timestamps = get_voice_activity_time(audio_tensor)<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>\u3000<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E9%9F%B3%E5%A3%B0%E8%AA%8D%E8%AD%98%E3%81%A8%E5%AD%97%E5%B9%95%E7%94%A8%E3%81%ABTL%E4%B8%8A%E3%81%AE%E6%9B%B8%E3%81%8D%E8%B5%B7%E3%81%93%E3%81%97%E6%99%82%E9%96%93%E3%82%92%E8%A8%88%E7%AE%97\"><\/span>\u97f3\u58f0\u8a8d\u8b58\u3068\u5b57\u5e55\u7528\u306bTL\u4e0a\u306e\u66f8\u304d\u8d77\u3053\u3057\u6642\u9593\u3092\u8a08\u7b97<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>\u97f3\u58f0\u8a8d\u8b58\u306f\u767a\u8a71\u533a\u9593\u306e\u307f\u3067\u5207\u308a\u53d6\u3063\u305f\u97f3\u58f0\u30c7\u30fc\u30bf\u3092transcribe\u95a2\u6570\u306b\u5165\u308c\u308b\u3060\u3051\u3002<\/p>\n\n\n\n<p>\u5f8c\u306f\u5b57\u5e55\u633f\u5165\u306e\u70ba\u306b\u3001\u767a\u8a71\u958b\u59cb\u6642\u523b\u3068\u767a\u8a71\u6642\u9593\u306e\u9577\u3055\u3092\u3072\u305f\u3059\u3089\u8a08\u7b97\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u3053\u306e\u30d5\u30a1\u30a4\u30eb\u306e\u6700\u5f8c\u306bresult_data\u306e\u4e2d\u8eab\u3092\u30d5\u30a1\u30a4\u30eb\u3078\u5410\u304d\u51fa\u3057\u3066\u5b8c\u4e86\u3067\u3059\u3002<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#1E1E1E\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"for speech_sound, speech_time in zip(speech_sound_list, speech_timestamps):\n            audio = audio_from_tensor(speech_sound, SAMPLING_RATE)\n            subtitle = transcribe(recognision_model, audio).text\n            print(subtitle)\n\n            # \u767a\u8a00\u6642\u9593\u306e\u8a08\u7b97\n            speech_start_frame = int(tl_data[idx]['tl_position_start']) + int((speech_time['start']\/SAMPLING_RATE)*tl_data[idx]['fps'])\n            speech_duration = (speech_time['end'] - speech_time['start'])\/SAMPLING_RATE\n\n            result_data.append(str(speech_start_frame) + ',' + str(speech_duration) + ',' + subtitle)\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #C586C0\">for<\/span><span style=\"color: #D4D4D4\"> speech_sound, speech_time <\/span><span style=\"color: #C586C0\">in<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">zip<\/span><span style=\"color: #D4D4D4\">(speech_sound_list, speech_timestamps):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            audio = audio_from_tensor(speech_sound, SAMPLING_RATE)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            subtitle = transcribe(recognision_model, audio).text<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            <\/span><span style=\"color: #DCDCAA\">print<\/span><span style=\"color: #D4D4D4\">(subtitle)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            <\/span><span style=\"color: #6A9955\"># \u767a\u8a00\u6642\u9593\u306e\u8a08\u7b97<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            speech_start_frame = <\/span><span style=\"color: #4EC9B0\">int<\/span><span style=\"color: #D4D4D4\">(tl_data[idx][<\/span><span style=\"color: #CE9178\">&#39;tl_position_start&#39;<\/span><span style=\"color: #D4D4D4\">]) + <\/span><span style=\"color: #4EC9B0\">int<\/span><span style=\"color: #D4D4D4\">((speech_time[<\/span><span style=\"color: #CE9178\">&#39;start&#39;<\/span><span style=\"color: #D4D4D4\">]\/SAMPLING_RATE)*tl_data[idx][<\/span><span style=\"color: #CE9178\">&#39;fps&#39;<\/span><span style=\"color: #D4D4D4\">])<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            speech_duration = (speech_time[<\/span><span style=\"color: #CE9178\">&#39;end&#39;<\/span><span style=\"color: #D4D4D4\">] - speech_time[<\/span><span style=\"color: #CE9178\">&#39;start&#39;<\/span><span style=\"color: #D4D4D4\">])\/SAMPLING_RATE<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            result_data.append(<\/span><span style=\"color: #4EC9B0\">str<\/span><span style=\"color: #D4D4D4\">(speech_start_frame) + <\/span><span style=\"color: #CE9178\">&#39;,&#39;<\/span><span style=\"color: #D4D4D4\"> + <\/span><span style=\"color: #4EC9B0\">str<\/span><span style=\"color: #D4D4D4\">(speech_duration) + <\/span><span style=\"color: #CE9178\">&#39;,&#39;<\/span><span style=\"color: #D4D4D4\"> + subtitle)<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>\u3000<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E3%82%B3%E3%83%BC%E3%83%89%E5%85%A8%E4%BD%93\"><\/span>\u30b3\u30fc\u30c9\u5168\u4f53<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#1E1E1E\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"import os\nimport sys\nimport glob\nimport json\nimport csv\nimport torch\nimport numpy as np\nfrom pydub import AudioSegment\n\nprint('loading voice recognition model')\n# for ReazonSpeech\nsys.path.append('\u3053\u306e\u30b9\u30af\u30ea\u30d7\u30c8\u306e\u3042\u308b\u4f5c\u696d\u30c7\u30a3\u30ec\u30af\u30c8\u30ea')\nfrom reazonspeech.nemo.asr import load_model, transcribe, audio_from_tensor\nfrom nemo.collections.asr.models import EncDecRNNTBPEModel\nrecognision_model = load_model(device='cuda')\n\n# for silero vad\nvad_model_dir = '\u30e2\u30c7\u30eb\u306e\u4fdd\u5b58\u5834\u6240'\nfrom utils_vad import (init_jit_model,\n                    get_speech_timestamps,\n                    save_audio,\n                    collect_chunks)\nvad_model = init_jit_model(os.path.join(vad_model_dir, 'silero_vad.jit'))\nprint('finish loading modules')\n\n\n# Parameters\nSAVE_PATH ='\u97f3\u58f0\u8a8d\u8b58\u7d50\u679c\u306e\u4fdd\u5b58\u30c7\u30a3\u30ec\u30af\u30c8\u30ea'\nBIT_FORMAT = 2 # Audio format (16-bit PCM)\nCHANNELS = 1 # Mono audio\nSAMPLING_RATE = 16000 # Sample rate\n\ndef transform_audio_for_speech_rec(file_path):\n    audio = AudioSegment.from_file(file_path)\n\n    # \u30c1\u30e3\u30f3\u30cd\u30eb\u6570\u304c2\u306e\u5834\u5408\u306f\u30e2\u30ce\u306b\u5909\u63db\n    ch = audio.channels\n    if ch != CHANNELS:\n        audio = audio.set_channels(CHANNELS)\n        print('change to mono audio')\n\n    # \u30b5\u30f3\u30d7\u30eb\u5e4516\u30d3\u30c3\u30c8\uff082\u30d0\u30a4\u30c8\uff09\u306b\u5909\u63db\n    sw = audio.sample_width\n    if sw != BIT_FORMAT:\n        audio = audio.set_sample_width(2)\n        print('change audio bit format')\n\n    # \u30b5\u30f3\u30d7\u30ea\u30f3\u30b0\u30ec\u30fc\u30c8\u306e\u4fee\u6b63\n    sr = audio.frame_rate\n    if sr != SAMPLING_RATE:\n        audio = audio.set_frame_rate(SAMPLING_RATE)\n        print('change sr')\n    \n    return audio\n\ndef get_voice_activity_time(audio_tensor):\n    speech_timestamps = get_speech_timestamps(audio_tensor.float(), vad_model, sampling_rate=SAMPLING_RATE, threshold=0.4)\n\n    speech_sound_list = []\n    for idx,st in enumerate(speech_timestamps):\n        chunk = audio_tensor[int(st['start']) : int(st['end'])]\n        speech_sound_list.append(chunk)\n\n    return speech_sound_list, speech_timestamps\n  \ndef main():\n    receive_data = sys.argv[1]\n    receive_data = receive_data.replace('\\\\\\\\','\/\/')\n    tl_data = json.loads(receive_data)\n\n    # \u97f3\u58f0\u8a8d\u8b58\u7d50\u679c\u306e\u4fdd\u5b58\u7528\u5909\u6570\n    result_data = []\n    result_data.append('speech start time, speech duration, speech 2 txt')\n\n    for idx in tl_data.keys():\n        # \u30aa\u30fc\u30c7\u30a3\u30aa\u30c7\u30fc\u30bf\u30d5\u30a9\u30fc\u30de\u30c3\u30c8\u5909\u63db\n        audio = transform_audio_for_speech_rec(tl_data[idx]['file_path'])\n        \n        # \u30aa\u30fc\u30c7\u30a3\u30aa\u30c7\u30fc\u30bf\u3092NumPy\u914d\u5217\u306b\u5909\u63db\u3059\u308b\n        samples = np.array(audio.get_array_of_samples())\n        \n        # \u30c7\u30fc\u30bf\u3092int16\u306e\u307e\u307e\u30c6\u30f3\u30bd\u30eb\u306b\u5909\u63db\n        audio_tensor = torch.from_numpy(samples).type(torch.int16)\n\n        # davinchi resolve\u306eTL\u4e0a\u3067\u30af\u30ed\u30c3\u30d7\u3055\u308c\u305f\u90e8\u5206\u306e\u307f\u53d6\u308a\u51fa\u3057\n        audio_start = int(tl_data[idx]['clip_start'] \/ tl_data[idx]['fps'] * SAMPLING_RATE)\n        audio_end = int(tl_data[idx]['clip_end'] \/ tl_data[idx]['fps'] * SAMPLING_RATE)\n        audio_tensor = audio_tensor[audio_start : audio_end]\n\n        # \u767a\u8a71\u533a\u9593\u306e\u30c1\u30a7\u30c3\u30af\n        speech_sound_list, speech_timestamps = get_voice_activity_time(audio_tensor)\n\n        for speech_sound, speech_time in zip(speech_sound_list, speech_timestamps):\n            audio = audio_from_tensor(speech_sound, SAMPLING_RATE)\n            subtitle = transcribe(recognision_model, audio).text\n            print(subtitle)\n\n            # \u767a\u8a00\u6642\u9593\u306e\u8a08\u7b97\n            speech_start_frame = int(tl_data[idx]['tl_position_start']) + int((speech_time['start']\/SAMPLING_RATE)*tl_data[idx]['fps'])\n            speech_duration = (speech_time['end'] - speech_time['start'])\/SAMPLING_RATE\n\n            result_data.append(str(speech_start_frame) + ',' + str(speech_duration) + ',' + subtitle)\n    \n    # \u7d50\u679c\u4fdd\u5b58\n    with open(SAVE_PATH + &quot;voice-recognition-result.txt&quot;, &quot;w&quot;, encoding='utf-8') as f:\n        for data in result_data:\n            f.write(data + &quot;\\n&quot;)\n\nmain()\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #C586C0\">import<\/span><span style=\"color: #D4D4D4\"> os<\/span><\/span>\n<span class=\"line\"><span style=\"color: #C586C0\">import<\/span><span style=\"color: #D4D4D4\"> sys<\/span><\/span>\n<span class=\"line\"><span style=\"color: #C586C0\">import<\/span><span style=\"color: #D4D4D4\"> glob<\/span><\/span>\n<span class=\"line\"><span style=\"color: #C586C0\">import<\/span><span style=\"color: #D4D4D4\"> json<\/span><\/span>\n<span class=\"line\"><span style=\"color: #C586C0\">import<\/span><span style=\"color: #D4D4D4\"> csv<\/span><\/span>\n<span class=\"line\"><span style=\"color: #C586C0\">import<\/span><span style=\"color: #D4D4D4\"> torch<\/span><\/span>\n<span class=\"line\"><span style=\"color: #C586C0\">import<\/span><span style=\"color: #D4D4D4\"> numpy <\/span><span style=\"color: #C586C0\">as<\/span><span style=\"color: #D4D4D4\"> np<\/span><\/span>\n<span class=\"line\"><span style=\"color: #C586C0\">from<\/span><span style=\"color: #D4D4D4\"> pydub <\/span><span style=\"color: #C586C0\">import<\/span><span style=\"color: #D4D4D4\"> AudioSegment<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">print<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #CE9178\">&#39;loading voice recognition model&#39;<\/span><span style=\"color: #D4D4D4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"># for ReazonSpeech<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">sys.path.append(<\/span><span style=\"color: #CE9178\">&#39;\u3053\u306e\u30b9\u30af\u30ea\u30d7\u30c8\u306e\u3042\u308b\u4f5c\u696d\u30c7\u30a3\u30ec\u30af\u30c8\u30ea&#39;<\/span><span style=\"color: #D4D4D4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #C586C0\">from<\/span><span style=\"color: #D4D4D4\"> reazonspeech.nemo.asr <\/span><span style=\"color: #C586C0\">import<\/span><span style=\"color: #D4D4D4\"> load_model, transcribe, audio_from_tensor<\/span><\/span>\n<span class=\"line\"><span style=\"color: #C586C0\">from<\/span><span style=\"color: #D4D4D4\"> nemo.collections.asr.models <\/span><span style=\"color: #C586C0\">import<\/span><span style=\"color: #D4D4D4\"> EncDecRNNTBPEModel<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">recognision_model = load_model(<\/span><span style=\"color: #9CDCFE\">device<\/span><span style=\"color: #D4D4D4\">=<\/span><span style=\"color: #CE9178\">&#39;cuda&#39;<\/span><span style=\"color: #D4D4D4\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"># for silero vad<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">vad_model_dir = <\/span><span style=\"color: #CE9178\">&#39;\u30e2\u30c7\u30eb\u306e\u4fdd\u5b58\u5834\u6240&#39;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #C586C0\">from<\/span><span style=\"color: #D4D4D4\"> utils_vad <\/span><span style=\"color: #C586C0\">import<\/span><span style=\"color: #D4D4D4\"> (init_jit_model,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                    get_speech_timestamps,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                    save_audio,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                    collect_chunks)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">vad_model = init_jit_model(os.path.join(vad_model_dir, <\/span><span style=\"color: #CE9178\">&#39;silero_vad.jit&#39;<\/span><span style=\"color: #D4D4D4\">))<\/span><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">print<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #CE9178\">&#39;finish loading modules&#39;<\/span><span style=\"color: #D4D4D4\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"># Parameters<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">SAVE_PATH =<\/span><span style=\"color: #CE9178\">&#39;\u97f3\u58f0\u8a8d\u8b58\u7d50\u679c\u306e\u4fdd\u5b58\u30c7\u30a3\u30ec\u30af\u30c8\u30ea&#39;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">BIT_FORMAT = <\/span><span style=\"color: #B5CEA8\">2<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #6A9955\"># Audio format (16-bit PCM)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">CHANNELS = <\/span><span style=\"color: #B5CEA8\">1<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #6A9955\"># Mono audio<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">SAMPLING_RATE = <\/span><span style=\"color: #B5CEA8\">16000<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #6A9955\"># Sample rate<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">def<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">transform_audio_for_speech_rec<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">file_path<\/span><span style=\"color: #D4D4D4\">):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    audio = AudioSegment.from_file(file_path)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #6A9955\"># \u30c1\u30e3\u30f3\u30cd\u30eb\u6570\u304c2\u306e\u5834\u5408\u306f\u30e2\u30ce\u306b\u5909\u63db<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    ch = audio.channels<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #C586C0\">if<\/span><span style=\"color: #D4D4D4\"> ch != CHANNELS:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        audio = audio.set_channels(CHANNELS)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #DCDCAA\">print<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #CE9178\">&#39;change to mono audio&#39;<\/span><span style=\"color: #D4D4D4\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #6A9955\"># \u30b5\u30f3\u30d7\u30eb\u5e4516\u30d3\u30c3\u30c8\uff082\u30d0\u30a4\u30c8\uff09\u306b\u5909\u63db<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    sw = audio.sample_width<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #C586C0\">if<\/span><span style=\"color: #D4D4D4\"> sw != BIT_FORMAT:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        audio = audio.set_sample_width(<\/span><span style=\"color: #B5CEA8\">2<\/span><span style=\"color: #D4D4D4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #DCDCAA\">print<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #CE9178\">&#39;change audio bit format&#39;<\/span><span style=\"color: #D4D4D4\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #6A9955\"># \u30b5\u30f3\u30d7\u30ea\u30f3\u30b0\u30ec\u30fc\u30c8\u306e\u4fee\u6b63<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    sr = audio.frame_rate<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #C586C0\">if<\/span><span style=\"color: #D4D4D4\"> sr != SAMPLING_RATE:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        audio = audio.set_frame_rate(SAMPLING_RATE)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #DCDCAA\">print<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #CE9178\">&#39;change sr&#39;<\/span><span style=\"color: #D4D4D4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #C586C0\">return<\/span><span style=\"color: #D4D4D4\"> audio<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">def<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">get_voice_activity_time<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">audio_tensor<\/span><span style=\"color: #D4D4D4\">):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    speech_timestamps = get_speech_timestamps(audio_tensor.float(), vad_model, <\/span><span style=\"color: #9CDCFE\">sampling_rate<\/span><span style=\"color: #D4D4D4\">=SAMPLING_RATE, <\/span><span style=\"color: #9CDCFE\">threshold<\/span><span style=\"color: #D4D4D4\">=<\/span><span style=\"color: #B5CEA8\">0.4<\/span><span style=\"color: #D4D4D4\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    speech_sound_list = []<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #C586C0\">for<\/span><span style=\"color: #D4D4D4\"> idx,st <\/span><span style=\"color: #C586C0\">in<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">enumerate<\/span><span style=\"color: #D4D4D4\">(speech_timestamps):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        chunk = audio_tensor[<\/span><span style=\"color: #4EC9B0\">int<\/span><span style=\"color: #D4D4D4\">(st[<\/span><span style=\"color: #CE9178\">&#39;start&#39;<\/span><span style=\"color: #D4D4D4\">]) : <\/span><span style=\"color: #4EC9B0\">int<\/span><span style=\"color: #D4D4D4\">(st[<\/span><span style=\"color: #CE9178\">&#39;end&#39;<\/span><span style=\"color: #D4D4D4\">])]<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        speech_sound_list.append(chunk)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #C586C0\">return<\/span><span style=\"color: #D4D4D4\"> speech_sound_list, speech_timestamps<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">  <\/span><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">def<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">main<\/span><span style=\"color: #D4D4D4\">():<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    receive_data = sys.argv[<\/span><span style=\"color: #B5CEA8\">1<\/span><span style=\"color: #D4D4D4\">]<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    receive_data = receive_data.replace(<\/span><span style=\"color: #CE9178\">&#39;<\/span><span style=\"color: #D7BA7D\">\\\\\\\\<\/span><span style=\"color: #CE9178\">&#39;<\/span><span style=\"color: #D4D4D4\">,<\/span><span style=\"color: #CE9178\">&#39;\/\/&#39;<\/span><span style=\"color: #D4D4D4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    tl_data = json.loads(receive_data)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #6A9955\"># \u97f3\u58f0\u8a8d\u8b58\u7d50\u679c\u306e\u4fdd\u5b58\u7528\u5909\u6570<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    result_data = []<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    result_data.append(<\/span><span style=\"color: #CE9178\">&#39;speech start time, speech duration, speech 2 txt&#39;<\/span><span style=\"color: #D4D4D4\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #C586C0\">for<\/span><span style=\"color: #D4D4D4\"> idx <\/span><span style=\"color: #C586C0\">in<\/span><span style=\"color: #D4D4D4\"> tl_data.keys():<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #6A9955\"># \u30aa\u30fc\u30c7\u30a3\u30aa\u30c7\u30fc\u30bf\u30d5\u30a9\u30fc\u30de\u30c3\u30c8\u5909\u63db<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        audio = transform_audio_for_speech_rec(tl_data[idx][<\/span><span style=\"color: #CE9178\">&#39;file_path&#39;<\/span><span style=\"color: #D4D4D4\">])<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #6A9955\"># \u30aa\u30fc\u30c7\u30a3\u30aa\u30c7\u30fc\u30bf\u3092NumPy\u914d\u5217\u306b\u5909\u63db\u3059\u308b<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        samples = np.array(audio.get_array_of_samples())<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #6A9955\"># \u30c7\u30fc\u30bf\u3092int16\u306e\u307e\u307e\u30c6\u30f3\u30bd\u30eb\u306b\u5909\u63db<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        audio_tensor = torch.from_numpy(samples).type(torch.int16)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #6A9955\"># davinchi resolve\u306eTL\u4e0a\u3067\u30af\u30ed\u30c3\u30d7\u3055\u308c\u305f\u90e8\u5206\u306e\u307f\u53d6\u308a\u51fa\u3057<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        audio_start = <\/span><span style=\"color: #4EC9B0\">int<\/span><span style=\"color: #D4D4D4\">(tl_data[idx][<\/span><span style=\"color: #CE9178\">&#39;clip_start&#39;<\/span><span style=\"color: #D4D4D4\">] \/ tl_data[idx][<\/span><span style=\"color: #CE9178\">&#39;fps&#39;<\/span><span style=\"color: #D4D4D4\">] * SAMPLING_RATE)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        audio_end = <\/span><span style=\"color: #4EC9B0\">int<\/span><span style=\"color: #D4D4D4\">(tl_data[idx][<\/span><span style=\"color: #CE9178\">&#39;clip_end&#39;<\/span><span style=\"color: #D4D4D4\">] \/ tl_data[idx][<\/span><span style=\"color: #CE9178\">&#39;fps&#39;<\/span><span style=\"color: #D4D4D4\">] * SAMPLING_RATE)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        audio_tensor = audio_tensor[audio_start : audio_end]<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #6A9955\"># \u767a\u8a71\u533a\u9593\u306e\u30c1\u30a7\u30c3\u30af<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        speech_sound_list, speech_timestamps = get_voice_activity_time(audio_tensor)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #C586C0\">for<\/span><span style=\"color: #D4D4D4\"> speech_sound, speech_time <\/span><span style=\"color: #C586C0\">in<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">zip<\/span><span style=\"color: #D4D4D4\">(speech_sound_list, speech_timestamps):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            audio = audio_from_tensor(speech_sound, SAMPLING_RATE)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            subtitle = transcribe(recognision_model, audio).text<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            <\/span><span style=\"color: #DCDCAA\">print<\/span><span style=\"color: #D4D4D4\">(subtitle)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            <\/span><span style=\"color: #6A9955\"># \u767a\u8a00\u6642\u9593\u306e\u8a08\u7b97<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            speech_start_frame = <\/span><span style=\"color: #4EC9B0\">int<\/span><span style=\"color: #D4D4D4\">(tl_data[idx][<\/span><span style=\"color: #CE9178\">&#39;tl_position_start&#39;<\/span><span style=\"color: #D4D4D4\">]) + <\/span><span style=\"color: #4EC9B0\">int<\/span><span style=\"color: #D4D4D4\">((speech_time[<\/span><span style=\"color: #CE9178\">&#39;start&#39;<\/span><span style=\"color: #D4D4D4\">]\/SAMPLING_RATE)*tl_data[idx][<\/span><span style=\"color: #CE9178\">&#39;fps&#39;<\/span><span style=\"color: #D4D4D4\">])<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            speech_duration = (speech_time[<\/span><span style=\"color: #CE9178\">&#39;end&#39;<\/span><span style=\"color: #D4D4D4\">] - speech_time[<\/span><span style=\"color: #CE9178\">&#39;start&#39;<\/span><span style=\"color: #D4D4D4\">])\/SAMPLING_RATE<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            result_data.append(<\/span><span style=\"color: #4EC9B0\">str<\/span><span style=\"color: #D4D4D4\">(speech_start_frame) + <\/span><span style=\"color: #CE9178\">&#39;,&#39;<\/span><span style=\"color: #D4D4D4\"> + <\/span><span style=\"color: #4EC9B0\">str<\/span><span style=\"color: #D4D4D4\">(speech_duration) + <\/span><span style=\"color: #CE9178\">&#39;,&#39;<\/span><span style=\"color: #D4D4D4\"> + subtitle)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #6A9955\"># \u7d50\u679c\u4fdd\u5b58<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #C586C0\">with<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">open<\/span><span style=\"color: #D4D4D4\">(SAVE_PATH + <\/span><span style=\"color: #CE9178\">&quot;voice-recognition-result.txt&quot;<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #CE9178\">&quot;w&quot;<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #9CDCFE\">encoding<\/span><span style=\"color: #D4D4D4\">=<\/span><span style=\"color: #CE9178\">&#39;utf-8&#39;<\/span><span style=\"color: #D4D4D4\">) <\/span><span style=\"color: #C586C0\">as<\/span><span style=\"color: #D4D4D4\"> f:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #C586C0\">for<\/span><span style=\"color: #D4D4D4\"> data <\/span><span style=\"color: #C586C0\">in<\/span><span style=\"color: #D4D4D4\"> result_data:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            f.write(data + <\/span><span style=\"color: #CE9178\">&quot;<\/span><span style=\"color: #D7BA7D\">\\n<\/span><span style=\"color: #CE9178\">&quot;<\/span><span style=\"color: #D4D4D4\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">main()<\/span><\/span><\/code><\/pre><\/div>\n","protected":false},"excerpt":{"rendered":"<p>\u7b2c\u4e09\u56de\u76ee\u3067\u3059\u3002\u6b21\u3067\u7d42\u308f\u308a\u306b\u3057\u305f\u3044\u2026 [\u524d\u56de\uff1a\u7121\u6599\u7248Davinchi Resolve\u3067\u5b57\u5e55\u751f\u6210\u30b7\u30b9\u30c6\u30e0\u3092\u4f5c\u308b #2 | GUI\u306eapi\u3092\u4f7f\u3046] davinchi_voice_recognition.py\u3092\u5b9f\u88c5\u3057\u3066\u3044\u304d\u307e\u3059\u3002 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":915,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[20,29,27],"class_list":["post-923","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-tech","tag-davinci-resolve","tag-reazonspeech","tag-silerovad"],"_links":{"self":[{"href":"https:\/\/elosove.com\/index.php?rest_route=\/wp\/v2\/posts\/923","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/elosove.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/elosove.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/elosove.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/elosove.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=923"}],"version-history":[{"count":8,"href":"https:\/\/elosove.com\/index.php?rest_route=\/wp\/v2\/posts\/923\/revisions"}],"predecessor-version":[{"id":941,"href":"https:\/\/elosove.com\/index.php?rest_route=\/wp\/v2\/posts\/923\/revisions\/941"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/elosove.com\/index.php?rest_route=\/wp\/v2\/media\/915"}],"wp:attachment":[{"href":"https:\/\/elosove.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=923"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/elosove.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=923"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/elosove.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=923"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}