{"id":83,"date":"2026-02-15T09:00:00","date_gmt":"2026-02-15T00:00:00","guid":{"rendered":"https:\/\/classlab.co.jp\/engineer\/blog\/?p=83"},"modified":"2026-04-08T17:52:28","modified_gmt":"2026-04-08T08:52:28","slug":"speech-emotion-analysis-pipeline","status":"publish","type":"post","link":"https:\/\/classlab.co.jp\/engineer\/blog\/speech-emotion-analysis-pipeline\/","title":{"rendered":"\u901a\u8a71\u9332\u97f3\u306e\u5168\u4ef6\u6587\u5b57\u8d77\u3053\u3057\u3067QA\u30ec\u30d3\u30e5\u30fc\u5de5\u6570\u309280%\u524a\u6e1b\u3057\u305f\u8a71"},"content":{"rendered":"\n<blockquote class=\"is-layout-flow wp-block-quote-is-layout-flow\">\n<p>ClassLab Engineering \u306e Dev \u30c1\u30fc\u30e0\u30e1\u30f3\u30d0\u30fc\u304c\u57f7\u7b46\u3057\u307e\u3057\u305f\u3002<\/p>\n<\/blockquote>\n\n\n\n<p>\u30b3\u30fc\u30eb\u30bb\u30f3\u30bf\u30fc\u306eQA\uff08\u54c1\u8cea\u7ba1\u7406\uff09\u3067\u3001\u3053\u3093\u306a\u8ab2\u984c\u3092\u62b1\u3048\u3066\u3044\u307e\u305b\u3093\u304b\uff1f<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u901a\u8a71\u9332\u97f3\u3092<strong>1\u4ef6\u305a\u3064\u4eba\u304c\u8074\u3044\u3066<\/strong>\u54c1\u8cea\u30c1\u30a7\u30c3\u30af\u3057\u3066\u3044\u308b<\/li>\n<li>\u5168\u901a\u8a71\u306e<strong>10%\u3057\u304b\u30c1\u30a7\u30c3\u30af\u3067\u304d\u305a<\/strong>\u3001\u6b8b\u308a90%\u306f\u30ce\u30fc\u30c1\u30a7\u30c3\u30af\u3067\u6d41\u308c\u3066\u3044\u308b<\/li>\n<li>\u30c1\u30a7\u30c3\u30af\u57fa\u6e96\u304c<strong>\u5c5e\u4eba\u7684<\/strong>\u3067\u3001\u62c5\u5f53\u8005\u306b\u3088\u3063\u3066\u8a55\u4fa1\u304c\u5272\u308c\u308b<\/li>\n<\/ul>\n\n\n\n<p>\u79c1\u305f\u3061ClassLab\u306f\u3001\u5e74\u959315\u4e07\u4ef6\u306e\u901a\u8a71\u3092\u6271\u3046\u30b3\u30fc\u30eb\u30bb\u30f3\u30bf\u30fc\u3092\u904b\u55b6\u3057\u3066\u3044\u307e\u3059\u3002\u3053\u306e\u8a18\u4e8b\u3067\u306f\u3001\u901a\u8a71\u9332\u97f3\u3092OpenAI\u306e<code>gpt-4o-transcribe<\/code>\u3067\u5168\u4ef6\u81ea\u52d5\u6587\u5b57\u8d77\u3053\u3057\u3057\u3001<strong>QA\u30ec\u30d3\u30e5\u30fc\u3092\u300c\u8074\u304f\u300d\u304b\u3089\u300c\u8aad\u3080\u300d\u306b\u5909\u3048\u3066\u5de5\u657080%\u524a\u6e1b<\/strong>\u3057\u305f\u8a2d\u8a08\u3068\u5b9f\u88c5\u3092\u516c\u958b\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">1. \u80cc\u666f \u2014 \u306a\u305c\u5168\u4ef6\u6587\u5b57\u8d77\u3053\u3057\u304c\u5fc5\u8981\u3060\u3063\u305f\u304b<\/h2>\n\n\n\n<p>ClassLab\u306f\u30e9\u30a4\u30d5\u30e9\u30a4\u30f3\uff08\u96fb\u6c17\u30fb\u30ac\u30b9\uff09\u306e\u53d6\u6b21\u4e8b\u696d\u3092\u5c55\u958b\u3057\u3066\u304a\u308a\u3001\u30b3\u30fc\u30eb\u30bb\u30f3\u30bf\u30fc\u3067\u306f\u6bce\u65e5\u6570\u767e\u4ef6\u306e\u901a\u8a71\u304c\u767a\u751f\u3057\u307e\u3059\u3002\u54c1\u8cea\u7ba1\u7406\u30c1\u30fc\u30e0\u304c\u901a\u8a71\u9332\u97f3\u3092\u8074\u304d\u3001\u30aa\u30da\u30ec\u30fc\u30bf\u30fc\u306e\u5bfe\u5fdc\u54c1\u8cea\u3092\u8a55\u4fa1\u3059\u308b\u306e\u3067\u3059\u304c\u3001\u7269\u7406\u7684\u306b\u5168\u4ef6\u30c1\u30a7\u30c3\u30af\u306f\u4e0d\u53ef\u80fd\u3067\u3057\u305f\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u30d3\u30b8\u30cd\u30b9\u4e0a\u306e\u5236\u7d04<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u901a\u8a71\u4ef6\u6570: <strong>\u7d04600\u4ef6\/\u65e5<\/strong>\uff08\u5e74\u959315\u4e07\u4ef6\u8d85\uff09<\/li>\n<li>QA\u30c1\u30fc\u30e0: <strong>2\u540d<\/strong><\/li>\n<li>1\u4ef6\u3042\u305f\u308a\u306e\u5e73\u5747\u901a\u8a71\u6642\u9593: <strong>8\u5206<\/strong><\/li>\n<li>1\u4ef6\u306e\u30c1\u30a7\u30c3\u30af\u306b\u5fc5\u8981\u306a\u6642\u9593: \u901a\u8a71\u518d\u751f + \u8a55\u4fa1\u8a18\u5165\u3067<strong>\u7d0415\u5206<\/strong><\/li>\n<\/ul>\n\n\n\n<p>2\u540d \u00d7 8\u6642\u9593 = 16\u6642\u9593\/\u65e5\u3067\u300115\u5206\/\u4ef6\u3060\u3068<strong>64\u4ef6\/\u65e5\u304c\u9650\u754c<\/strong>\u3002600\u4ef6\u4e2d64\u4ef6 = <strong>\u30c1\u30a7\u30c3\u30af\u7387\u308f\u305a\u304b10%<\/strong>\u3002\u6b8b\u308a\u306e90%\u306f\u30ce\u30fc\u30c1\u30a7\u30c3\u30af\u3067\u6d41\u308c\u3066\u3044\u307e\u3057\u305f\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u8ee2\u6a5f: Zoom Phone\u306e\u5c0e\u5165<\/h3>\n\n\n\n<p>ClassLab\u306e\u30b3\u30fc\u30eb\u30bb\u30f3\u30bf\u30fc\u306fZoom Phone\u3092\u4f7f\u7528\u3057\u3066\u304a\u308a\u3001\u901a\u8a71\u9332\u97f3\u304c\u30af\u30e9\u30a6\u30c9\u306b\u81ea\u52d5\u4fdd\u5b58\u3055\u308c\u307e\u3059\u3002\u300c\u9332\u97f3\u30c7\u30fc\u30bf\u304cAPI\u3067\u53d6\u5f97\u3067\u304d\u308b\u306a\u3089\u3001\u5168\u4ef6\u81ea\u52d5\u3067\u6587\u5b57\u8d77\u3053\u3057\u3067\u304d\u308b\u306e\u3067\u306f\uff1f\u300d\u2014\u2014\u3053\u308c\u304c\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u51fa\u767a\u70b9\u3067\u3057\u305f\u3002<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">2. \u8ab2\u984c \u2014 \u6587\u5b57\u8d77\u3053\u3057\u81ea\u52d5\u5316\u306e4\u3064\u306e\u58c1<\/h2>\n\n\n\n<figure class=\"wp-block-table is-style-stripes\"><table>\n<thead><tr><th>#<\/th><th>\u8ab2\u984c<\/th><th>\u5f71\u97ff\u5ea6<\/th><th>\u6280\u8853\u7684\u306a\u58c1<\/th><\/tr><\/thead>\n<tbody><tr><td>1<\/td><td>\u65e5\u672c\u8a9e\u97f3\u58f0\u8a8d\u8b58\u306e\u7cbe\u5ea6<\/td><td>\u9ad8<\/td><td>\u30b3\u30fc\u30eb\u30bb\u30f3\u30bf\u30fc\u7279\u6709\u306e\u696d\u754c\u7528\u8a9e\u30fb\u7565\u8a9e\u304c\u591a\u3044<\/td><\/tr><tr><td>2<\/td><td>\u901a\u8a71\u6642\u9593\u306e\u9577\u3055<\/td><td>\u4e2d<\/td><td>1\u901a\u8a71\u5e73\u57478\u5206\u3001\u6700\u957720\u5206\u8d85\u3002API\u306e\u5165\u529b\u4e0a\u9650<\/td><\/tr><tr><td>3<\/td><td>\u30ea\u30a2\u30eb\u30bf\u30a4\u30e0\u6027\u306e\u8981\u6c42<\/td><td>\u4e2d<\/td><td>\u901a\u8a71\u7d42\u4e86\u5f8c30\u5206\u4ee5\u5185\u306b\u30c6\u30ad\u30b9\u30c8\u304c\u898b\u305f\u3044<\/td><\/tr><tr><td>4<\/td><td>\u30b3\u30b9\u30c8<\/td><td>\u4e2d<\/td><td>600\u4ef6\/\u65e5\u3092\u5168\u4ef6\u51e6\u7406\u3059\u308bAPI\u8cbb\u7528<\/td><\/tr><\/tbody>\n<\/table><\/figure>\n\n\n\n<p>\u7279\u306b\u8ab2\u984c2\u304c\u5b9f\u88c5\u4e0a\u306e\u6700\u5927\u306e\u30cf\u30fc\u30c9\u30eb\u3067\u3057\u305f\u3002gpt-4o-transcribe\u306eAPI\u306f1\u30ea\u30af\u30a8\u30b9\u30c8\u3042\u305f\u308a\u306e\u97f3\u58f0\u30d5\u30a1\u30a4\u30eb\u30b5\u30a4\u30ba\u306b\u5236\u9650\u304c\u3042\u308b\u305f\u3081\u3001\u9577\u3044\u901a\u8a71\u3092\u5206\u5272\u3057\u3066\u9001\u4fe1\u3059\u308b\u4ed5\u7d44\u307f\u304c\u5fc5\u8981\u3067\u3059\u3002<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">3. \u8a2d\u8a08 \u2014 Cloud Run + gpt-4o-transcribe \u30d1\u30a4\u30d7\u30e9\u30a4\u30f3<\/h2>\n\n\n\n<pre class=\"mermaid\">\ngraph TD\n    ZOOM[Zoom Phone<br\/>\u901a\u8a71\u7d42\u4e86] -->|Webhook| SERVICE[Cloud Run Service<br\/>HTTP \u30c8\u30ea\u30ac\u30fc]\n    SERVICE -->|\u975e\u540c\u671f| JOB[Cloud Run Job<br\/>\u6587\u5b57\u8d77\u3053\u3057\u5b9f\u884c]\n    JOB --> DL[Zoom API<br\/>\u9332\u97f3\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9]\n    DL --> SPLIT[pydub<br\/>\u7121\u97f3\u533a\u9593\u3067\u5206\u5272]\n    SPLIT --> API[gpt-4o-transcribe<br\/>\u30c1\u30e3\u30f3\u30af\u5225\u306b\u6587\u5b57\u8d77\u3053\u3057]\n    API --> MERGE[\u30c6\u30ad\u30b9\u30c8\u7d50\u5408]\n    MERGE --> SF[Salesforce<br\/>\u30bf\u30b9\u30af\u306b\u7d10\u4ed8\u3051\u4fdd\u5b58]\n\n    style SERVICE fill:#3b82f6,color:#fff\n    style JOB fill:#8b5cf6,color:#fff\n    style API fill:#10b981,color:#fff\n    style SF fill:#f59e0b,color:#fff\n<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">\u306a\u305c gpt-4o-transcribe \u3092\u9078\u3093\u3060\u304b<\/h3>\n\n\n\n<figure class=\"wp-block-table is-style-stripes\"><table>\n<thead><tr><th>\u5019\u88dc<\/th><th>\u65e5\u672c\u8a9e\u7cbe\u5ea6<\/th><th>\u30b3\u30b9\u30c8<\/th><th>\u5c0e\u5165\u30b3\u30b9\u30c8<\/th><th>\u9078\u5b9a<\/th><\/tr><\/thead>\n<tbody><tr><td>Google Speech-to-Text<\/td><td>\u9ad8<\/td><td>\u5f93\u91cf\u8ab2\u91d1\uff08\u9ad8\uff09<\/td><td>\u4e2d<\/td><td>\u00d7 \u30b3\u30b9\u30c8<\/td><\/tr><tr><td>AWS Transcribe<\/td><td>\u4e2d\u301c\u9ad8<\/td><td>\u5f93\u91cf\u8ab2\u91d1\uff08\u4e2d\uff09<\/td><td>\u4e2d<\/td><td>\u00d7 \u7cbe\u5ea6<\/td><\/tr><tr><td>Whisper large-v3 (self-hosted)<\/td><td>\u9ad8<\/td><td>GPU\u56fa\u5b9a\u8cbb<\/td><td>\u9ad8\uff08\u30a4\u30f3\u30d5\u30e9\u69cb\u7bc9\uff09<\/td><td>\u00d7 \u904b\u7528\u30b3\u30b9\u30c8<\/td><\/tr><tr><td>**gpt-4o-transcribe (OpenAI API)**<\/td><td>**\u9ad8**<\/td><td>**\u5f93\u91cf\u8ab2\u91d1\uff08\u4f4e\uff09**<\/td><td>**\u4f4e\uff08API\u547c\u51fa\u306e\u307f\uff09**<\/td><td>**\u63a1\u7528**<\/td><\/tr><\/tbody>\n<\/table><\/figure>\n\n\n\n<p>\u6c7a\u3081\u624b\u306f<strong>\u5c0e\u5165\u30b3\u30b9\u30c8\u306e\u4f4e\u3055<\/strong>\u3067\u3059\u3002\u30bb\u30eb\u30d5\u30db\u30b9\u30c8\u306eWhisper\u3082\u691c\u8a0e\u3057\u307e\u3057\u305f\u304c\u3001GPU\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u306e\u904b\u7528\u30fb\u30b9\u30b1\u30fc\u30ea\u30f3\u30b0\u306e\u5de5\u6570\u3092\u8003\u3048\u308b\u3068\u30012\u540d\u306e\u30a8\u30f3\u30b8\u30cb\u30a2\u30c1\u30fc\u30e0\u3067\u306fAPI\u65b9\u5f0f\u304c\u73fe\u5b9f\u7684\u3067\u3057\u305f\u3002\u7cbe\u5ea6\u9762\u3067\u3082gpt-4o-transcribe\u306fWhisper large-v3\u3068\u540c\u7b49\u4ee5\u4e0a\uff08\u793e\u5185\u30c6\u30b9\u30c8\u3067WER 11.8%\uff09\u3067\u3001\u30b3\u30fc\u30eb\u30bb\u30f3\u30bf\u30fc\u97f3\u58f0\u3068\u306e\u76f8\u6027\u304c\u826f\u597d\u3067\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u97f3\u58f0\u5206\u5272\u306e\u8a2d\u8a08<\/h3>\n\n\n\n<p>1\u901a\u8a71\u304c\u9577\u3044\u5834\u5408\u3001pydub\u306e<code>split_on_silence<\/code>\u3067\u7121\u97f3\u533a\u9593\u3092\u691c\u51fa\u3057\u3066\u5206\u5272\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"language-python\">from pydub import AudioSegment\nfrom pydub.silence import split_on_silence\n\ndef split_audio(audio_content: bytes) -&gt; list[bytes]:\n    \"\"\"\u7121\u97f3\u533a\u9593\u3067\u97f3\u58f0\u3092\u5206\u5272\u3057\u3001API\u306e\u5165\u529b\u4e0a\u9650\u5185\u306b\u53ce\u3081\u308b\"\"\"\n    audio = AudioSegment.from_file(io.BytesIO(audio_content))\n    chunks = split_on_silence(\n        audio,\n        min_silence_len=700,   # 700ms\u4ee5\u4e0a\u306e\u7121\u97f3\u3067\u5206\u5272\n        silence_thresh=-40,     # -40dBFS\u4ee5\u4e0b\u3092\u7121\u97f3\u3068\u307f\u306a\u3059\n        keep_silence=300,       # \u5206\u5272\u5f8c\u3082\u524d\u5f8c300ms\u306e\u7121\u97f3\u3092\u6b8b\u3059\n    )\n    return [chunk.export(format=\"wav\").read() for chunk in chunks]<\/code><\/pre>\n\n\n\n<p>\u5206\u5272\u5f8c\u306e\u5404\u30c1\u30e3\u30f3\u30af\u3092gpt-4o-transcribe\u306b\u9001\u4fe1\u3057\u3001\u7d50\u679c\u3092\u6642\u7cfb\u5217\u9806\u306b\u7d50\u5408\u3057\u3066\u30d5\u30eb\u30c6\u30ad\u30b9\u30c8\u3092\u751f\u6210\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Cloud Run \u306e2\u5c64\u69cb\u6210<\/h3>\n\n\n\n<p><strong>Cloud Run Service\uff08HTTP\u30c8\u30ea\u30ac\u30fc\uff09<\/strong>: Zoom Phone\u304b\u3089\u306ewebhook\u3092\u53d7\u4fe1\u3057\u3001Cloud Run Job\u3092\u975e\u540c\u671f\u8d77\u52d5\u3002\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u53d7\u3051\u305f\u3089\u5373\u5ea7\u306b\u30ec\u30b9\u30dd\u30f3\u30b9\u3092\u8fd4\u3059\uff08webhook \u306e\u30bf\u30a4\u30e0\u30a2\u30a6\u30c8\u56de\u907f\uff09\u3002<\/p>\n\n\n\n<p><strong>Cloud Run Job\uff08\u30d0\u30c3\u30c1\u51e6\u7406\uff09<\/strong>: \u5b9f\u969b\u306e\u9332\u97f3\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u30fb\u5206\u5272\u30fb\u6587\u5b57\u8d77\u3053\u3057\u30fb\u4fdd\u5b58\u3092\u5b9f\u884c\u30021\u901a\u8a71\u3042\u305f\u308a30\u79d2\u301c2\u5206\u3067\u5b8c\u4e86\u3002\u5931\u6557\u6642\u306fCloud Run\u306e\u81ea\u52d5\u30ea\u30c8\u30e9\u30a4\u6a5f\u80fd\u3067\u6700\u59273\u56de\u518d\u5b9f\u884c\u3002<\/p>\n\n\n\n<pre class=\"mermaid\">\ngraph LR\n    WH[Webhook\u53d7\u4fe1<br\/>\u5373\u5ea7\u306b200\u8fd4\u5374] -->|\u975e\u540c\u671f\u8d77\u52d5| JOB[Cloud Run Job]\n    JOB -->|\u6210\u529f| SF[Salesforce\u4fdd\u5b58]\n    JOB -->|\u5931\u6557| RETRY[\u81ea\u52d5\u30ea\u30c8\u30e9\u30a4<br\/>\u6700\u59273\u56de]\n    RETRY -->|3\u56de\u5931\u6557| ALERT[Slack\u30a2\u30e9\u30fc\u30c8]\n\n    style WH fill:#3b82f6,color:#fff\n    style JOB fill:#8b5cf6,color:#fff\n    style ALERT fill:#ef4444,color:#fff\n<\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">4. \u5b9f\u88c5 \u2014 2\u540d\u30676\u9031\u9593<\/h2>\n\n\n\n<p>\u3053\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306f\u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u30a8\u30f3\u30b8\u30cb\u30a21\u540d\uff08\u30d1\u30a4\u30d7\u30e9\u30a4\u30f3\u69cb\u7bc9\uff09\u3068Salesforce\u30a8\u30f3\u30b8\u30cb\u30a21\u540d\uff08\u30c7\u30fc\u30bf\u30e2\u30c7\u30eb\u30fbUI\uff09\u306e2\u540d\u4f53\u5236\u3067\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Phase 1: \u30d7\u30ed\u30c8\u30bf\u30a4\u30d7\uff082\u9031\u9593\uff09<\/h3>\n\n\n\n<p>Zoom API\u304b\u3089\u306e\u9332\u97f3\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9 \u2192 gpt-4o-transcribe \u2192 \u30b3\u30f3\u30bd\u30fc\u30eb\u51fa\u529b\u3068\u3044\u3046\u6700\u5c0f\u69cb\u6210\u3092\u69cb\u7bc9\u3002\u3053\u306e\u6bb5\u968e\u3067\u7cbe\u5ea6\u691c\u8a3c\u3092\u5b9f\u65bd\u3057\u3001<strong>QA\u30c1\u30fc\u30e0\u306e\u624b\u52d5\u8a55\u4fa1\u3068\u306e\u4e00\u81f4\u738782%<\/strong>\u3092\u78ba\u8a8d\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Phase 2: Cloud Run \u30d1\u30a4\u30d7\u30e9\u30a4\u30f3\u69cb\u7bc9\uff082\u9031\u9593\uff09<\/h3>\n\n\n\n<p>Cloud Run Service + Job \u306e2\u5c64\u69cb\u6210\u3092\u69cb\u7bc9\u3002pydub\u306e\u7121\u97f3\u5206\u5272\u3092\u8ffd\u52a0\u3057\u3001\u9577\u6642\u9593\u901a\u8a71\u306b\u5bfe\u5fdc\u3002Salesforce\u306e\u30bf\u30b9\u30af\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306b\u30c6\u30ad\u30b9\u30c8\u3092\u4fdd\u5b58\u3057\u3001\u65e2\u5b58\u306eQA\u30ef\u30fc\u30af\u30d5\u30ed\u30fc\u306b\u7d71\u5408\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Phase 3: QA\u30c0\u30c3\u30b7\u30e5\u30dc\u30fc\u30c9\u7d71\u5408\uff082\u9031\u9593\uff09<\/h3>\n\n\n\n<p>Salesforce\u306e\u30ec\u30dd\u30fc\u30c8\u30fb\u30c0\u30c3\u30b7\u30e5\u30dc\u30fc\u30c9\u3092\u6d3b\u7528\u3057\u3001\u6587\u5b57\u8d77\u3053\u3057\u30c6\u30ad\u30b9\u30c8\u306e\u5168\u6587\u691c\u7d22\u3001\u30ad\u30fc\u30ef\u30fc\u30c9\u30a2\u30e9\u30fc\u30c8\uff08\u300c\u30af\u30ec\u30fc\u30e0\u300d\u300c\u89e3\u7d04\u300d\u300c\u4e0a\u53f8\u300d\u7b49\u306e\u51fa\u73fe\u6642\u306b\u81ea\u52d5\u30d5\u30e9\u30b0\uff09\u30011\u65e5\u306e\u30b5\u30de\u30ea\u30fc\u8868\u793a\u3092\u5b9f\u88c5\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u5931\u6557: \u6700\u521d\u306e\u5206\u5272\u30d1\u30e9\u30e1\u30fc\u30bf<\/h3>\n\n\n\n<p>\u6700\u5927\u306e\u5931\u6557\u306f\u3001\u7121\u97f3\u691c\u51fa\u306e\u30d1\u30e9\u30e1\u30fc\u30bf\u8abf\u6574\u3067\u3059\u3002\u6700\u521d\u306f<code>min_silence_len=500<\/code>\uff08500ms\uff09\u3067\u5206\u5272\u3057\u305f\u3068\u3053\u308d\u3001\u4f1a\u8a71\u4e2d\u306e\u77ed\u3044\u9593\uff08\u76f8\u69cc\u306e\u9593\u306a\u3069\uff09\u3067\u3082\u5206\u5272\u3055\u308c\u3066\u3057\u307e\u3044\u30011\u901a\u8a71\u304c30\u4ee5\u4e0a\u306e\u30c1\u30e3\u30f3\u30af\u306b\u5206\u304b\u308c\u307e\u3057\u305f\u3002API\u547c\u3073\u51fa\u3057\u56de\u6570\u304c\u7206\u767a\u3057\u3001\u30b3\u30b9\u30c8\u304c\u60f3\u5b9a\u306e3\u500d\u306b\u3002<\/p>\n\n\n\n<p><code>min_silence_len=700<\/code>\u306b\u8abf\u6574\u3057\u3001\u3055\u3089\u306b\u30c1\u30e3\u30f3\u30af\u306e\u6700\u5927\u9577\u309220\u5206\u306b\u5236\u9650\u3059\u308b\u30ed\u30b8\u30c3\u30af\u3092\u8ffd\u52a0\u3002\u30b3\u30b9\u30c8\u306f\u60f3\u5b9a\u7bc4\u56f2\u5185\u306b\u53ce\u307e\u308a\u307e\u3057\u305f\u3002<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">5. \u7d50\u679c \u2014 QA\u30ec\u30d3\u30e5\u30fc\u5de5\u657080%\u524a\u6e1b<\/h2>\n\n\n\n<p>3\u30f6\u6708\u9593\u306e\u904b\u7528\u30c7\u30fc\u30bf\u3067\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-table is-style-stripes\"><table>\n<thead><tr><th>\u6307\u6a19<\/th><th>Before<\/th><th>After<\/th><th>\u6539\u5584\u7387<\/th><\/tr><\/thead>\n<tbody><tr><td>QA\u30c1\u30a7\u30c3\u30af\u5bfe\u8c61<\/td><td>64\u4ef6\/\u65e5\uff08\u30b5\u30f3\u30d7\u30ea\u30f3\u30b0\uff09<\/td><td>\u5168600\u4ef6\/\u65e5\uff08\u5168\u4ef6\u30c6\u30ad\u30b9\u30c8\u5316\uff09<\/td><td>**\u5168\u4ef6\u30ab\u30d0\u30fc**<\/td><\/tr><tr><td>1\u4ef6\u3042\u305f\u308a\u30ec\u30d3\u30e5\u30fc\u6642\u9593<\/td><td>15\u5206\uff08\u5168\u7de8\u518d\u751f\uff09<\/td><td>3\u5206\uff08\u30c6\u30ad\u30b9\u30c8\u691c\u7d22+\u8981\u6240\u306e\u307f\u518d\u751f\uff09<\/td><td>**-80%**<\/td><\/tr><tr><td>QA\u62c5\u5f53\u80051\u4eba\u3042\u305f\u308a\u4f5c\u696d\u6642\u9593\/\u65e5<\/td><td>8\u6642\u9593<\/td><td>1.5\u6642\u9593<\/td><td>**-81%**<\/td><\/tr><tr><td>\u30ad\u30fc\u30ef\u30fc\u30c9\u30a2\u30e9\u30fc\u30c8\u691c\u51fa<\/td><td>\u306a\u3057<\/td><td>\u5e73\u574712\u4ef6\/\u65e5\uff08\u8981\u6ce8\u610f\u901a\u8a71\u306e\u81ea\u52d5\u30d5\u30e9\u30b0\uff09<\/td><td>**\u65b0\u6a5f\u80fd**<\/td><\/tr><tr><td>\u6587\u5b57\u8d77\u3053\u3057\u5b8c\u4e86\u307e\u3067\u306e\u6642\u9593<\/td><td>\u2014<\/td><td>\u901a\u8a71\u7d42\u4e86\u5f8c \u5e73\u57473\u5206<\/td><td>**\u307b\u307c\u30ea\u30a2\u30eb\u30bf\u30a4\u30e0**<\/td><\/tr><\/tbody>\n<\/table><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">\u306a\u305c\u300c\u8074\u304f\u300d\u304b\u3089\u300c\u8aad\u3080\u300d\u306780%\u524a\u6e1b\u3067\u304d\u305f\u304b<\/h3>\n\n\n\n<p>\u5f93\u6765\u306eQA\u30ec\u30d3\u30e5\u30fc\u306f<strong>\u901a\u8a71\u3092\u6700\u521d\u304b\u3089\u6700\u5f8c\u307e\u3067\u518d\u751f<\/strong>\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3057\u305f\u30028\u5206\u306e\u901a\u8a71\u306a\u30898\u5206\u304b\u304b\u308b\u3002\u65e9\u9001\u308a\u3057\u3066\u3082\u5185\u5bb9\u3092\u628a\u63e1\u3059\u308b\u306e\u306b5\u5206\u306f\u304b\u304b\u308b\u3002<\/p>\n\n\n\n<p>\u6587\u5b57\u8d77\u3053\u3057\u5f8c\u306f\u3001<strong>\u30c6\u30ad\u30b9\u30c8\u3092\u76ee\u3067\u8ffd\u3063\u3066\u554f\u984c\u7b87\u6240\u3060\u3051\u97f3\u58f0\u3067\u78ba\u8a8d<\/strong>\u3059\u308b\u904b\u7528\u306b\u5909\u308f\u308a\u307e\u3057\u305f\u3002\u30ad\u30fc\u30ef\u30fc\u30c9\u30a2\u30e9\u30fc\u30c8\u304c\u4ed8\u3044\u305f\u901a\u8a71\u3092\u512a\u5148\u7684\u306b\u30ec\u30d3\u30e5\u30fc\u3057\u3001\u30c6\u30ad\u30b9\u30c8\u4e0a\u3067\u30cd\u30ac\u30c6\u30a3\u30d6\u30ef\u30fc\u30c9\u5468\u8fba\u306e\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u3092\u78ba\u8a8d\u3002\u97f3\u58f0\u518d\u751f\u306f\u300c\u672c\u5f53\u306b\u554f\u984c\u304c\u3042\u308b\u7b87\u6240\u300d\u3060\u3051\u3002\u3053\u308c\u30671\u4ef63\u5206\u306b\u77ed\u7e2e\u3067\u304d\u307e\u3057\u305f\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u30b3\u30b9\u30c8<\/h3>\n\n\n\n<figure class=\"wp-block-table is-style-stripes\"><table>\n<thead><tr><th>\u9805\u76ee<\/th><th>\u6708\u984d<\/th><\/tr><\/thead>\n<tbody><tr><td>OpenAI API\uff08gpt-4o-transcribe, \u6708\u7d045,000\u4ef6 \u00d7 \u5e73\u57478\u5206\uff09<\/td><td>\u7d048\u4e07\u5186<\/td><\/tr><tr><td>Cloud Run\uff08Service + Job\uff09<\/td><td>\u7d041.5\u4e07\u5186<\/td><\/tr><tr><td>\u5408\u8a08<\/td><td>**\u7d049.5\u4e07\u5186**<\/td><\/tr><\/tbody>\n<\/table><\/figure>\n\n\n\n<p>QA\u62c5\u5f53\u80052\u540d\u306e\u4f5c\u696d\u6642\u9593\u309281%\u524a\u6e1b\u3002\u7a7a\u3044\u305f\u6642\u9593\u3092\u30aa\u30da\u30ec\u30fc\u30bf\u30fc\u500b\u5225\u30d5\u30a3\u30fc\u30c9\u30d0\u30c3\u30af\u3084\u7814\u4fee\u6539\u5584\u306b\u5145\u3066\u3066\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">6. \u5c55\u671b \u2014 \u6b21\u306b\u53d6\u308a\u7d44\u3080\u3053\u3068<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">\u611f\u60c5\u5206\u6790\u306e\u8ffd\u52a0<\/h3>\n\n\n\n<p>\u73fe\u5728\u306f\u6587\u5b57\u8d77\u3053\u3057\u30c6\u30ad\u30b9\u30c8\u306e\u30ad\u30fc\u30ef\u30fc\u30c9\u691c\u7d22\u3067\u30d5\u30e9\u30b0\u4ed8\u3051\u3057\u3066\u3044\u307e\u3059\u304c\u3001\u4eca\u5f8c\u306f\u30c6\u30ad\u30b9\u30c8\u306b\u611f\u60c5\u5206\u6790\u3092\u7d44\u307f\u5408\u308f\u305b\u3001<strong>\u30cd\u30ac\u30c6\u30a3\u30d6\u611f\u60c5\u306e\u901a\u8a71\u3092\u81ea\u52d5\u691c\u51fa<\/strong>\u3059\u308b\u4ed5\u7d44\u307f\u3092\u691c\u8a0e\u3057\u3066\u3044\u307e\u3059\u3002\u6587\u5b57\u8d77\u3053\u3057\u57fa\u76e4\u304c\u6574\u3063\u305f\u3053\u3068\u3067\u3001\u3053\u306e\u4e0a\u306b\u5206\u6790\u30ec\u30a4\u30e4\u30fc\u3092\u8f09\u305b\u308b\u571f\u53f0\u304c\u3067\u304d\u307e\u3057\u305f\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u8a71\u8005\u5206\u96e2<\/h3>\n\n\n\n<p>\u73fe\u5728\u306f\u901a\u8a71\u5168\u4f53\u30921\u3064\u306e\u30c6\u30ad\u30b9\u30c8\u3068\u3057\u3066\u51fa\u529b\u3057\u3066\u3044\u307e\u3059\u304c\u3001\u30aa\u30da\u30ec\u30fc\u30bf\u30fc\u3068\u9867\u5ba2\u306e\u767a\u8a71\u3092\u5206\u96e2\u3067\u304d\u308c\u3070\u3001\u300c\u9867\u5ba2\u304c\u30cd\u30ac\u30c6\u30a3\u30d6\u30ef\u30fc\u30c9\u3092\u767a\u3057\u305f\u7b87\u6240\u300d\u3068\u300c\u30aa\u30da\u30ec\u30fc\u30bf\u30fc\u306e\u5bfe\u5fdc\u54c1\u8cea\u300d\u3092\u500b\u5225\u306b\u8a55\u4fa1\u3067\u304d\u307e\u3059\u3002pyannote.audio\u7b49\u306e\u8a71\u8005\u5206\u96e2\u6280\u8853\u306e\u5c0e\u5165\u3092\u691c\u8a0e\u4e2d\u3067\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u30ea\u30a2\u30eb\u30bf\u30a4\u30e0\u6587\u5b57\u8d77\u3053\u3057<\/h3>\n\n\n\n<p>\u73fe\u5728\u306f\u901a\u8a71\u7d42\u4e86\u5f8c\u306e\u30d0\u30c3\u30c1\u51e6\u7406\u3067\u3059\u304c\u3001\u901a\u8a71\u4e2d\u306b\u30ea\u30a2\u30eb\u30bf\u30a4\u30e0\u3067\u6587\u5b57\u8d77\u3053\u3057\u3057\u3001SV\u306b\u5373\u6642\u8868\u793a\u3059\u308b\u4ed5\u7d44\u307f\u3082\u69cb\u60f3\u3057\u3066\u3044\u307e\u3059\u3002\u305f\u3060\u3057\u30b9\u30c8\u30ea\u30fc\u30df\u30f3\u30b0\u51e6\u7406\u306e\u7cbe\u5ea6\u3068\u30ec\u30a4\u30c6\u30f3\u30b7\u306e\u30c8\u30ec\u30fc\u30c9\u30aa\u30d5\u304c\u3042\u308b\u305f\u3081\u3001\u4e2d\u671f\u76ee\u6a19\u3068\u3057\u3066\u4f4d\u7f6e\u3065\u3051\u3066\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>\u300c\u97f3\u58f0\u30c7\u30fc\u30bf\u3092\u30c6\u30ad\u30b9\u30c8\u5316\u3059\u308b\u300d\u3060\u3051\u3067\u3001QA\u696d\u52d9\u306e\u5728\u308a\u65b9\u304c\u6839\u672c\u7684\u306b\u5909\u308f\u308a\u307e\u3057\u305f\u3002\u6280\u8853\u7684\u306b\u306f\u67af\u308c\u305fAPI\u3092\u547c\u3076\u3060\u3051\u306e\u30b7\u30f3\u30d7\u30eb\u306a\u69cb\u6210\u3067\u3059\u304c\u3001<strong>\u696d\u52d9\u30a4\u30f3\u30d1\u30af\u30c8\u306f\u5927\u304d\u3044<\/strong>\u3002\u30b7\u30f3\u30d7\u30eb\u306a\u6280\u8853\u3067\u5927\u304d\u306a\u4fa1\u5024\u3092\u51fa\u3059\u2014\u2014ClassLab\u306e\u958b\u767a\u30b9\u30bf\u30a4\u30eb\u304c\u3088\u304f\u8868\u308c\u305f\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067\u3057\u305f\u3002<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u63a1\u7528\u60c5\u5831<\/h2>\n\n\n\n<p>ClassLab \u3067\u306f\u4e00\u7dd2\u306b\u6280\u8853\u7684\u6311\u6226\u306b\u53d6\u308a\u7d44\u3080\u30a8\u30f3\u30b8\u30cb\u30a2\u3092\u52df\u96c6\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/findy-code.io\/companies\/994\" target=\"_blank\" rel=\"noopener noreferrer\">Findy\u3067\u30a8\u30f3\u30b8\u30cb\u30a2\u6c42\u4eba\u3092\u898b\u308b<\/a><\/li>\n<li><a href=\"https:\/\/classlab.co.jp\/engineer\/entry\/\">\u30ab\u30b8\u30e5\u30a2\u30eb\u9762\u8ac7\u3092\u7533\u3057\u8fbc\u3080<\/a><\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">\u95a2\u9023\u8a18\u4e8b<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/classlab.co.jp\/engineer\/blog\/ai-dev-productivity\/\">AI\u99c6\u52d5\u958b\u767a\u306e\u751f\u7523\u6027\u3092\u8a08\u6e2c\u3059\u308b\u65b9\u6cd5\uff5cClaude Code Hooks API\u3067\u53ef\u8996\u5316<\/a><\/li>\n<li><a href=\"https:\/\/classlab.co.jp\/engineer\/blog\/ai-driven-dev-team\/\">Claude Code\u5168\u54e1\u5c0e\u5165\u3067\u30ec\u30d3\u30e5\u30fc\u6642\u959374%\u77ed\u7e2e\u3057\u305f\u8a71<\/a><\/li>\n<\/ul>\n\n\n\n<script type=\"module\">\n  import mermaid from 'https:\/\/cdn.jsdelivr.net\/npm\/mermaid@11\/dist\/mermaid.esm.min.mjs';\n  mermaid.initialize({ startOnLoad: true, theme: 'neutral' });\n<\/script>\n","protected":false},"excerpt":{"rendered":"<p>ClassLab Engineering \u306e Dev \u30c1\u30fc\u30e0\u30e1\u30f3\u30d0\u30fc\u304c\u57f7\u7b46\u3057\u307e\u3057\u305f\u3002 \u30b3\u30fc\u30eb\u30bb\u30f3\u30bf\u30fc\u306eQA\uff08\u54c1\u8cea\u7ba1\u7406\uff09\u3067\u3001\u3053\u3093\u306a\u8ab2\u984c\u3092\u62b1\u3048\u3066\u3044\u307e\u305b\u3093\u304b\uff1f \u901a\u8a71\u9332\u97f3\u30921\u4ef6\u305a\u3064\u4eba\u304c\u8074\u3044\u3066\u54c1\u8cea\u30c1\u30a7\u30c3\u30af\u3057\u3066\u3044\u308b \u5168\u901a\u8a71\u306e10%\u3057 [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"swell_btn_cv_data":"","footnotes":""},"categories":[25],"tags":[22,23,24,21,20],"class_list":["post-83","post","type-post","status-publish","format-standard","hentry","category-tech-article","tag-nlp","tag-python","tag-whisper","tag-21","tag-20"],"_links":{"self":[{"href":"https:\/\/classlab.co.jp\/engineer\/blog\/wp-json\/wp\/v2\/posts\/83","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/classlab.co.jp\/engineer\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/classlab.co.jp\/engineer\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/classlab.co.jp\/engineer\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/classlab.co.jp\/engineer\/blog\/wp-json\/wp\/v2\/comments?post=83"}],"version-history":[{"count":4,"href":"https:\/\/classlab.co.jp\/engineer\/blog\/wp-json\/wp\/v2\/posts\/83\/revisions"}],"predecessor-version":[{"id":101,"href":"https:\/\/classlab.co.jp\/engineer\/blog\/wp-json\/wp\/v2\/posts\/83\/revisions\/101"}],"wp:attachment":[{"href":"https:\/\/classlab.co.jp\/engineer\/blog\/wp-json\/wp\/v2\/media?parent=83"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/classlab.co.jp\/engineer\/blog\/wp-json\/wp\/v2\/categories?post=83"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/classlab.co.jp\/engineer\/blog\/wp-json\/wp\/v2\/tags?post=83"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}